Ejemplo n.º 1
0
        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,
            });
        }
Ejemplo n.º 2
0
 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));
     }
 }
Ejemplo n.º 3
0
 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())));
 }
Ejemplo n.º 4
0
        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)));
        }
Ejemplo n.º 5
0
 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)));
     }
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 10
0
        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,
                    }
                }
            });
        }
Ejemplo n.º 12
0
        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
            });
        }