public ScheduleChangedEventArgs( WeekSchedule updatedWeekSchedule, IOrderedEnumerable <ScheduleDiff> diff) { UpdatedWeekSchedule = updatedWeekSchedule; Diff = diff.ToList(); }
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); }
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(); }
/// <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 } }
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); }
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); }
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); }
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()); }
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); } }
public CalendarViewModel(IEventAggregator ea, IApplicationCommands applicationCommands) { Week = new Week(); WeekSchedule = new WeekSchedule(); _ea = ea; _ea.GetEvent <UpdateMenuEvent>().Subscribe(UpdateMenu_Handler); _applicationCommands = applicationCommands; }
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); }
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; } }
public void AddWeekSchedule(WeekSchedule weekSchedule) { if (weekSchedule == null) { throw new ArgumentException("Week Schedule cannot be null"); } this.weekScheduleRepo.Add(weekSchedule); this.unitOfWork.Commit(); }
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); }
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); } }
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; }
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); }
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); }
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(); }
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); }
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, }); }
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); } ); }
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; }
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(); }
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(); }
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; } ); }
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; }