public bool IsDateAvailable(DateTime start, DateTime end) { if (!AvailableDates.Any(date => date.StartDate <= start && date.EndDate >= end)) { return(false); } foreach (var contract in Contracts) { if (start > contract.CheckIn && start < contract.CheckOut) { return(false); } if (end > contract.CheckIn && end < contract.CheckOut) { return(false); } if (start < contract.CheckIn && end > contract.CheckOut) { return(false); } } return(true); }
public async Task <DateTime> CreateNewSnapshotAsync(WGApiClient client) { var stats = client.GetPlayerTankStatsAsync(ID); var marks = client.GetPlayerMarksAsync(ID); await Task.WhenAll(stats, marks); var marksDict = marks.Result.ToDictionary(m => m.TankID, m => m.Mark); Func <int, int> tryGetMark = id => { if (marksDict.TryGetValue(id, out int mark)) { return(mark); } return(0); }; var newSnapshot = stats.Result.Select(s => new TankStatistics(s.TankID, s.Stats, tryGetMark(s.TankID))); DateTime now = DateTime.Now; if (false == AvailableDates.Any() || CreateIntermediateSnapshot(Load(AvailableDates.Max()), newSnapshot).Any()) { await SaveAsync(newSnapshot, now); return(now); } return(DateTime.MinValue); }
public ShellViewModel(DatabaseService databaseService) { ProgramDetailsRequest = new InteractionRequest <INotification>(); ReservationListRequest = new InteractionRequest <INotification>(); SelectedDate = new ReactiveProperty <string>(); SelectedDate.Where(w => !string.IsNullOrWhiteSpace(w)).ObserveOn(TaskPoolScheduler.Default).Subscribe(w => UpdateChannels()); SearchQuery = new ReactiveProperty <string>(); IsSearchMode = new ReactiveProperty <bool>(); RunQueryCommand = SearchQuery.Select(w => IsSearchMode.Value || !string.IsNullOrWhiteSpace(w)).ToReactiveCommand(); RunQueryCommand.Subscribe(w => { Application.Current.Dispatcher.Invoke(() => IsLoading = true); _searchTable.Query(SearchQuery.Value); GC.Collect(); IsLoading = false; IsSearchMode.Value = true; }); ClearQueryCommand = IsSearchMode.ToReactiveCommand(); ClearQueryCommand.Subscribe(w => { SearchQuery.Value = ""; IsSearchMode.Value = false; }); _disposables = new List <IDisposable>(); _dayTable = new DayTable(databaseService); _searchTable = new SearchTable(databaseService); AvailableDates = _dayTable.AvailableDates.ToReadOnlyReactiveCollection(w => w.ToString("d")); AvailableDates.ToObservable().Subscribe(w => SelectedDate.Value = AvailableDates.First()); Channels = _dayTable.ChannelTable .ToReadOnlyReactiveCollection(w => new ChannelCellViewModel(w.Date, w.Channel, w.Slots).AddTo(_disposables)); SearchSlots = _searchTable.ResultSlots .ToReadOnlyReactiveCollection(w => new EpisodeCellViewModel(new WrapSlot(w, DateTime.MinValue))) .AddTo(this); }
public void Then_The_Start_And_End_Window_Is_Set_To_Three_Months() { //Act var actual = new AvailableDates(DateTime.UtcNow); //Assert Assert.IsTrue(actual.Dates.All(c => (c.EndDate.Year - c.StartDate.Year) * 12 + c.EndDate.Month - c.StartDate.Month == 2)); }
public void And_Today_Is_Same_As_Start_And_One_Month_Expiry() { //Act var actual = new AvailableDates(DateTime.UtcNow, minStartDate: DateTime.UtcNow, expiryPeriodInMonths: 1); //Assert Assert.AreEqual(1, actual.Dates.Count); }
public void Then_Only_A_Maximum_Of_Twelve_Available_Dates_Will_Be_Returned() { //Act var actual = new AvailableDates(DateTime.UtcNow, 20); //Actual Assert.AreEqual(12, actual.Dates.Count); }
public void And_Today_Is_Same_As_Start_And_End_Date() { //Act var actual = new AvailableDates(DateTime.UtcNow, minStartDate: DateTime.UtcNow, maxStartDate: DateTime.UtcNow); //Assert Assert.AreEqual(1, actual.Dates.Count); }
public void Then_If_The_Min_Date_Is_Set_The_First_Month_Starts_From_There() { //Act var actual = new AvailableDates(DateTime.UtcNow, minStartDate: _expectedMinStartDate); //Assert Assert.AreEqual(_expectedMinStartDate.ToString("MMyyyy"), actual.Dates.First().StartDate.ToString("MMyyyy")); }
public void Then_The_Dates_Are_Set_To_The_First_Of_The_Month_And_The_EndDate_To_The_Last() { //Act var actual = new AvailableDates(DateTime.UtcNow); //Assert Assert.IsTrue(actual.Dates.All(c => c.StartDate.Day.Equals(1))); Assert.IsTrue(actual.Dates.All(c => c.EndDate.Day.Equals(DateTime.DaysInMonth(c.EndDate.Year, c.EndDate.Month)))); }
public void Then_If_The_Max_Date_Is_Set_The_Available_Date_Does_Not_Exceed_This_Value_From_The_Configurable_Number_Of_Months() { //Act var actual = new AvailableDates(DateTime.UtcNow, maxStartDate: _expectedMaxStartDate); //Assert Assert.AreEqual(4, actual.Dates.Count); Assert.AreEqual(DateTime.UtcNow.ToString("MMyyyy"), actual.Dates.First().StartDate.ToString("MMyyyy")); Assert.AreEqual(_expectedMaxStartDate.ToString("MMyyyy"), actual.Dates.Last().StartDate.ToString("MMyyyy")); }
public void Then_The_Available_Dates_Are_Returned_Based_On_The_Configurable_Months_Allowed() { //Act var actual = new AvailableDates(DateTime.UtcNow, ExpectedExpiryPeriod); //Assert Assert.AreEqual(ExpectedExpiryPeriod, actual.Dates.Count); Assert.AreEqual(DateTime.UtcNow.ToString("MMyyyy"), actual.Dates.First().StartDate.ToString("MMyyyy")); Assert.AreEqual(DateTime.UtcNow.AddMonths(ExpectedExpiryPeriod - 1).ToString("MMyyyy"), actual.Dates.Last().StartDate.ToString("MMyyyy")); Assert.AreEqual(DateTime.UtcNow.AddMonths(2).ToString("MMyyyy"), actual.Dates.First().EndDate.ToString("MMyyyy")); }
public void Then_If_No_Values_Have_Been_Supplied_Then_The_Default_Of_Six_Months_Are_Shown_From_Today() { //Arrange const int expiryDefault = 6; //Act var actual = new AvailableDates(DateTime.UtcNow); //Assert Assert.AreEqual(expiryDefault, actual.Dates.Count); Assert.AreEqual(DateTime.UtcNow.ToString("MMyyyy"), actual.Dates.First().StartDate.ToString("MMyyyy")); Assert.AreEqual(DateTime.UtcNow.AddMonths(expiryDefault - 1).ToString("MMyyyy"), actual.Dates.Last().StartDate.ToString("MMyyyy")); }
public IActionResult AddAvailableDates(IFormCollection formCollection) { var availableDates = new AvailableDates { ApartmentId = int.Parse(formCollection["ApartmentId"].Single()), StartDate = DateTime.Parse(formCollection["StartDate"].Single()), EndDate = DateTime.Parse(formCollection["EndDate"].Single()) }; IAvailableDate dates = Mapper.Map <IAvailableDate>(availableDates); Repository.AvailableDates.Add(dates); Repository.Save(); return(RedirectToAction("Index", "Home")); }
public void Then_Uses_AvailableDates( [Frozen] Mock <ICurrentDateTime> currentDateTime, Mock <IOptions <ReservationsConfiguration> > mockOptions) { currentDateTime.Setup(x => x.GetDate()).Returns(DateTime.UtcNow); var config = mockOptions.Object.Value; var expectedDates = new AvailableDates( DateTime.UtcNow, config.NumberOfAvailableDates, config.AvailableDatesMinDate, config.AvailableDatesMaxDate) .Dates; var availableDatesService = new AvailableDatesService(mockOptions.Object, currentDateTime.Object); //Act var actualDates = availableDatesService.GetAvailableDates(); //Assert actualDates.Should().BeEquivalentTo(expectedDates); }
public string AvailableDoctorSessionsProjects(AG_LIVESESSIONEXCEL liveSession) { DataSet ds = LiveDoctors.AvailableDoctorSessionsProjects(liveSession); if (ds.Tables.Count > 0) { if (ds.Tables[0].Rows.Count > 0) { StringBuilder sb = new StringBuilder(); List <AG_LIVESESSIONEXCEL> aG_LIVESESSIONEXCELAvailablelst = new List <AG_LIVESESSIONEXCEL>(); AG_LIVESESSIONEXCEL aG = null; foreach (DataRow dr in ds.Tables[0].Rows) { aG = new AG_LIVESESSIONEXCEL(); aG.APP_LIVESESSION_NO = dr["APP_LIVESESSION_NO"].ToString(); aG.APP_TERM = dr["APP_TERM"].ToString(); aG.APP_DAY = dr["APP_DAY"].ToString(); aG.APP_SESSION_NUMBER = dr["APP_SESSION_NUMBER"].ToString(); aG.APP_SESSION_TIME = dr["APP_SESSION_TIME"].ToString(); aG.STUDIO_NUMBER = dr["STUDIO_NUMBER"].ToString(); aG.FACULTY_NAME = dr["FACULTY_NAME"].ToString(); aG.GENERAL_MAJOR = dr["GENERAL_MAJOR"].ToString(); aG.SPECIFIC_MAJOR = dr["SPECIFIC_MAJOR"].ToString(); aG.STUDY_LEVEL = dr["STUDY_LEVEL"].ToString(); aG.COURSE_NUMBER = dr["COURSE_NUMBER"].ToString(); aG.FIRST_SEMESTER_CRN_MALE = dr["FIRST_SEMESTER_CRN_MALE"].ToString(); aG.FIRST_SEMESTER_CRN_FEMALE = dr["FIRST_SEMESTER_CRN_FEMALE"].ToString(); aG.SECOND_SEMESTER_CRN_MALE = dr["SECOND_SEMESTER_CRN_MALE"].ToString(); aG.SECOND_SEMESTER_CRN_FEMALE = dr["SECOND_SEMESTER_CRN_FEMALE"].ToString(); aG.FEMALE_COURSE_COLLAB_LINK = dr["FEMALE_COURSE_COLLAB_LINK"].ToString(); aG.MALE_COURSE_COLLAB_LINK = dr["MALE_COURSE_COLLAB_LINK"].ToString(); aG.COURSE_NAME = dr["COURSE_NAME"].ToString(); aG.STAFF_NAME = dr["STAFF_NAME"].ToString(); aG.EMAIL = dr["EMAIL"].ToString(); aG.MOBILE = dr["MOBILE"].ToString(); aG.STAFF_NUMBER = dr["STAFF_NUMBER"].ToString(); aG.EXAMDAY_PERIOD = dr["EXAMDAY_PERIOD"].ToString(); aG.APP_DATE = dr["APP_DATE"].ToString();// Convert.ToDateTime(dr["APP_DATE"]); aG.TeachType = dr["TEACHTYPE"].ToString(); aG.GroupType = (GroupDataType)Enum.Parse(typeof(GroupDataType), dr["GROUPTYPE"].ToString(), true); aG.SessionType = (SessionType)Enum.Parse(typeof(SessionType), dr["SESSIONTYPE"].ToString(), true); aG_LIVESESSIONEXCELAvailablelst.Add(aG); } sb.Append("<table class='table table-bordered table-hover' style='border-collapse: collapse!important;width: 100%;text-align: center;'>"); sb.Append("<tr>" + "<td>الأستوديو</td> "); sb.Append("<td> التاريخ</td>"); sb.Append("<td> الفترة</td>" + " <td>الوقت</td> </tr>"); var days = (from i in aG_LIVESESSIONEXCELAvailablelst select i.APP_DAY).Distinct(); string color = "background-color:white"; string[] colors = { "aliceblue", "antiquewhite", "honeydew", "azure", "lemonchiffon", "lavenderblush", "aliceblue" }; int counter = 0; foreach (AG_LIVESESSIONEXCEL d in aG_LIVESESSIONEXCELAvailablelst.OrderBy(x => Convert.ToDateTime(x.APP_DATE))) { color = colors[Convert.ToInt32(d.APP_DAY) - 1]; sb.Append("<td style='background-color:" + color + "'>" + d.STUDIO_NUMBER + "</td>"); sb.Append("<td style='background-color:" + color + "' >" + "<button id='button" + counter + "' style='font-weight:bold;font-size:16px;' class='btn btn-minier btn-warning' " + "onclick='edit(" + counter + ")' ' " + Data(d) + "'><i class='ace-icon fa fa-pencil-square-o bigger-110'></i> <span class='bigger-110 no-text-shadow'>" + string.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(d.APP_DATE)) + " - " + Utilities.DayEn_AR(Convert.ToDateTime(d.APP_DATE).DayOfWeek.ToString()) + "</span></button>" + "</td>"); string session = ""; switch (Convert.ToInt32(d.APP_SESSION_NUMBER.Replace("session", ""))) { case 1: case 2: session = "الفترة الأولي"; break; case 3: case 4: session = "الفترة الثانية"; break; case 5: case 6: session = "الفترة الثالثة"; break; } sb.Append("<td style='background-color:" + color + "' >" + session + "</td>"); sb.Append("<td style='background-color:" + color + "'>" + d.APP_SESSION_TIME + "</td>"); sb.Append("</tr>"); counter++; } sb.Append("</table>"); DataSet dsLiveStart = LiveDoctors.LiveSessionStart(liveSession); DateTime firstDate = (from i in aG_LIVESESSIONEXCELAvailablelst select Convert.ToDateTime(i.APP_DATE)).Distinct().OrderBy(x => x).FirstOrDefault(); if (dsLiveStart.Tables.Count > 0) { if (dsLiveStart.Tables[0].Rows.Count > 0) { foreach (DataRow dr in dsLiveStart.Tables[0].Rows) { firstDate = Convert.ToDateTime(dr["LIVE_START"]); } } } bool within_3Days = false; if (DateTime.Compare(firstDate.AddDays(3), DateTime.Now) <= 0) //Less than zero t1 is earlier than t2. { within_3Days = false; } else { within_3Days = true;//true } AvailableDates availableDates = new AvailableDates(); availableDates.within_3Days = within_3Days; availableDates.availableDatesTable = sb.ToString(); availableDates.changeSessionType = ChangeSessionType.SingleChange; string jsonString; jsonString = JsonConvert.SerializeObject(availableDates); return(jsonString); } } return(""); }
public int GetSelectedDateIndex(string selectedDate) { return(AvailableDates != null?AvailableDates.ToList().IndexOf(selectedDate) : 0); }
/// <summary> /// MappingResponse /// </summary> /// <param name="response"></param> /// <param name="availableDates"></param> private static void MappingResponse(MonthlyStatementDateResponse response, AvailableDates availableDates) { response.StartDate = availableDates.StartDate; response.EndDate = availableDates.EndDate; }