public static EducatorEventsShowModel Build(EducatorMasterPerson educatorMasterPerson, DateTime?weekMonday) { LanguageCode language = CultureHelper.CurrentLanguage; DateTime weekStart = weekMonday.HasValue ? weekMonday.Value.AddDays(1 - (int)weekMonday.Value.DayOfWeek).Date : DateTime.Now.AddDays(1 - (int)DateTime.Now.DayOfWeek).Date; DateTime weekEnd = weekStart.AddDays(7); string educatorDisplayText = educatorMasterPerson.GetDisplayNameByLanguage(language); string educatorFullDisplayText = educatorMasterPerson.GetLongDisplayNameByLanguage(language); return(new EducatorEventsShowModel { EducatorDisplayText = educatorDisplayText, EducatorFullDisplayText = educatorFullDisplayText, Title = $"{Resources.Resources.TimetableForEducator} {educatorFullDisplayText}", EducatorMasterId = educatorMasterPerson.Id, EducatorEventsDays = StudyEventsViewModelHelper.GetEducatorEventsDayModels(educatorMasterPerson, weekStart, weekEnd), PreviousWeekMonday = weekStart.AddDays(-7).ToString("yyyy-MM-dd"), WeekStart = weekStart, WeekMonday = weekStart.ToString("yyyy-MM-dd"), NextWeekMonday = weekStart.AddDays(7).ToString("yyyy-MM-dd"), WeekDisplayText = $"{weekStart:d MMMM} – {weekEnd.AddDays(-1):d MMMM}", IsCurrentWeekReferenceAvailable = weekStart != DateTime.Now.AddDays(1 - (int)DateTime.Now.DayOfWeek).Date, }); }
public static IEnumerable <StudyEventAggregatedDayItemViewModel> GetEducatorAggregatedEventsDays( EducatorMasterPerson educatorMasterPerson, DateTime fromDate, DateTime toDate) { using (var appointmentsRepository = new EducatorAppointmentsRepository(educatorMasterPerson, educatorMasterPerson.Persons.SelectMany(p => p.EducatorEmployments), fromDate, toDate)) { return(GetStudyEventAggregatedDayItemViewModels(appointmentsRepository, forEducator: educatorMasterPerson)); } }
public static IEnumerable <StudyEventDayItemModel> GetEducatorEventsDayModels( EducatorMasterPerson educatorMasterPerson, DateTime fromDate, DateTime toDate) { return(GetEducatorEvents(educatorMasterPerson, fromDate, toDate) .GroupBy(vm => vm.Start.Date) .OrderBy(g => g.Key) .Select(g => StudyEventDayItemModel.Build(g.Key, g.AsEnumerable()))); }
private static IEnumerable <StudyEventAggregatedDayItemViewModel> GetStudyEventAggregatedDayItemViewModels( IAppointmentRepository <TimeEventAppointment> appointmentsRepository, EducatorMasterPerson forEducator = null) { DayOfWeek[] daysOfWeek = { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday }; var appointments = appointmentsRepository.GetAppointments().Where(a => a.IsPublicMaster && !a.IsCancelled); return(daysOfWeek.Select(d => GetStudyEventAggregatedDayItemViewModel(d, appointments, forEducator))); }
private static IEnumerable <StudyEventItemViewModel> GetEducatorEvents( EducatorMasterPerson educatorMasterPerson, DateTime fromDate, DateTime toDate) { using (var appointmentsRepository = new EducatorAppointmentsRepository(educatorMasterPerson.Persons.SelectMany(p => p.EducatorEmployments), fromDate, toDate)) { var appointments = appointmentsRepository.GetAppointments(); return(appointments .Where(a => a.IsPublicMaster) .OrderBy(a => a.Start) .ThenBy(a => a.SubjectEnglish) .Select(a => StudyEventItemViewModel.Build(a, forEducator: educatorMasterPerson))); } }
public static EducatorItemViewModel Build(EducatorMasterPerson masterPerson) { var language = CultureHelper.CurrentLanguage; return(new EducatorItemViewModel { Id = masterPerson.Id, DisplayName = masterPerson.GetDisplayNameByLanguage(language), FullName = $"{masterPerson.LastName} {masterPerson.FirstName} {masterPerson.MiddleName}", Employments = masterPerson.Persons .SelectMany(p => p.EducatorEmployments) .Select(ee => EducatorEmploymentItemViewModel.Build(ee)) .Distinct(new EducatorEmploymentItemViewModelEqualityComparer()) }); }
public static EducatorEventsShowAllViewModel Build(EducatorMasterPerson educatorMasterPerson, int?next) { bool showNext = next.HasValue && next.Value > 0; LanguageCode language = CultureHelper.CurrentLanguage; string educatorDisplayText = educatorMasterPerson.GetDisplayNameByLanguage(language); string educatorLongDisplayText = educatorMasterPerson.GetLongDisplayNameByLanguage(language); DateTime summerTermBoundary = new DateTime(DateTime.Now.Month == 1 ? DateTime.Now.Year - 1 : DateTime.Now.Year, 8, 1); DateTime winterTermBoundary = new DateTime(DateTime.Now >= summerTermBoundary && DateTime.Now.Month > 1 ? DateTime.Now.Year + 1 : DateTime.Now.Year, 2, 1); DateTime nextSummerTermBoundary = new DateTime(summerTermBoundary.Year + 1, summerTermBoundary.Month, summerTermBoundary.Day); DateTime nextWinterTermBoundary = new DateTime(winterTermBoundary.Year + 1, winterTermBoundary.Month, winterTermBoundary.Day); bool isSpringTerm = winterTermBoundary < DateTime.Now && DateTime.Now < summerTermBoundary; DateTime fromDate = showNext ? (isSpringTerm ? summerTermBoundary : winterTermBoundary) : (isSpringTerm ? winterTermBoundary : summerTermBoundary); DateTime toDate = showNext ? (isSpringTerm ? nextWinterTermBoundary : nextSummerTermBoundary) : (isSpringTerm ? summerTermBoundary : winterTermBoundary); string title = string.Format("{0} {1}", Resources.Resources.TimetableForEducator, educatorLongDisplayText); IEnumerable <StudyEventAggregatedDayItemViewModel> educatorEventsDays = StudyEventsViewModelHelper.GetEducatorAggregatedEventsDays(educatorMasterPerson, fromDate, toDate); return(new EducatorEventsShowAllViewModel { Next = next, From = fromDate, To = toDate, EducatorDisplayText = educatorDisplayText, EducatorLongDisplayText = educatorLongDisplayText, DateRangeDisplayText = string.Format("{0:d MMMM yyyy} - {1:d MMMM yyyy}", fromDate, toDate), Title = title, EducatorMasterId = educatorMasterPerson.Id, EducatorEventsDays = educatorEventsDays, IsSpringTerm = isSpringTerm, SpringTermLinkAvailable = isSpringTerm == showNext, AutumnTermLinkAvailable = isSpringTerm != showNext, HasEvents = educatorEventsDays.Any(seadivm => seadivm.DayStudyEvents.Any()), Breadcrumb = new Breadcrumb() { BreadcrumbHelper.GetBreadcrumbRootItem(false), BreadcrumbHelper.GetBreadcrumbEducatorsItem(false), new BreadcrumbItem { IsActive = true, DisplayText = educatorDisplayText, } } }); }
private Stream GetEducatorWeekExcelContentAsStream(EducatorMasterPerson masterPerson, EducatorEventsShowModel model, DateTime?weekMonday) { var eventDayModels = model.EducatorEventsDays.Select(day => new EventDayModel(day.DayString, day.DayStudyEvents.Select(@event => new EventModel( @event.DateTime.Time.Value, @event.Subject, @event.Cohort, @event.ShowCohort, string.Join("\n", @event.EventLocations.Select(el => el.DisplayName)), string.Join("\n", @event.ContingentUnits.Select(cu => cu.Name)) )))); var stream = AppointmentsSpreadsheetsHelper.GetEducatorWeekTimetableWorkbookStream(weekMonday.Value, weekMonday.Value.AddDays(7), $"{masterPerson.DisplayName}", eventDayModels); return(stream); }
private Stream GetXmlContentAsStream(EducatorMasterPerson masterPerson, EducatorEventsShowAllViewModel viewModel) { var aggregatedEventDayModels = viewModel.EducatorEventsDays.Select(day => new AggregatedEventDayModel(day.DayString, day.DayStudyEvents.Select(aggregatedEvent => new AggregatedEventModel( aggregatedEvent.DateTime.Time.Value, string.Join("\n", aggregatedEvent.DateTime.Dates.Select(d => d.Value)), aggregatedEvent.Subject, aggregatedEvent.Cohort, aggregatedEvent.ShowCohort, aggregatedEvent.EventLocations.FirstOrDefault().DisplayName, string.Join("; ", aggregatedEvent.ContingentUnits.Select(cu => $"{cu.Name} ({cu.DivisionAndCourse})")), null)))); var stream = AppointmentsSpreadsheetsHelper.GetEducatorTimetableWorkbookStream(viewModel.From, viewModel.To, $"{masterPerson.LastName} {masterPerson.FirstName} {masterPerson.MiddleName}", aggregatedEventDayModels); return(stream); }
private static StudyEventAggregatedDayItemViewModel GetStudyEventAggregatedDayItemViewModel( DayOfWeek d, IEnumerable <TimeEventAppointment> appointments, EducatorMasterPerson forEducator = null) { var studyEventAggregateDatesHelpers = appointments .Where(a => a.Start.DayOfWeek == d) .Select(a => new StudyEventAggregateContingentsHelper(a)) .Select(ch => new StudyEventAggregateDatesHelper(ch)); var studyEventAggregatedItemViewModels = studyEventAggregateDatesHelpers .GroupBy(seadh => seadh.Key) .OrderBy(seadh => seadh.Key.Start) .ThenBy(seadh => seadh.Key.Subject) .Select(g => StudyEventAggregatedItemViewModel.Build( g.Key, g.AsEnumerable().Select(seadh => seadh.Date), forEducator )); return(StudyEventAggregatedDayItemViewModel.Build(d, studyEventAggregatedItemViewModels.ToList())); }
public static EducatorEventsShowViewModel Build(EducatorMasterPerson educatorMasterPerson, DateTime?weekMonday) { LanguageCode language = CultureHelper.CurrentLanguage; DateTime weekStart = weekMonday.HasValue ? weekMonday.Value.AddDays(1 - (int)weekMonday.Value.DayOfWeek).Date : DateTime.Now.AddDays(1 - (int)DateTime.Now.DayOfWeek).Date; DateTime weekEnd = weekStart.AddDays(7); string educatorDisplayText = educatorMasterPerson.GetDisplayNameByLanguage(language); string educatorFullDisplayText = educatorMasterPerson.GetLongDisplayNameByLanguage(language); return(new EducatorEventsShowViewModel { EducatorDisplayText = educatorDisplayText, EducatorFullDisplayText = educatorFullDisplayText, Title = string.Format("{0} {1}", Resources.Resources.TimetableForEducator, educatorFullDisplayText), EducatorMasterId = educatorMasterPerson.Id, EducatorEventsDays = StudyEventsViewModelHelper.GetEducatorEventsDayViewModels(educatorMasterPerson, weekStart, weekEnd), PreviousWeekMonday = weekStart.AddDays(-7).ToString("yyyy-MM-dd"), WeekStart = weekStart, WeekMonday = weekStart.ToString("yyyy-MM-dd"), NextWeekMonday = weekStart.AddDays(7).ToString("yyyy-MM-dd"), WeekDisplayText = language == LanguageCode.English ? string.Format("{0:d MMMM} – {1:d MMMM}", weekStart, weekEnd.AddDays(-1)) : string.Format("{0:d MMMM} – {1:d MMMM}", weekStart, weekEnd.AddDays(-1)), IsCurrentWeekReferenceAvailable = weekStart != DateTime.Now.AddDays(1 - (int)DateTime.Now.DayOfWeek).Date, Breadcrumb = new Breadcrumb() { BreadcrumbHelper.GetBreadcrumbRootItem(false), BreadcrumbHelper.GetBreadcrumbEducatorsItem(false), new BreadcrumbItem { IsActive = true, DisplayText = educatorDisplayText, } } }); }
public static StudyEventAggregatedItemViewModel Build( StudyEventAggregateDatesHelperKey aggregateKey, IEnumerable <DateTime> dates, EducatorMasterPerson forEducator) { LanguageCode language = CultureHelper.CurrentLanguage; return(new StudyEventAggregatedItemViewModel { ContingentUnits = aggregateKey .ContingentUnits .Select(cu => ContingentUnitItemViewModel.Build(cu)), ForEducator = (forEducator != null), EducatorId = forEducator?.Id, Start = aggregateKey.Start, End = aggregateKey.End, Subject = aggregateKey.Subject, Cohort = aggregateKey.Cohort, ShowCohort = aggregateKey.ShowCohort, EventLocations = aggregateKey.EventLocations.Select(el => new StudyEventLocationItemViewModel(el)), DateTime = DateTimeAggregatedViewModel.Build(dates, aggregateKey.Start, aggregateKey.End), EducatorsDisplayText = aggregateKey.EducatorsDisplayText }); }