public void ShouldFindDateTime_In_PrivateClassWithDateTimeNow() { //Arrange DateTimeChecker dateTimeChecker = new DateTimeChecker(); Type classType = typeof(PrivateClassWrapper); string methodToTest = "System.Void PrivateClassWithDateTime::PrivateMethod()"; //Act IEnumerable <string> methodNames = dateTimeChecker.MethodsContainingDateTimeInAssemblyOfType(classType); //Assert Assert.That(methodNames.Where(w => w == methodToTest), Is.Not.Empty); }
public void ShouldFindDateTime_In_ClassWithDateTime_Now() { //Arrange DateTimeChecker dateTimeChecker = new DateTimeChecker(); Type classType = typeof(ClassWithDateTime); string methodToTest = "System.Void ExampleClass.ClassWithDateTime::MethodWithDateTimeNow()"; String methodName = classType.GetMethods() .Single(w => w.Name.Contains(methodToTest)).Name; //Act IEnumerable <string> methodNames = dateTimeChecker.MethodsContainingDateTimeInAssemblyOfType(classType); //Assert Assert.That(methodNames.Where(w => w == methodName), Is.Not.Empty); }
internal static bool CommunicateOrderTmp(string userId, int QID, int OID, string seletedDateTimeStatus, string selecteddateTime, string channelAccessToken) { OrderTemp orderTmp = new OrderTemp(userId); DateTime dateTime = Convert.ToDateTime(selecteddateTime); bool BothTimeHasFilledIn = false; string message = ""; if (DateTimeChecker.DateTimeCheckIsEarlierThanNow(dateTime)) { message = "不要選擇過時的時間哦~"; } else { switch (seletedDateTimeStatus) { case "start": //先判斷有沒有比暫存結束時間晚 if (!DateTimeChecker.CompareIsLaterThanEndTime(dateTime, orderTmp)) { orderTmp.StartTime = dateTime; orderTmp.UpdateStartTime(); BothTimeHasFilledIn = orderTmp.CheckBothTimeHasFilledIn(orderTmp); if (!BothTimeHasFilledIn) { message = $"訂單發出時間: {dateTime.ToString("yyyy-MM-dd HH:mm")}"; } else { isRock.LineBot.Utility.PushMessage(userId, $"訂單發出時間: {dateTime.ToString("yyyy-MM-dd HH:mm")}", channelAccessToken); message = "選擇時間完畢!"; } } else { message = "開始時間無法比結束時間晚哦~"; } break; case "end": //先判斷有沒有比暫存結束時間晚 if (!DateTimeChecker.CompareIsEarlierThanStartTime(dateTime, orderTmp)) { orderTmp.EndTime = dateTime; orderTmp.UpdateEndTime(); BothTimeHasFilledIn = orderTmp.CheckBothTimeHasFilledIn(orderTmp); if (!BothTimeHasFilledIn) { message = $"訂單結束時間: {dateTime.ToString("yyyy-MM-dd HH:mm")}"; } else { isRock.LineBot.Utility.PushMessage(userId, $"訂單結束時間: {dateTime.ToString("yyyy-MM-dd HH:mm")}", channelAccessToken); message = "選擇時間完畢!"; } } else { message = "開始時間無法比結束時間晚哦~"; } break; default: break; } } isRock.LineBot.Utility.PushMessage(userId, message, channelAccessToken); return(BothTimeHasFilledIn); }
internal static bool CommunicatePeriodOrderTmpForDate(string userId, int QID, int OID, string seletedDateTimeStatus, string selecteddateTime, string channelAccessToken) { PeriodOrderTmp periodOrderTmp = new PeriodOrderTmp(userId); DateTime dateTime = Convert.ToDateTime(selecteddateTime); bool BothTimeHasFilledIn = false; string message = ""; if (DateTimeChecker.DateTimeCheckIsEarlierThanNowForPeriod(dateTime)) { message = "不要選擇過時的時間哦~"; } else { switch (seletedDateTimeStatus) { case "start": //先判斷有沒有比暫存結束時間晚 if (!DateTimeChecker.DateTimeCompareIsLaterThanEndTime(dateTime, periodOrderTmp)) { periodOrderTmp.StartDate = dateTime; periodOrderTmp.UpdateStartDate(); BothTimeHasFilledIn = periodOrderTmp.CheckBothDateHasFilledIn(periodOrderTmp); if (!BothTimeHasFilledIn) { message = $"週期開始日期: {dateTime.ToShortDateString()}"; } else { isRock.LineBot.Utility.PushMessage(userId, $"週期開始日期: {dateTime.ToShortDateString()}", channelAccessToken); message = "選擇時間完畢!"; } } else { message = "開始時間無法比結束時間晚~"; } break; case "end": //先判斷有沒有比暫存結束時間晚 if (!DateTimeChecker.DateTimeCompareIsEarlierThanStartTime(dateTime, periodOrderTmp)) { periodOrderTmp.EndDate = dateTime; periodOrderTmp.UpdateEndDate(); BothTimeHasFilledIn = periodOrderTmp.CheckBothDateHasFilledIn(periodOrderTmp); if (!BothTimeHasFilledIn) { message = $"週期結束日期: {dateTime.ToShortDateString()}"; } else { isRock.LineBot.Utility.PushMessage(userId, $"週期結束日期: {dateTime.ToShortDateString()}", channelAccessToken); message = "選擇時間完畢!"; } } else { message = "開始時間無法比結束時間晚哦~"; } break; default: break; } } isRock.LineBot.Utility.PushMessage(userId, message, channelAccessToken); return(BothTimeHasFilledIn); }
internal static string MyPeriodOrderCommunicate(string userId, int QID, int OID, string OrderName, string channelAccessToken) { PeriodOrderTmp periodOrderTmp = new PeriodOrderTmp(userId); periodOrderTmp.SelectAllByUserID(); OrderInfo orderinfo = new OrderInfo(); //準備輸入SQL switch (QID) //根據QID不同初始化clubOrderAndMyOrder { case 211: orderinfo = new OrderInfo(userId, OrderName); break; default: break; } //切割週期時間 DateTime st1 = periodOrderTmp.StartDate.Add(periodOrderTmp.StartTime); //第一次開單時間點 DateTime et1 = periodOrderTmp.EndDate.Add(periodOrderTmp.StartTime); //最後一次開單時間點 DateTime st2 = periodOrderTmp.StartDate.Add(periodOrderTmp.EndTime); //第一次收單時間點 DateTime et2 = periodOrderTmp.EndDate.Add(periodOrderTmp.EndTime); //最後一次收單時間點 if (DateTimeChecker.DateTimeCheckIsEarlierThanNow(st1)) //週期單開始時間點若是比現在時間點早則往後一天 { st1 = st1.AddDays(1); st2 = st2.AddDays(1); } List <string> weekList = new List <string>(); if (periodOrderTmp.Monday == "Y") { weekList.Add("Monday"); } if (periodOrderTmp.Tuesday == "Y") { weekList.Add("Tuesday"); } if (periodOrderTmp.Wednesday == "Y") { weekList.Add("Wednesday"); } if (periodOrderTmp.Thursday == "Y") { weekList.Add("Thursday"); } if (periodOrderTmp.Friday == "Y") { weekList.Add("Friday"); } if (periodOrderTmp.Saturday == "Y") { weekList.Add("Saturday"); } if (periodOrderTmp.Sunday == "Y") { weekList.Add("Sunday"); } List <DateTime> dateTimes = PeriodSplitter.Cut(st1, et1, weekList); //得到每次的開單時間點 List <DateTime> dateTimes2 = PeriodSplitter.Cut(st2, et2, weekList); //得到每次的收單時間點 // orderinfo.OrderType = "Period"; orderinfo.OrderStatus = "wait"; //開始撈取使用者選擇的複數商店 ShopListTemp shopListTemp = new ShopListTemp(userId); List <ShopListTemp> shopListTemps = shopListTemp.SelectByUserID(); //選取的商店清單 List <ShopListTemp> randomshopListTemps = new List <ShopListTemp>(); //準備一個要裝進符合選取天數的清單 //將randomshopListTemps打亂 while (randomshopListTemps.Count <= dateTimes.Count) { for (int i = 0; i < shopListTemps.Count; i++) { Swap(shopListTemps); } for (int i = 0; i < shopListTemps.Count; i++) { randomshopListTemps.Add(shopListTemps[i]); } } // int result = 0; int count = 0; //用來檢查迴圈有沒有跑完 string OrderID; switch (QID) { case 211: OrderID = orderinfo.OrderID; for (int i = 0; i < dateTimes.Count; i++) { orderinfo.StartTime = dateTimes[i]; orderinfo.EndTime = dateTimes2[i]; orderinfo.ShopID = randomshopListTemps[i].ShopID; orderinfo.OrderPartitionID = "MOP" + OrderID + $"-{ dateTimes[i].ToString("yyyyMMdd")}"; result = orderinfo.InserMyOrderTableToSQL(); if (result <= 0) { break; } count++; } break; default: break; } if (count == dateTimes.Count) { UserStatus userStatus = new UserStatus(userId); userStatus.InitializeUserStatusByUserID(); periodOrderTmp = new PeriodOrderTmp(userId); periodOrderTmp.UpdateInitialPeriodOrderTmp(); orderinfo.InsertOrdeUserTable(); shopListTemp.DeleteByUserID(); isRock.LineBot.Utility.PushMessage(userId, orderinfo.OrderID, channelAccessToken); // string orderCreateMessage = "上面是你的訂單參加碼,可以將此參加碼分享給其他人,讓其他人加入你的訂單喔~"; // isRock.LineBot.Utility.PushMessage(userId, orderCreateMessage, channelAccessToken); return("訂單建立成功喔~~\n上面是你的訂單參加碼,可以將此參加碼分享給其他人,讓其他人加入你的訂單喔~"); } else { return("訂單建立失敗"); } }
internal static bool CommunicatePeriodOrderTmpTime(string userId, int QID, int OID, string seletedDateTimeStatus, string selecteddateTime, string channelAccessToken) { PeriodOrderTmp periodOrderTmp = new PeriodOrderTmp(userId); TimeSpan dateTime = TimeSpan.Parse(selecteddateTime); bool BothTimeHasFilledIn = false; string message = ""; switch (seletedDateTimeStatus) { case "start": //先判斷有沒有比暫存結束時間晚 if (!DateTimeChecker.TimeCompareIsLaterThanEndTime(dateTime, periodOrderTmp)) { periodOrderTmp.StartTime = dateTime; periodOrderTmp.UpdateStartTime(); BothTimeHasFilledIn = periodOrderTmp.CheckBothTimeHasFilledIn(periodOrderTmp); if (!BothTimeHasFilledIn) { message = $"每次開單時間: {dateTime.ToString(@"hh\:mm")}"; } else { isRock.LineBot.Utility.PushMessage(userId, $"每次開單時間: {dateTime.ToString(@"hh\:mm")}", channelAccessToken); message = "選擇時間完畢!"; } } else { message = "開始時間無法比結束時間晚~"; } break; case "end": //先判斷有沒有比暫存結束時間晚 if (!DateTimeChecker.TimeCompareIsEarlierThanStartTime(dateTime, periodOrderTmp)) { periodOrderTmp.EndTime = dateTime; periodOrderTmp.UpdateEndTime(); BothTimeHasFilledIn = periodOrderTmp.CheckBothTimeHasFilledIn(periodOrderTmp); if (!BothTimeHasFilledIn) { message = $"每次結單時間: {dateTime.ToString(@"hh\:mm")}"; } else { isRock.LineBot.Utility.PushMessage(userId, $"每次結單時間: {dateTime.ToString(@"hh\:mm")}", channelAccessToken); message = "選擇時間完畢!"; } } else { message = "開單時間無法比結單時間晚哦~"; } break; default: break; } isRock.LineBot.Utility.PushMessage(userId, message, channelAccessToken); return(BothTimeHasFilledIn); }