private Stream GetWeekExcelContentAsStream(StudentGroup studentGroup, StudentGroupEventsWeekModel model, DateTime from, DateTime to) { var eventDayModels = model.Days.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.EventLocations.Select(el => string.Join("; ", el.Educators.Select(e => e.Name)))) )))); var stream = AppointmentsSpreadsheetsHelper.GetStudentGroupWeekTimetableWorkbookStream(from, to, $"{studentGroup.Name}", eventDayModels); return(stream); }
public FileStreamResult ExcelWeek(int studentGroupId, DateTime?weekMonday) { var defaultWeekStart = DateTimeHelper.GetWeekStart(DateTime.Today); var from = weekMonday ?? defaultWeekStart; var to = from.AddDays(7); var studentGroup = studentGroupRepository.GetStudentGroupById(studentGroupId); if (studentGroup != null) { var model = StudentGroupEventsWeekModel.Build(studentGroup, from, to); return(File( GetWeekExcelContentAsStream(studentGroup, model, from, to), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"расписание {studentGroup.Name} {from}-{to}.xlsx")); } return(null); }