public ScheduleChangedEventArgs(
     WeekSchedule updatedWeekSchedule,
     IOrderedEnumerable <ScheduleDiff> diff)
 {
     UpdatedWeekSchedule = updatedWeekSchedule;
     Diff = diff.ToList();
 }
Ejemplo n.º 2
0
        public void Edit_ShouldReturnCorrectJsonWhenModelInvalid()
        {
            var mapperStub = new Mock <IMapper>();
            var weekScheduleServiceStub       = new Mock <IWeekScheduleService>();
            var workoutInformationServiceStub = new Mock <IWorkoutInformationService>();
            var modelViewFactoryStub          = new Mock <IModelViewFactory>();
            var dailyWorkoutServiceStub       = new Mock <IDailyWorkoutService>();

            var sut = new ScheduleController(mapperStub.Object, weekScheduleServiceStub.Object, workoutInformationServiceStub.Object, dailyWorkoutServiceStub.Object, modelViewFactoryStub.Object);

            var dailyWorkout = new DailyWorkoutViewModel();

            dailyWorkout.Name       = "awesomeness";
            dailyWorkout.ScheduleId = new Guid();

            var wodInfo      = new WorkoutInformation();
            var wodDataModel = new DailyWorkout();
            var schedule     = new WeekSchedule();


            workoutInformationServiceStub.Setup(x => x.GetByName(It.IsAny <string>())).Returns(wodInfo);
            mapperStub.Setup(x => x.Map <DailyWorkout>(It.IsAny <DailyWorkoutViewModel>())).Returns(wodDataModel);
            dailyWorkoutServiceStub.Setup(x => x.AddAllDailyWorkouts(It.IsAny <DailyWorkout>(), It.IsAny <DailyWorkout>(), It.IsAny <DailyWorkout>()));
            weekScheduleServiceStub.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(schedule);
            weekScheduleServiceStub.Setup(x => x.AddDailiesToSchedule(It.IsAny <WeekSchedule>(), It.IsAny <DailyWorkout>(), It.IsAny <DailyWorkout>(), It.IsAny <DailyWorkout>()));

            sut
            .WithModelErrors()
            .WithCallTo(c => c.Edit(dailyWorkout))
            .ShouldReturnJson();
        }
        public async Task <bool> HandleChange(IReadOnlyList <ScheduleDiff> schedule, WeekSchedule updatedWeekSchedule)
        {
            if (schedule == null || !schedule.Any())
            {
                return(true);
            }

            try
            {
                ScheduleDiff[] orderedSchedule = schedule.OrderBy(x => x.Start).ThenBy(x => x.Status).ToArray();
                var            subject         = "Werkrooster voor week " + updatedWeekSchedule.WeekNumber;
                var            schedulePlain   = EmailContentBuilder.ScheduleToPlainTextString(orderedSchedule);
                var            scheduleHtml    = EmailContentBuilder.ScheduleToHtmlString(orderedSchedule);

                MailMessage mailMessage = CreateMailMessage(subject, schedulePlain, scheduleHtml);
                await _emailService.Send(mailMessage);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Something went wrong sending an email with the schedule.");
                return(false);
            }

            return(true);
        }
Ejemplo n.º 4
0
 private void InitSubjectControl()
 {
     if (_displayedSchedule == null)
     {
         try
         {
             _displayedSchedule     = _timetableRepository.GetWeekByDate(DateTime.Now);
             _displayedDate         = DateTime.Now;
             Semesters.SelectedItem =
                 _allSemesters.First(
                     sem =>
                     sem.YearValue == _displayedDate.Year && sem.SemesterNumber == _displayedSchedule.SemesterNumber);
         }
         catch (ArgumentException)
         {
             _displayedSchedule = _timetableRepository.GetWeekByDate(_displayedSemester.StartDate);
             _displayedDate     = _displayedSemester.StartDate;
         }
     }
     else
     {
         _displayedSchedule = _timetableRepository.GetWeekByDate(_displayedSemester.StartDate);
         _displayedDate     = _displayedSemester.StartDate;
     }
     SubjectControl.DayClickHandler = SubjSelectionChanged;
     SubjectControl.LoadSchedule(_displayedSchedule);
     RefreshWeekStats();
 }
