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); }
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")); }
// 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)); }
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); } }
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)); }