Esempio n. 1
0
        public async Task <ReportTemplateViewModel> CreateTemplateViewModelAsync(int reportId)
        {
            var report = await _dbContext.Reports
                         .Include(p => p.PromotionMediae)
                         .Include(p => p.WebPlatformViews)
                         .Include(p => p.WebPlatformViews.Select(wpv => wpv.WebPlatform))
                         .Include(p => p.CustomRecommendedActions)
                         .Include(p => p.CustomPromotionMediae)
                         .Include(p => p.ColleaguesPartners)
                         .Include(p => p.Offers)
                         .Include(p => p.Agent)
                         .FirstOrDefaultAsync(r => r.Id == reportId) ?? throw new ContentNotFoundException("Не е намерен докладът !");

            var reportEmailModel = new ReportTemplateViewModel
            {
                PromotionMediae = await _dbContext.PromotionMediae
                                  .Select(p => new PromotionMediaForEmail
                {
                    Id        = p.Id,
                    MediaType = p.Media
                })
                                  .ToListAsync()
            };

            reportEmailModel.PromotionMediae.ForEach((p) => p.IsChecked = report.PromotionMediae.Any(pm => pm.Id == p.Id));
            reportEmailModel.CustomPromotionMediae =
                report.CustomPromotionMediae.Select(cpm => cpm.CustomMedia).ToList();
            reportEmailModel.WebPlatformViews = report.WebPlatformViews
                                                .Select(wpv => new WebPlatformViewEmailViewModel
            {
                Views        = wpv.Views,
                PlatformName = wpv.WebPlatform.WebPlatform
            })
                                                .ToList();
            reportEmailModel.PartnersSharedWith = report.ColleaguesPartners
                                                  .Select(p => p.PartnerName + (string.IsNullOrEmpty(p.PartnerCompanyName) ? "" : " от " + p.PartnerCompanyName)).ToList();

            reportEmailModel.TotalViews       = report.TotalViews;
            reportEmailModel.TotalCalls       = report.TotalCalls;
            reportEmailModel.TotalInspections = report.TotalInspections;
            reportEmailModel.TotalOffers      = report.TotalOffers;
            reportEmailModel.Offers           = report.Offers.Select(o => o.Offer).ToList();

            reportEmailModel.ActionsConclusion = report.ActionsConclusion;

            reportEmailModel.IsMarketingChangeIssued  = report.IsMarketingChangeIssued;
            reportEmailModel.IsPriceChangeIssued      = report.IsPriceChangeIssued;
            reportEmailModel.CustomRecommendedActions =
                report.CustomRecommendedActions.Select(cra => cra.RecommendedAction).ToList();
            reportEmailModel.ChangeArguments = report.ChangeArguments;

            reportEmailModel.CreatedOn      = report.CreatedOn;
            reportEmailModel.LinkToProperty = Path.Combine(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority), "/Properties/Details/" + report.PropertyId);
            reportEmailModel.AgentCreator   = report.Agent.FirstName + " " + report.Agent.LastName;

            return(reportEmailModel);
        }
Esempio n. 2
0
        private string CreateEmailTemplate(ReportTemplateViewModel templateModel)
        {
            string template = File.ReadAllText(Path.Combine(HttpRuntime.AppDomainAppPath, @"Resources\EmailTemplates\HTMLPage1.cshtml"));

            if (Engine.Razor.IsTemplateCached("ReportsTemplate", typeof(ReportTemplateViewModel)))
            {
                return(Engine.Razor.Run("ReportsTemplate", typeof(ReportTemplateViewModel), templateModel));
            }

            return(Engine.Razor.RunCompile(template, "ReportsTemplate", null, templateModel));
        }
        public async Task <IActionResult> GenerateReport(string userId, DateTime?start, DateTime?end)
        {
            IList <string> CheckUserId() =>
            userId is not null
                    ? new string[]
            {
                userId
            }

                    : Array.Empty <string>();

            var doorActionDtos = (await _doorActionManager.GetAllAsync(
                                      dateRangeFilter: new DateRangeHelper
            {
                Start = start,
                End = end,
            },
                                      userIds: CheckUserId(),
                                      includes: new string[]
            {
                nameof(DoorActionDto.Card),
                nameof(DoorActionDto.DoorReader),
                nameof(DoorReader.Door)
            }))
                                 .OrderBy(doorActionDto => doorActionDto.TimeStamp);

            var reportTemplateViewModel = new ReportTemplateViewModel
            {
                DoorActionViewModels =
                    _mapper.Map <IEnumerable <DoorActionViewModel> >(doorActionDtos)
            };

            var html = await _razorViewEngine
                       .RenderViewToStringAsync(
                "Views/Report/Template.cshtml",
                reportTemplateViewModel);

            return(File(
                       await _reportService.GeneratePdfAsync(html),
                       "application/octet-stream",
                       $"Report_{DateTime.Now}.pdf"));
        }