Ejemplo n.º 5
0
        /// <summary>
        ///     Blackout Days in the Test Time Picker
        /// </summary>
        /// <param name="schedule"></param>
        private void SetSelectableDates(WeekSchedule schedule)
        {
            try
            {
                testTimeDatePicker.DisplayDateStart = DateTime.Now.AddDays(-1);
                testTimeDatePicker.DisplayDateEnd   = DateTime.Now.AddMonths(2);
                testTimeDatePicker.BlackoutDates.Clear();

                //Blackout all the dates in the past and in more that 2 month
                testTimeDatePicker.BlackoutDates.AddDatesInPast();
                testTimeDatePicker.BlackoutDates.Add(
                    new CalendarDateRange(DateTime.Now.AddMonths(2), DateTime.MaxValue));

                var date = DateTime.Now;

                //make an arr with days that the tester is available on
                var weekSchedule = new[] { false, false, false, false, false, false, false };
                foreach (var day in schedule.Days)
                {
                    if (day.Hours.Any(x => x))
                    {
                        weekSchedule[(int)day.TheDay] = true;
                    }
                }

                var dateNow = DateTime.Today;
                var hourNmu = new[]
                { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };

                //add the days of the 2 month in the calendar
                for (var i = 0; i < 64; i++)
                {
                    //the day need to be blacked out
                    if (!weekSchedule[(int)date.DayOfWeek] || hourNmu
                        .Where(z => _tester.Schedule[date.DayOfWeek].Hours[z]).All(x =>
                                                                                   FactoryBl.GetObject.AllTests.Any(y =>
                                                                                                                    y.TesterId == _tester.Id && y.TestTime.Year == date.Year &&
                                                                                                                    y.TestTime.DayOfYear == date.DayOfYear && y.TestTime.Hour == x)) ||
                        date.Year == DateTime.Now.Year && date.DayOfYear == DateTime.Now.DayOfYear &&
                        DateTime.Now.Hour > schedule[DateTime.Now.DayOfWeek].MaxHourWorking())
                    {
                        //if today is already selected then move the selection to tomorrow
                        if (date.DayOfYear == dateNow.DayOfYear)
                        {
                            dateNow = dateNow.AddDays(1);
                            testTimeDatePicker.SelectedDate = _test.TestTime.AddDays(1);
                        }

                        //Add the days
                        testTimeDatePicker.BlackoutDates.Add(new CalendarDateRange(date));
                    }

                    date = date.AddDays(1);
                }
            }
            catch
            {
                // ignored
            }
        }
Ejemplo n.º 6
0
 public ChristianLifeSchedule(ref string dataString, ref bool supervisor, ref string supervisorName, string president)
 {
     this.dataString = dataString;
     this.president  = president;
     findAssignment(ref assignment1OnlyVideo, ref assignment1Needs, ref assignment1Title, ref assignment1);
     if (findAssignment(ref assignment2OnlyVideo, ref assignment2Needs, ref assignment2Title, ref assignment2) == true)
     {
         BibleStudy = WeekSchedule.findName(ref dataString);
         if (BibleStudy == "Recapitulare, apoi o prezentare scurtă a următoarei întruniri")
         {
             BibleStudy     = null;
             supervisorName = WeekSchedule.findName(ref dataString);
             supervisor     = true;
         }
         else
         {
             BibleStudyReader = WeekSchedule.findName(ref dataString);
         }
     }
     else
     {
         supervisorName = WeekSchedule.findName(ref dataString);
         supervisor     = true;
     }
     dataString = this.dataString;
 }
        private static TimeRangeVector GetTimeRangeVector(IEnumerable <Slot> slots, WeekSchedule weekSchedule)
        {
            var trv = new TimeRangeVector();

            foreach (var slot in slots)
            {
                string start, end;
                if (slot.StartTime == string.Empty)
                {
                    start = string.Empty;
                }
                else
                {
                    start = DateTime.ParseExact(slot.StartTime, "HHmmss", CultureInfo.InvariantCulture)
                            .RoundDown(new TimeSpan(0, 15, 0)).ToString("HHHmmss");
                }
                if (slot.EndTime == string.Empty)
                {
                    end = string.Empty;
                }
                else
                {
                    end = DateTime.ParseExact(slot.EndTime, "HHmmss", CultureInfo.InvariantCulture)
                          .RoundDown(new TimeSpan(0, 15, 0)).ToString("HHmmss");
                }
                trv.Add(new TimeRange(start, end));
            }

            if (trv.Count == 0)
            {
                trv.Add(new TimeRange(string.Empty, string.Empty));
            }

            return(trv);
        }
        private void ShowEmptyScheduleError(WeekSchedule weekSchedule) //TODO Remove weekRoot?
        {
            if (weekSchedule is null)
            {
                throw new ArgumentNullException(nameof(weekSchedule));
            }

            ChangeViewContentInContainer(Resource.Id.relativelayout_week_schedule,
                                         Resource.Layout.layout_empty_schedule_error);

            var scheduleErrorTitleTextView =
                view.FindViewById <TextView>(Resource.Id.textview_empty_schedule_error_title);

            scheduleErrorTitleTextView.Text =
                GetString(Resource.String.empty_schedule_error_title_start) + " " +
                (weekTag == 0
                    ? GetString(Resource.String.empty_schedule_error_title_current)
                    : GetString(Resource.String.empty_schedule_error_title_next)) + " " +
                GetString(Resource.String.empty_schedule_error_title_end);

            var emptyScheduleErrorTextView = view.FindViewById <TextView>(Resource.Id.textview_empty_schedule_error);
            var wasUpdatedOn = GetString(Resource.String.updated) + " " +
                               weekSchedule.LastUpdated.ToString(CultureInfo.CurrentCulture);

            emptyScheduleErrorTextView.Text = wasUpdatedOn;

            var swipeToRefreshLayout =
                view.FindViewById <SwipeRefreshLayout>(Resource.Id.swipetorefresh_empty_schedule_error);

            swipeToRefreshLayout.SetOnRefreshListener(this);
        }
