public FileStreamResult WeekExcel(int masterId, DateTime?weekMonday) { var masterPerson = educatorEmploymentRepository.GetEducatorMasterPersonById(masterId); if (masterPerson != null) { var viewModel = EducatorEventsShowModel.Build(masterPerson, weekMonday); return(File( GetEducatorWeekExcelContentAsStream(masterPerson, viewModel, viewModel.WeekStart), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"расписание преподавателя на неделю - {masterPerson.DisplayName} ({viewModel.WeekStart:dd MMMM yyyy} - {viewModel.WeekStart.AddDays(7):dd MMMM yyyy} г. на дату {DateTime.Now:dd.MM}).xlsx")); } return(null); }
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); }