public override object PrepareDataSource(FeedReportInputModel inputModel, ReportingFormat format, IServiceLocatorSchool serviceLocator, IServiceLocatorMaster masterLocator) { var baseData = PrepareBaseReportData(inputModel, serviceLocator); var settings = inputModel.Settings; var annType = inputModel.Settings.LessonPlanOnly ? AnnouncementTypeEnum.LessonPlan : (AnnouncementTypeEnum?)inputModel.AnnouncementType; var anns = serviceLocator.AnnouncementFetchService.GetAnnouncementDetailses(settings.StartDate, settings.EndDate, inputModel.ClassId, inputModel.Complete, annType); //hide hidden activities if not included if (!settings.IncludeHiddenActivities) { anns = anns.Where(x => x.ClassAnnouncementData == null || x.ClassAnnouncementData.VisibleForStudent).ToList(); } // hide attachments and applications if not included if (!settings.IncludeAttachments) { anns = anns.Select(x => { x.AnnouncementAttachments = new List <AnnouncementAttachment>(); x.AttachmentNames = new List <string>(); x.ApplicationCount = 0; x.AnnouncementApplications = new List <AnnouncementApplication>(); return(x); }).ToList(); } // hide hidden attributes if not included if (!settings.IncludeHiddenAttributes) { anns = anns.Select(x => { x.AnnouncementAttributes = x.AnnouncementAttributes.Where(a => a.VisibleForStudents).ToList(); return(x); }).ToList(); } //Get apps with images var appIds = anns.SelectMany(x => x.AnnouncementApplications.Select(y => y.ApplicationRef)).Distinct().ToList(); var apps = masterLocator.ApplicationService.GetApplicationsByIds(appIds); IDictionary <Guid, byte[]> appsImages = new Dictionary <Guid, byte[]>(); foreach (var app in apps) { if (appsImages.ContainsKey(app.Id)) { continue; } var image = masterLocator.ApplicationPictureService.GetPicture(app.BigPictureRef.Value, 170, 110); appsImages.Add(app.Id, image); } var fromDate = settings.StartDate ?? serviceLocator.Context.SchoolYearStartDate; var toDate = settings.EndDate ?? serviceLocator.Context.SchoolYearEndDate; return(FeedDetailsExportModel.Create(baseData.Person, baseData.SchoolName, baseData.SchoolYearName, serviceLocator.Context.NowSchoolTime, fromDate, toDate, anns, baseData.Classes, baseData.DayTypes, baseData.Staffs, apps, appsImages)); }
public ActionResult FeedReport(FeedReportSettingsInfo settings, int?classId, int?format, bool?complete, int?announcementType) { //TODO: save report settings SchoolLocator.ReportService.SetFeedReportSettings(settings); var path = Server.MapPath(ApplicationPath).Replace("/", "\\"); var formatType = (ReportingFormat?)format ?? ReportingFormat.Pdf; var reportInput = new FeedReportInputModel { ClassId = classId, Format = format, Settings = settings, Complete = complete, AnnouncementType = announcementType, DefaultPath = path }; return(Report(() => SchoolLocator.ReportService.GenerateReport(reportInput), "Feed Report", formatType, DownloadReportFile)); }
public override object PrepareDataSource(FeedReportInputModel inputModel, ReportingFormat format, IServiceLocatorSchool serviceLocator, IServiceLocatorMaster masterLocator) { var baseData = PrepareBaseReportData(inputModel, serviceLocator); var feedSettings = new FeedSettingsInfo { AnnouncementType = inputModel.Settings.LessonPlanOnly ? (int)AnnouncementTypeEnum.LessonPlan : inputModel.AnnouncementType, FromDate = inputModel.Settings.StartDate, ToDate = inputModel.Settings.EndDate }; //bool isForAdminPortal = BaseSecurity.IsDistrictAdmin(serviceLocator.Context) && !inputModel.ClassId.HasValue; //var anns = isForAdminPortal // ? serviceLocator.AnnouncementFetchService.GetAnnouncementsForAdminFeed(inputModel.Complete, null, feedSettings) // : serviceLocator.AnnouncementFetchService.GetAnnouncementsForFeed(inputModel.Complete, inputModel.ClassId, feedSettings); var anns = serviceLocator.AnnouncementFetchService.GetAnnouncementDetailses(feedSettings.FromDate, feedSettings.ToDate, inputModel.ClassId, inputModel.Complete, feedSettings.AnnouncementTypeEnum); //hide hidden activities if (!inputModel.Settings.IncludeHiddenActivities) { anns = anns.Where(x => x.ClassAnnouncementData == null || x.ClassAnnouncementData.VisibleForStudent).ToList(); } ////remove standards if groupByStandards is not selected //if (!inputModel.Settings.GroupByStandards) // anns = anns.Select(x => // { // x.AnnouncementStandards = new List<AnnouncementStandardDetails>(); // return x; // }).ToList(); var fromDate = inputModel.Settings.StartDate ?? serviceLocator.Context.SchoolYearStartDate; var toDate = inputModel.Settings.EndDate ?? serviceLocator.Context.SchoolYearEndDate; return(ShortFeedExportModel.Create(baseData.Person, baseData.SchoolName, baseData.SchoolYearName, serviceLocator.Context.NowSchoolTime, fromDate, toDate, baseData.Classes, baseData.Staffs, baseData.DayTypes, anns, inputModel.Settings.GroupByStandards)); }