Ejemplo n.º 9
0
 private bool findAssignment(ref bool assignmentOnlyVideo,
                             ref bool assignmentNeeds, ref string assignmentTitle, ref string assignment)
 {
     assignmentTitle = WeekSchedule.findTheme(ref dataString);
     if (assignmentTitle == "Necesități locale")
     {
         assignmentNeeds = true;
     }
     else if (assignmentTitle == "Studiul Bibliei în congregație")
     {
         assignmentTitle = null;
         return(true);
     }
     else if (assignmentTitle == "Recapitulare, apoi o prezentare scurtă a următoarei întruniri")
     {
         assignmentTitle = null;
         return(false);
     }
     assignment = WeekSchedule.findName(ref dataString);
     if (assignment == president)
     {
         assignmentOnlyVideo = true;
     }
     return(true);
 }
Ejemplo n.º 10
0
        public async Task <IEnumerable <ScheduleDiff> > ProcessAsync(CancellationToken ct = default)
        {
            var indexPage = await _flexKidsClient.GetAvailableSchedulesPage(ct);

            IndexContent indexContent          = _parser.GetIndexContent(indexPage);
            var          weekSchedulesToImport = new List <WeekAndImportedSchedules>(indexContent.Weeks.Count);

            foreach (KeyValuePair <int, WeekItem> item in indexContent.Weeks)
            {
                var htmlComboboxIndex = item.Key;
                var year       = item.Value.Year;
                var weekNumber = item.Value.WeekNr;

                var htmlSchedule = await _flexKidsClient.GetSchedulePage(htmlComboboxIndex, ct);

                var parsedSchedules = _parser.GetScheduleFromContent(htmlSchedule, year).ToList();

                WeekSchedule weekSchedule = await _repo.Get(year, weekNumber);

                weekSchedulesToImport.Add(new WeekAndImportedSchedules
                {
                    WeekSchedule  = weekSchedule,
                    ScheduleItems = parsedSchedules,
                });
            }

            return(await ProcessRawData(weekSchedulesToImport));
        }
 private void AssertWeekSchedulesEquals(WeekSchedule actual, WeekSchedule expected)
 {
     Assert.IsNotNull(actual);
     Assert.AreEqual(expected.ScheduleByDay.Count, actual.ScheduleByDay.Count);
     AssertListsElementsAreEqual(
         actual.ScheduleByDay, expected.ScheduleByDay,
         p => p.Key,
         (a, e) =>
     {
         Assert.AreEqual(e.Key, a.Key);
         AssertListsElementsAreEqual(
             a.Value.ExerciseByLessonNumber, e.Value.ExerciseByLessonNumber,
             dp => dp.Key,
             (da, de) =>
         {
             Assert.AreEqual(de.Key, da.Key);
             AssertListsElementsAreEqual(
                 da.Value, de.Value,
                 e => e.Id,
                 (ae, ee) => AssertExercisesEquals(ae, ee)
                 );
         }
             );
     }
         );
 }
        private WeekSchedule CreateSchedule()
        {
            var lesson  = new Lesson();
            var lessons = new List <Lesson>()
            {
                lesson
            };
            var day = new Day()
            {
                Lessons = lessons
            };
            var week = new Week()
            {
                Date_Start = DateTime.Today.AddDays(-4),
                Date_End   = DateTime.Today.AddDays(3),
            };
            var schedule = new WeekSchedule()
            {
                Days = new List <Day>()
                {
                    day
                },
                Week = week
            };

            schedule.Week.Date_Start = DateTime.Today;
            schedule.Week.Date_End   = DateTime.Today;

            return(schedule);
        }
Ejemplo n.º 13
0
        public void GetAllDescending_ShouldReturnTwoWeekSchedulesInCorrectOrder()
        {
            var weekScheduleStub     = new Mock <IEfRepostory <WeekSchedule> >();
            var unitOfWorkStub       = new Mock <IUnitOfWork>();
            var datetimeProviderStub = new Mock <IDatetimeProvider>();

            var list = new List <WeekSchedule>();

            var weekScheduleOne = new WeekSchedule
            {
                WeekStart = new DateTime(2017, 10, 10)
            };

            var weekScheduleTwo = new WeekSchedule
            {
                WeekStart = new DateTime(2017, 11, 11)
            };

            list.Add(weekScheduleOne);
            list.Add(weekScheduleTwo);

            var dbSetStub = list.AsQueryable();

            var sut = new WeekScheduleService(weekScheduleStub.Object, unitOfWorkStub.Object, datetimeProviderStub.Object);

            weekScheduleStub.Setup(x => x.All).Returns(dbSetStub);

            var result = sut.GetAllDescending();

            Assert.AreEqual(2, result.Count);
            Assert.AreSame(weekScheduleTwo, result.First());
        }
