Exemple #1
0
        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));
        }
Exemple #3
0
        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));
        }