-2
工作在顧問預約系統。網上預訂了許多專門的預約,但沒有指定訪問時間,而是持續時間。然而,顧問將在週六和週日訪問顧客,時間爲上午9點至下午1點至晚上2點至下午5點。安排犯罪案件午餐後
在線特別請求將指定原因和持續時間。我需要編寫代碼,調度這些請求,從而顧問可以登錄並看到計劃的項目,並將其發送給客戶
的問題是,如果我發現,超過午餐的任何請求期間, 我需要忽略在循環中檢查下一個請求,持續時間小於 。我不知道如何跳過暫時和處理下一個 時間(中午後的時間表)。
約翰離婚問題60分鐘
庫馬爾土地問題100分鐘
討論與拉姆60分鐘
犯罪案件45min
就地安置15分鐘
在下面的代碼中,我需要跳過犯罪案件,因爲它超過午餐ti我和時間表當地解決。 我還需要安排午餐後的犯罪案件。我怎樣才能做到這一點?
public class OnlineRequest
{
public string Reason { get; set; }
public short Duration { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
public static string LUNCH_TIME = "1:00 P.M";
public static string END_OF_DAY = "6:00 P.M";
public static Dictionary<String, List<String>>
GetSchedules(List<OnlineRequest> requests)
{
List<string> schedules = new List<string>();
DateTime visitStartTime = DateTime.MinValue.Date.AddHours(9);
int day = 1;
List<String> eventTimeStr = new List<String>();
Dictionary<String, List<String>> consultantData
= new Dictionary<String, List<String>>();
//Here is the problem
DateTime eventTime = visitStartTime;
foreach (OnlineRequest req in requests)
{
req.StartTime = eventTime;
string flag = getTimeDiff(req);
if (flag.Equals(LUNCH_TIME))
{
eventTimeStr.Add(flag + ": LUNCH");
eventTime = eventTime.AddMinutes(60);
}
else if (flag.Equals(END_OF_DAY))
{
eventTimeStr.Add(flag + ": GO HOME EOD");
consultantData.Add(("Day_" + day), eventTimeStr);
eventTimeStr = new List<String>();
eventTime = visitStartTime;
++day;
}
else
{
eventTimeStr.Add(eventTime.ToString("h:mm tt") + ": " + req.Reason);
eventTime = req.EndTime;
}
}
consultantData.Add(("Day_" + day), eventTimeStr);
return consultantData;
}
private static String getTimeDiff(OnlineRequest req)
{
DateTime startEventTime = req.StartTime;
DateTime finishEventTime = req.StartTime.AddMinutes(req.Duration);
DateTime visitEndTime = DateTime.MinValue.Date.AddHours(17);
DateTime visitLunchStartTime = DateTime.MinValue.Date.AddHours(12);
if (finishEventTime.CompareTo(visitLunchStartTime) == 0 &&
startEventTime.CompareTo(visitLunchStartTime) > 0)
{
return LUNCH_TIME;
}
else if (startEventTime.CompareTo(visitLunchStartTime) == 0 &&
finishEventTime.CompareTo(visitLunchStartTime) > 0)
{
return LUNCH_TIME;
}
else if (startEventTime.CompareTo(visitLunchStartTime) < 0 &&
finishEventTime.CompareTo(visitLunchStartTime) > 0)
{
return LUNCH_TIME;
}
if (visitEndTime.CompareTo(finishEventTime) < 0)
{
return END_OF_DAY;
}
req.EndTime = finishEventTime;
return "";
}
把更多自己的工作到這一點。 [你有什麼嘗試?](http://whathaveyoutried.com) – djechlin