Ejemplo n.º 14
0
        public void LoadSchedule(WeekSchedule weekSchedule)
        {
            Week.Children.Clear();
            WeekSchedule = weekSchedule;
            ListOfDays   = new List <Dictionary <int, SubjectScheduleItem> >();
            DayListBoxes = new ObservableCollection <ListBox>();

            foreach (Entities.DayOfWeek day in WeekSchedule.ScheduleDayColumns)
            {
                var dayList = new ListBox
                {
                    Margin        = new Thickness(5),
                    MinHeight     = 164,
                    Background    = Brushes.AliceBlue,
                    SelectionMode = SelectionMode.Single
                };
                Dictionary <int, SubjectScheduleItem> daySubjects = day.SubjectDayDict;
                if (day.SubjectDayDict.Keys.Count != 0)
                {
                    for (int i = 1; i <= daySubjects.Keys.Max(); i++)
                    {
                        if (!daySubjects.ContainsKey(i))
                        {
                            daySubjects.Add(i, null);
                        }
                    }
                }

                dayList.SelectionChanged += DayClick;
                if (DayClickHandler != null)
                {
                    dayList.SelectionChanged += DayClickHandler;
                }
                // Look of the listbox element
                dayList.ItemTemplate = (DataTemplate)FindResource("DayListTemplate");
                dayList.ItemsSource  = daySubjects;
                // Sorting by subject number
                dayList.Items.SortDescriptions.Add(new System.ComponentModel.SortDescription("Key",
                                                                                             System.ComponentModel.ListSortDirection.Ascending));

                // For displaying day name
                StackPanel dayWrapper = new StackPanel {
                    Orientation = Orientation.Vertical, Width = 139
                };
                Label dayNameLabel = new Label {
                    Content = day.DayName, HorizontalAlignment = HorizontalAlignment.Center
                };

                // Storing day name
                dayList.Tag = day.DayName;

                dayWrapper.Children.Add(dayNameLabel);
                dayWrapper.Children.Add(dayList);
                DayListBoxes.Add(dayList);

                ListOfDays.Add(daySubjects);
                Week.Children.Add(dayWrapper);
            }
        }
Ejemplo n.º 15
0
 public CalendarViewModel(IEventAggregator ea, IApplicationCommands applicationCommands)
 {
     Week         = new Week();
     WeekSchedule = new WeekSchedule();
     _ea          = ea;
     _ea.GetEvent <UpdateMenuEvent>().Subscribe(UpdateMenu_Handler);
     _applicationCommands = applicationCommands;
 }
Ejemplo n.º 16
0
 public TreasuresSchedule(ref string dataString)
 {
     WeekSchedule.findTheme(ref dataString);
     TreasuresTitle = WeekSchedule.findTheme(ref dataString);
     Treasures      = WeekSchedule.findName(ref dataString);
     Gems           = WeekSchedule.findName(ref dataString);
     Reading        = WeekSchedule.findName(ref dataString);
 }
Ejemplo n.º 17
0
        private async void LoadSchedule()
        {
            try
            {
                IsBusy = true;
                if (Stop.ID == null)
                {
                    Subtitle    = "No stop is selected.";
                    HasSchedule = false;
                }
                else
                {
                    Subtitle = null;
                    var retrievedSchedule = await DataSource.GetScheduleForStopAsync(Stop.ID, DataSourcePreference.All, TokenSource.Token);

                    if (retrievedSchedule.HasData)
                    {
                        Schedule = retrievedSchedule.Data;
                        DayGroups.Clear();
                        var groups = Schedule.GetScheduleGroups().ToArray();
                        foreach (var group in groups)
                        {
                            DayGroups.Add(new DayScheduleGroup(group));
                        }
                        //if (groups.Length > 0)
                        //    DayGroups.AddRange(groups);
                        HasSchedule = true;
                        var today       = DateTime.Today.DayOfWeek.ToServiceDay();
                        var todaysGroup = DayGroups.FirstOrDefault(dg => (dg.DayGroup & today) == today);
                        if (todaysGroup == null)
                        {
                            SelectedDayGroup = DayGroups[0];
                        }
                        else
                        {
                            SelectedDayGroup = todaysGroup;
                        }
                    }
                    //LoadSelectedSchedule();
                }
            }
            catch (OperationCanceledException)
            {
                Subtitle    = "Schedule retrieval was cancelled.";
                HasSchedule = false;
            }
            catch (Exception ex)
            {
                Subtitle    = "Error has occured: " + ex.Message;
                HasSchedule = false;
            }
            finally
            {
                IsBusy = false;
            }
        }
Ejemplo n.º 18
0
        public void AddWeekSchedule(WeekSchedule weekSchedule)
        {
            if (weekSchedule == null)
            {
                throw new ArgumentException("Week Schedule cannot be null");
            }

            this.weekScheduleRepo.Add(weekSchedule);
            this.unitOfWork.Commit();
        }