Esempio n. 4
0
        // GET: Reports/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Report report = reportService.Get(id);

            if (report == null)
            {
                return(HttpNotFound());
            }
            ReportTemplateViewModel model = new ReportTemplateViewModel
            {
                ID         = report.User.ID,
                ReportID   = report.ID,
                ReportLink = report.Link
            };

            ViewBag.ID = new SelectList(userService.GetAll().Where(x => x.Role.Value.Equals("Студент")), "ID", "Surname");
            return(View(model));
        }
Esempio n. 5
0
        public JsonResult _SaveReportTemplate(ReportTemplateViewModel model)
        {
            string status      = String.Empty;
            string description = String.Empty;

            try
            {
                if (ModelState.IsValid)
                {
                    model.Discriminator = "Orders";
                    var template = _remportTemplateService.SaveTemplate(model);
                    status      = "success";
                    description = "Template " + template.Name + " successfully added";
                }
            }
            catch (Exception ex)
            {
                status      = "Error";
                description = EisHelper.GetExceptionMessage(ex).ToString();
            }

            return(Json(new { status = status, description = description }, JsonRequestBehavior.AllowGet));
        }
        public ReportTemplateViewModel SaveTemplate(ReportTemplateViewModel model)
        {
            try
            {
                var reportTemplate = Mapper.Map <ReportTemplateViewModel, reporttemplate>(model);

                _context.reporttemplates.Add(reportTemplate);
                _context.SaveChanges();

                return(Mapper.Map <reporttemplate, ReportTemplateViewModel>(reportTemplate));
            }
            catch (DbEntityValidationException ex)
            {
                var errorMsg = EisHelper.ParseDbEntityValidationException(ex);
                _logger.LogError(LogEntryType.ProductService, errorMsg, ex.StackTrace);
                return(model);
            }
            catch (Exception ex)
            {
                _logger.LogError(LogEntryType.ProductService, EisHelper.GetExceptionMessage(ex), ex.StackTrace);
                return(model);
            }
        }
Esempio n. 7
0
        public ActionResult Create(ReportTemplateViewModel report)
        {
            if (ModelState.IsValid)
            {
                string path = System.Web.HttpContext.Current.Server.MapPath("~/Content/Uploads/");
                if (System.IO.File.Exists(path + report.ReportLink))
                {
                    System.IO.File.Delete(path + report.ReportLink);
                }

                var student = userService.Get(report.ID);

                #region Activity
                double          period     = (student.Group.End - student.Group.Start).TotalDays;
                List <Activity> activities = activityService.GetAll().Where(x => x.User.ID == report.ID).ToList();
                int             count      = activities.Count();
                double          percent    = 0;
                if (period > 0)
                {
                    percent = (count / period) * 100;
                }
                #endregion
                #region Test
                List <Grade> grades = gradeService.GetAll().Where(x => x.UserID == report.ID).ToList();
                List <Test>  tests  = new List <Test>();
                foreach (var section in groupSectionService.GetAll().Where(x => x.GroupID == student.GroupID))
                {
                    tests.AddRange(testService.GetAll().Where(x => x.SectionID == section.SectionID));
                }
                Dictionary <Test, double> gradesTests = new Dictionary <Test, double>();
                foreach (var test in tests)
                {
                    foreach (var grade in grades)
                    {
                        if (grade.TestID == test.ID)
                        {
                            gradesTests.Add(test, grade.Value);
                            break;
                        }
                    }
                    if (!gradesTests.ContainsKey(test))
                    {
                        gradesTests.Add(test, 0);
                    }
                }
                #endregion
                #region Task
                List <UserTask> taskGrades = userTaskService.GetAll().Where(x => x.UserID == report.ID).ToList();
                List <Task>     tasks      = new List <Task>();
                foreach (var section in groupSectionService.GetAll().Where(x => x.GroupID == student.GroupID))
                {
                    tasks.AddRange(taskService.GetAll().Where(x => x.SectionID == section.SectionID));
                }
                Dictionary <Task, double> gradesTasks = new Dictionary <Task, double>();
                foreach (var task in tasks)
                {
                    foreach (var grade in taskGrades)
                    {
                        if (grade.TaskID == task.ID)
                        {
                            double normalize;
                            switch (grade.Grade)
                            {
                            case "Отлично":
                                normalize = 1;
                                break;

                            case "Хорошо":
                                normalize = 0.75;
                                break;

                            case "Удовлетворительно":
                                normalize = 0.5;
                                break;

                            case "Неудовлетворительно":
                                normalize = 0.25;
                                break;

                            default:
                                normalize = 0;
                                break;
                            }

                            gradesTasks.Add(task, normalize);
                            break;
                        }
                    }
                    if (!gradesTasks.ContainsKey(task))
                    {
                        gradesTasks.Add(task, 0);
                    }
                }
                #endregion

                Report result = new Report
                {
                    Link = CreatePDF(student, gradesTests, gradesTasks, percent, report.Review, activities)
                };
                var oldReport = student.Report;
                student.Report = result;
                userService.Edit(student);
                if (oldReport != null && oldReport.ID != 0)
                {
                    reportService.Delete(oldReport);
                }
                return(RedirectToAction("Index"));
            }
            ViewBag.ID = new SelectList(userService.GetAll().Where(x => x.Role.Value.Equals("Студент")), "ID", "Surname");
            return(View(report));
        }