Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
        }
Пример #15
0
        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("");
        }
Пример #16
0
 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;
 }