Ejemplo n.º 19
0
        private static List <YearSchedule> readYearCSV(string fp, List <DaySchedule> days)
        {
            var records = new List <YearSchedule>();

            using (var sr = new StreamReader(fp))
            {
                var csv = new CsvReader(sr);
                while (csv.Read())
                {
                    try
                    {
                        bool         foundAllSchedules = true;
                        YearSchedule record            = csv.GetRecord <YearSchedule>();
                        int          weekCnt           = csv.GetField <int>("Week Schedules Count");
                        int          weeksStartAt      = csv.GetFieldIndex("Week Schedules Count") + 1;

                        for (int i = weeksStartAt; i < weeksStartAt + weekCnt * 9; i += 9)
                        {
                            var weekSched = new WeekSchedule();

                            weekSched.From = csv.GetField <DateTime>(i);
                            weekSched.To   = csv.GetField <DateTime>(i + 1);
                            weekSched.Days = new DaySchedule[7];


                            for (int j = 0; j < 7; j++)
                            {
                                string weekDay = csv.GetField <string>(2 + i + j);

                                if (days.Any(x => x.Name == weekDay))
                                {
                                    weekSched.Days[j] = days.First(x => x.Name == weekDay);
                                }
                                else
                                {
                                    foundAllSchedules = false;
                                }
                            }
                            record.WeekSchedules.Add(weekSched);
                        }

                        if (foundAllSchedules)
                        {
                            records.Add(record);
                        }
                        else
                        {
                            System.Windows.MessageBox.Show(record.Name + " contains day schedules that are not found in library");
                        }
                    }
                    catch (Exception ex) { Debug.WriteLine(ex.Message); }
                }
            }
            return(records);
        }
        public List <WeekSchedule> FindWeeks()
        {
            var weeks = new List <WeekSchedule>();

            foreach (Match match in Regex.Matches(fileContent, "Săptămâna care începe la "))
            {
                var dataString = fileContent.Substring(match.Index + match.Length);
                var week       = new WeekSchedule(dataString);
                weeks.Add(week);
            }
            return(weeks);
        }
Ejemplo n.º 21
0
        public void AddDailiesToSchedule(WeekSchedule schedule, params DailyWorkout[] workouts)
        {
            if (schedule == null)
            {
                throw new ArgumentException("Week Schedule cannot be null");
            }

            foreach (var wod in workouts)
            {
                schedule.DailyWorkouts.Add(wod);
            }
            this.Update(schedule);
        }
        public void SetDoorSchedule(WeekSchedule weekSchedule)
        {
            using (var terminal = new Terminal())
            {
                terminal.Connect(new TcpConnectionParameters(IPAddress, Port), ApplicationProtocol.APPLICATION_MA5G);
                var scheduleManager = terminal.CreateScheduleManager();

                //Erase schedules first
                scheduleManager.DeleteDoorOpenSchedule();
                //Set New Schedule
                scheduleManager.StoreDoorOpenSchedule(weekSchedule);
            }
        }
Ejemplo n.º 23
0
        public async static Task <WeekSchedule> GetSchedule(string url)
        {
            var result = new WeekSchedule();

            using (var httpClient = new HttpClient())
            {
                var response = await httpClient.GetAsync(url);

                var doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(await response.Content.ReadAsStringAsync());
                var tds        = doc.DocumentNode.Descendants("td").Where((t) => t.Attributes["rowspan"] != null);
                var daysFilled = new int[5];
                int currentDay = 0;
                foreach (var td in tds)
                {
                    var rowSpanAttr = td.Attributes["rowspan"];
                    if (rowSpanAttr == null)
                    {
                        continue;
                    }
                    var rowSpan = int.Parse(rowSpanAttr.Value);
                    currentDay = 0;
                    for (int i = 0; i < daysFilled.Length; i++)
                    {
                        if (daysFilled[currentDay] > daysFilled[i])
                        {
                            currentDay = i;
                        }
                    }

                    var classInfo = new ClassInfo();
                    var div       = td.Element("div");
                    if (div == null)
                    {
                        daysFilled[currentDay] += rowSpan;
                        continue;
                    }
                    var c = div.Element("span").ChildNodes;
                    classInfo.Name      = c.Skip(4).First().InnerText.Trim('"', '\n', '\r', ' ', '\t');
                    classInfo.ClassRoom = div.Elements("a").First((a) => a.Attributes["href"].Value.StartsWith("?classroom=")).InnerText;
                    classInfo.Lecturers = (div.Elements("a").Where((a) => a.Attributes["href"].Value.StartsWith("?teacher=")).Select((a) => a.InnerText)).ToList();
                    var startTime = daysFilled[currentDay] + 7;
                    classInfo.Time = startTime.ToString().PadLeft(2, '0') + ":00 - " + (startTime + rowSpan).ToString().PadLeft(2, '0') + ":00";
                    result.Days[currentDay].Classes.Add(classInfo);
                    daysFilled[currentDay] += rowSpan;
                }
            }
            return(result);
        }
 private void RemoveCyclicReferences(WeekSchedule schedule)
 {
     schedule.Week.WeekRoot = null;
     schedule.Days.ForEach(d => d.WeekRoot = null);
     schedule.Days.ForEach(d => d.Lessons.ForEach(l => l.Day = null));
     schedule.Days.ForEach(d => d.Lessons
                           .ForEach(l => l.Teachers.ForEach(t => t.Lesson = null)));
     schedule.Days.ForEach(d => d.Lessons
                           .ForEach(l => l.Groups.ForEach(t => t.Lesson = null)));
     schedule.Days.ForEach(d => d.Lessons
                           .ForEach(l => l.Auditories.ForEach(t => t.Lesson = null)));
     schedule.Days.ForEach(d => d.Lessons.ForEach(l => l.TypeObj.Lesson     = null));
     schedule.Group.WeekRoot      = null;
     schedule.Group.Faculty.Group = null;
 }
Ejemplo n.º 25
0
 public static async Task<WeekSchedule> GetScheduleForStop(string id, CancellationToken cancellationToken)
 {
     WeekSchedule result = new WeekSchedule();
     for (int i = 0; i < 8; i++)
     {
         DaySchedule daySched = new DaySchedule();
         ServiceDay day = (ServiceDay)(int)Math.Pow(2, i);
         DateTime? date = HelperFunctions.DateForServiceDay(day);
         if (date.HasValue)
         {
             daySched.LoadFromVerboseString(await ApiLayer.SendRequest("schedule-for-stop/" + id, new Dictionary<string, string>() {["date"] = date.Value.ToString("yyyy-MM-dd") }, cancellationToken));
             result.AddServiceDay(day, daySched);
         }
     }
     return result;
 }
        public WeekSchedule GetWeekSchedule()
        {
            var weekSchedule = new WeekSchedule();

            foreach (var dayOfTheWeekSlot in DayOfTheWeekSlots)
            {
                var trv = GetTimeRangeVector(
                    DetermineIfExcluded(dayOfTheWeekSlot.DayOfWeek, out var exclusion)
                        ? exclusion.Slots
                        : dayOfTheWeekSlot.Slots, weekSchedule);

                weekSchedule.SetDaySchedule(GetScheduleDay(dayOfTheWeekSlot.DayOfWeek), trv);
            }

            return(weekSchedule);
        }
Ejemplo n.º 27
0
        public void AddDailiesToSchedule_ShouldNotAddAnythingWhenNoWorkoutsAreProvided()
        {
            var weekScheduleStub     = new Mock <IEfRepostory <WeekSchedule> >();
            var unitOfWorkStub       = new Mock <IUnitOfWork>();
            var datetimeProviderStub = new Mock <IDatetimeProvider>();

            var sut = new WeekScheduleService(weekScheduleStub.Object, unitOfWorkStub.Object, datetimeProviderStub.Object);

            var schedule = new WeekSchedule();

            weekScheduleStub.Setup(x => x.Update(It.IsAny <WeekSchedule>()));
            unitOfWorkStub.Setup(x => x.Commit());

            sut.AddDailiesToSchedule(schedule);

            Assert.AreEqual(0, schedule.DailyWorkouts.Count);
        }
Ejemplo n.º 28
0
        public async Task GetaChangesWithOneScheduleWhichAlreadyExistsAndDidNotChangeReturnsEmptyListTest(string email)
        {
            // arrange
            var ct    = new CancellationToken(false);
            var weeks = new Dictionary <int, WeekItem>
            {
                { 0, new WeekItem(6, 2015) },
            };
            var weekOld = new WeekSchedule
            {
                Id         = 1,
                WeekNumber = 6,
                Year       = 2015,
            };
            var weekNew = new WeekSchedule
            {
                Id         = 1,
                WeekNumber = 6,
                Year       = 2015,
            };

            IFlexKidsClient     flexKidsClient     = A.Fake <IFlexKidsClient>();
            IKseParser          parser             = A.Fake <IKseParser>();
            IScheduleRepository scheduleRepository = A.Dummy <IScheduleRepository>();
            var sut = new Scheduler(flexKidsClient, parser, scheduleRepository);

            _ = A.CallTo(() => parser.GetIndexContent(A <string> ._))
                .Returns(new IndexContent
            {
                Email = email,
                Weeks = weeks,
            });
            _ = A.CallTo(() => flexKidsClient.GetSchedulePage(0, ct)).Returns("GetSchedulePage0");
            _ = A.CallTo(() => scheduleRepository.Get(2015, 6)).Returns(weekOld);
            _ = A.CallTo(() => scheduleRepository.Save(A <WeekSchedule> ._)).Returns(weekNew);

            // act
            IEnumerable <ScheduleDiff> result = await sut.ProcessAsync(ct);

            // assert
            Assert.Empty(result);
            _ = A.CallTo(() => flexKidsClient.GetAvailableSchedulesPage(ct)).MustHaveHappenedOnceExactly();
            _ = A.CallTo(() => parser.GetIndexContent(A <string> ._)).MustHaveHappenedOnceExactly();
            _ = A.CallTo(() => flexKidsClient.GetSchedulePage(0, ct)).MustHaveHappenedOnceExactly();
            _ = A.CallTo(() => scheduleRepository.Get(2015, 6)).MustHaveHappenedOnceExactly();
        }
Ejemplo n.º 29
0
        public void AddWeekSchedule_ShouldCallUnitOfWorkCommitOnce()
        {
            var weekScheduleStub     = new Mock <IEfRepostory <WeekSchedule> >();
            var unitOfWorkStub       = new Mock <IUnitOfWork>();
            var datetimeProviderStub = new Mock <IDatetimeProvider>();

            var sut = new WeekScheduleService(weekScheduleStub.Object, unitOfWorkStub.Object, datetimeProviderStub.Object);

            weekScheduleStub.Setup(x => x.Update(It.IsAny <WeekSchedule>()));
            unitOfWorkStub.Setup(x => x.Commit());

            var weekSchedule = new WeekSchedule();

            sut.AddWeekSchedule(weekSchedule);

            unitOfWorkStub.Verify(x => x.Commit(), Times.Once);
        }
Ejemplo n.º 30
0
        private static void WriteScheduleInfo(WeekSchedule schedule, Action <string> writeln)
        {
            if (schedule == null)
            {
                return;
            }

            var list = schedule.ScheduleByDay
                       .OrderBy(s => s.Key)
                       .ToList();

            foreach (var s in list)
            {
                WriteDayScheduleInfo(s.Value, writeln, (int)s.Key);
                writeln("--");
            }
        }
        public async Task <WeekSchedule> Get(int year, int weekNr)
        {
            WeekSchedule result = await _context.WeekSchedules
                                  .Include(schedule => schedule.Shifts)
                                  .FirstOrDefaultAsync(x => x.Year == year && x.WeekNumber == weekNr);

            if (result != null)
            {
                return(result);
            }

            return(new WeekSchedule
            {
                Year = year,
                WeekNumber = weekNr,
            });
        }
Ejemplo n.º 32
0
 public static async Task SaveScheduleAsync(WeekSchedule schedule, BusStop stop)
 {
     await EnsureFolders();
     var file = await (await ApplicationData.Current.LocalCacheFolder.GetFolderAsync("SavedSchedules")).CreateFileAsync(stop.ID.ToString() + ".txt", CreationCollisionOption.ReplaceExisting);
     CompactFormatWriter encoder = new CompactFormatWriter();
     schedule.Format(encoder);
     encoder.TrimDelimiter();
     await FileIO.WriteTextAsync(file, encoder.ToString());
     await ModifyStopCache(delegate (List<BusStop> cache)
     {
             if (!cache.Any(item => item == stop))
                 cache.Add(stop);
     }
         );
 }
Ejemplo n.º 33
0
 public static async Task SaveScheduleAsync(WeekSchedule schedule, BusStop stop)
 {
     WeekSchedule baseSchedule = (await LoadSchedule(stop.ID)) ?? new WeekSchedule();
     baseSchedule.RemoveRoutes(schedule.Routes);
     baseSchedule.MergeByRoute(schedule);
     await OverwriteScheduleAsync(baseSchedule, stop);
 }
        private ScheduleEmailModel CreateModel(WeekSchedule schedule, List<Recipe> selectedRecipes)
        {
            var model = new ScheduleEmailModel() { Name = schedule.Name };
            foreach (var day in schedule.Days)
            {
                var dayModel = new ScheduleEmailModel.Day() { Name = day.Name };
                model.Days.Add(dayModel);
                foreach (var meal in day.Meals)
                {
                    var mealModel = new ScheduleEmailModel.Meal() { Name = meal.Name };
                    dayModel.Meals.Add(mealModel);
                    if (meal.Entries.Any())
                    {
                        foreach (var entry in meal.Entries)
                        {
                            var entryModel = new ScheduleEmailModel.Entry() { Name = entry.Name };
                            mealModel.Entries.Add(entryModel);

                            var recipe = selectedRecipes.First(r => r.Id == entry.RecipeId);
                            entryModel.Reference = entryModel.ReferenceTitle = recipe.Reference ?? "";
                            entryModel.IsUrl = entryModel.Reference.StartsWith("http");
                            if (entryModel.IsUrl)
                            {
                                if (String.IsNullOrEmpty(recipe.Description) || recipe.Description.Length > 35)
                                {
                                    entryModel.ReferenceTitle = new Uri(entryModel.Reference)
                                        .GetLeftPart(UriPartial.Authority)
                                        .Replace("http://", "")
                                        .Replace("https://", "")
                                        .Replace(".livejournal.com", "");
                                }
                                else
                                {
                                    entryModel.ReferenceTitle = recipe.Description;
                                }
                            }

                        }
                    }
                }
            }
            return model;
        }
Ejemplo n.º 35
0
        private IEnumerable<ShoppingListItem> CreateShoppingListItems(WeekSchedule schedule, IEnumerable<Recipe> recipes, IEnumerable<Product> products)
        {
            var departments = SelectStoreDepartments();

            var recipeIds = schedule.Days.SelectMany(d => d.Meals.SelectMany(m => m.Entries)).Select(rr => rr.RecipeId).Distinct();

            var selectedRecipes = from rId in recipeIds
                join r in recipes on rId equals r.Id
                select r;

            selectedRecipes = selectedRecipes.Concat(new[] { new Recipe() { Name = "To Buy", Ingredients = schedule.Products.Select(p => new Ingredient() { ProductId = p.Id }).ToList() } });

            var items = selectedRecipes.SelectMany(r => (
                from ij in r.Ingredients
                join pj in products on ij.ProductId equals pj.Id
                join dj in departments on new { pj.WhereToBuy.StoreId, pj.WhereToBuy.DepartmentId } equals new { dj.StoreId, dj.DepartmentId }
                select new { ingredient = ij, product = pj, department = dj, recipe = r.Name })).Select(
                    (j, index) =>
                        new ShoppingListItem
                        {
                            Id = index,
                            Recipe = j.recipe,
                            Name = j.ingredient.Description,
                            Product = j.product.Name,
                            Buy = j.recipe == "To Buy" || j.product.Buy,
                            Store = j.department.Store,
                            Department = j.department.Department,
                            OrderHelper = String.IsNullOrWhiteSpace(j.department.Department) ? "Z" : j.department.Department
                        });

            var groupedByProduct = items.GroupBy(i => i.Product).Select(g =>
            {
                var first = g.First();
                var description = g.Select(sl => sl.Recipe + " - " + sl.Name).Aggregate((current, next) => current + Environment.NewLine + next);
                return new ShoppingListItem()
                {
                    Id = first.Id,
                    Store = first.Store,
                    Department = first.Department,
                    Name = description,
                    Product = first.Product,
                    Buy = g.Any(i => i.Buy)
                };
            });

            return groupedByProduct.ToList();
        }
Ejemplo n.º 36
0
        private void WizardMain_Load(object sender, EventArgs e)
        {
            Closing += WizardMain_Closing;

            _mainCount = Controls.Count;
            _stepCount = _mainCount; // set start point

            _ucDemonbuddy = new DemonbuddyOptions(this);
            _ucDiablo = new DiabloOptions(this);
            _ucWeekSchedule = new WeekSchedule(this);
            _ucHeroes = new Heroes(this);
            _ucProfileSchedule = new ProfileSchedule(this);
            _ucAdvanced = new Advanced(this);

            Controls.Add(_ucDemonbuddy);
            Controls.Add(_ucDiablo);
            Controls.Add(_ucWeekSchedule);
            //Controls.Add(ucHeroes);
            Controls.Add(_ucProfileSchedule);
            Controls.Add(_ucAdvanced);
            _ucDiablo.Visible =
                _ucWeekSchedule.Visible = _ucProfileSchedule.Visible = _ucHeroes.Visible = _ucAdvanced.Visible = false;

            FinishCount = Controls.Count - 1; // Get Finish count

            AffinityDiablo = new SetAffinity();
            AffinityDemonbuddy = new SetAffinity();

            if (bot != null)
                LoadData();
        }
Ejemplo n.º 37
0
 public static async Task OverwriteScheduleAsync(WeekSchedule schedule, BusStop stop)
 {
     int hash = HashLocation(stop.Position);
     var file = await (await ApplicationData.Current.LocalCacheFolder.GetFolderAsync("SavedSchedules")).CreateFileAsync(stop.ID.ToString() + ".txt", CreationCollisionOption.ReplaceExisting);
     CompactFormatWriter encoder = new CompactFormatWriter();
     schedule.Format(encoder);
     encoder.TrimDelimiter();
     await FileIO.WriteTextAsync(file, encoder.ToString());
     await AccessStopCache(hash, delegate (List<BusStop> cache)
     {
         if (!cache.Any(item => item == stop))
         {
             cache.Add(stop);
             return true;
         }
         return false;
     }
         );
 }
Ejemplo n.º 38
0
 public static async Task<WeekSchedule> LoadSchedule(string stopId)
 {
     WeekSchedule result = new WeekSchedule();
     //var file = (await (await ApplicationData.Current.LocalCacheFolder.GetFolderAsync("SavedSchedules")).GetFilesAsync()).FirstOrDefault(item => item.Name == stopId + ".txt");
     var file = await (await ApplicationData.Current.LocalCacheFolder.GetFolderAsync("SavedSchedules")).TryGetItemAsync(stopId + ".txt") as StorageFile;
     if (file != null)
     {
         string text = await FileIO.ReadTextAsync(file);
         CompactFormatReader reader = new CompactFormatReader(text);
         result.Deformat(reader, stopId);
         return result;
     }
     else
         return null;
 }