public async Task <IActionResult> GenerateReportPopup(Guid workId) { var work = await _repo.GetWork(workId); ViewBag.WorkId = workId; var vm = new GenerateReportViewModel(work); return(View(vm)); }
public async Task <IActionResult> Generate(GenerateReportViewModel requestModel) { var id = Guid.Empty; var reporter = _reporters.FirstOrDefault(r => string.Equals(r.UniqueName, requestModel.ReportType, StringComparison.OrdinalIgnoreCase)); if (reporter == null) { return(BadRequest($"Reporter of type {requestModel.ReportType} is not supported.")); } id = await GenerateReport(reporter.CommandType, requestModel); return(Ok(id)); }
public ActionResult Index(GenerateReportViewModel grvm) { GenerateReportModel grm = new GenerateReportModel(); var getRows = db.Employees_Take_Leaves.Where(s => s.financial_year_start == grvm.financial_year_start).Where(s => s.financial_year_end == grvm.financial_year_end).Where(s => s.leave_id == grvm.leave_id); var leaveName = db.Leaves.FirstOrDefault(s => s.id == grvm.leave_id).name; grm.leave_name = leaveName; grm.leave_id = grvm.leave_id; grm.financial_year_end = grvm.financial_year_end; grm.financial_year_start = grvm.financial_year_start; return(RedirectToAction("GetReports", "GenerateReport", grm)); }
public async Task <WorkItemsReportViewModel> GenerateWorkItemsReport(Guid profileId) { var end = DateTime.Today.AddDays(1).AddSeconds(-1); var reportRequest = new GenerateReportViewModel { Profile = profileId, ReportType = "WorkitemsReporter", Start = end.AddDays(-7), End = end }; var reportGuid = await HttpPost <Guid>($"{_appUrl}report/Generate", reportRequest) .ConfigureAwait(false); var report = await HttpGet <WorkItemsReportViewModel>($"{_appUrl}report/GetById?id={reportGuid}") .ConfigureAwait(false); return(report); }
public ActionResult Report(GenerateReportViewModel introModel) { if (ModelState.IsValid) { if (introModel.LastDate >= introModel.FirstDate) { IEnumerable <IGrouping <int, Result> > results; if (introModel.Department.Name == "все") { results = dataManager.Results.GetResults().Where( x => x.ResultDate >= introModel.FirstDate && x.ResultDate <= introModel.LastDate). GroupBy(x => x.IndicatorId); } else { results = dataManager.Results.GetResultsByDepartment(introModel.Department.Name).Where( x => x.ResultDate >= introModel.FirstDate && x.ResultDate <= introModel.LastDate). GroupBy(x => x.IndicatorId); } var outModel = new WindowReportViewModel { GenerateReport = introModel }; var countResults = results.Select(resultGroup => new CountOfResultsViewModel { Indicator = dataManager.Indicators.GetIndicatorById (resultGroup.Key).Name, Count = resultGroup.Count() }).ToList(); outModel.CountOfResults = countResults; return(View(outModel)); } ModelState.AddModelError("", "Дата начала отчетного периода более поздняя, чем дата конца отчетного периода"); } ViewBag.Departments = DepartmentRepository.GetDepartments(); return(View("GenerateReport", introModel)); }
public async Task <IActionResult> Generate([FromBody] GenerateReportViewModel generateReport) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var games = await gameConverter.ConvertFromPGN(generateReport.PGN); for (var i = 0; i < games.Count(); i++) { games.ElementAt(i).UserColorId = generateReport.UserColors.ElementAt(i); } var report = new Report { Description = generateReport.Description, PGN = generateReport.PGN, UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value, CreationDate = DateTime.Now, Games = games.ToList() }; await chessMetersContext.Reports.AddAsync(report); await chessMetersContext.SaveChangesAsync(); var data = new Dictionary <string, int> { { "id", report.Id } }; var jobData = new JobDataMap(data); var scheduler = await schedulerFactory.GetScheduler(); await scheduler.TriggerJob(new JobKey(typeof(ReportGeneratorJob).Name), jobData); return(Ok()); }
public async Task <IActionResult> DownloadReportFile(Guid?workId) { var work = await _repo.GetWork(workId); var vm = new GenerateReportViewModel(work); string str = "Invoice date,Job number,Drawing number,Tooling amount,Tooling description,Powder amount,Powder description"; for (int i = 0; i < vm.WorkItemReports.Count; i++) { str += "\n" + vm.WorkItemReports[i].InvoiceDateStr; str += "," + vm.EndlasNumber; str += "," + vm.WorkItemReports[i].WorkItem.StaticPartInfo.DrawingNumber; str += "," + vm.WorkItemReports[i].TotalCostFromTools.ToString("C") + ","; foreach (var tool in vm.WorkItemReports[i].UniqueToolReports) { str += "(Qty. " + tool.TotalToolsUsed + ") " + tool.ToolDescription + ";"; } str += "," + vm.WorkItemReports[i].TotalCostFromPowder.ToString("C") + ","; foreach (var pow in vm.WorkItemReports[i].UniquePowderReports) { str += pow.TotalPowderWeight.ToString() + "lbs " + pow.PowderBottle.StaticPowderInfo.EndlasDescription + " Lot# " + pow.PowderBottle.LotNumber + ";"; } } string fileName = work.EndlasNumber + "_report.txt"; Response.ContentType = "text/plain"; Response.Headers.Add("content-disposition", "attachment;filename=" + fileName); byte[] bytes = Encoding.UTF8.GetBytes(str); var ms = new MemoryStream(bytes); if (ms == null) { return(NotFound()); } return(File(ms, "text/plain", fileName)); }
public Task <Guid> GenerateReport(GenerateReportViewModel model) { return(HttpPost <Guid>($"{GetPathFor<GenerateReportViewModel>()}/Generate", model)); }
private Task <Guid> GenerateReport(Type generateCommandType, GenerateReportViewModel requestModel) { var request = _mapper.Map(requestModel, typeof(GenerateReportViewModel), generateCommandType) as GenerateReportCommand; return(_mediator.Execute <Guid>(request)); }
private Task HandleGenerate(IDispatcher dispatcher, GenerateReportViewModel reportRequest) { return(dispatcher.Dispatch <GenerateReportAction, GenerateReportViewModel>(reportRequest)); }
public GenerateReportFormState(GenerateReportViewModel form, IEnumerable <ReporterDescriptorViewModel> reportTypes) { Form = form; ReportTypes = reportTypes; }
// GET: GenerateReport public ActionResult GenerateDashboard() { LogicDB context = new LogicDB(); String userId = User.Identity.GetUserId(); String DID = context.AspNetUsers.Where(x => x.Id == userId).First().DepartmentId; #region Build VM var grvm = GenerateReportViewModel.InitGRVM(DID); #endregion #region Disbursement by DeptID if (DID == "STAT") { var gendeptRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null). GroupBy(x => new { x.Disbursement.DepartmentId }). Select(y => new { DeptID = y.Key.DepartmentId, TotalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); foreach (var i in gendeptRpt) { grvm.deptDP.datapoint.Add(new StringDoubleDPViewModel(i.DeptID, (double)i.TotalAmt)); } } else { var gendeptRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Disbursement.DepartmentId == DID). GroupBy(x => new { x.Disbursement.DepartmentId }). Select(y => new { DeptID = y.Key.DepartmentId, TotalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); foreach (var i in gendeptRpt) { grvm.deptDP.datapoint.Add(new StringDoubleDPViewModel(i.DeptID, (double)i.TotalAmt)); } } #endregion #region Disbursement by Stationery Category if (DID == "STAT") { var genstatRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null). GroupBy(y => new { y.Stationery.Category }). Select(z => new { itemCat = z.Key.Category, totalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in genstatRpt) { grvm.statDP.datapoint.Add(new StringDoubleDPViewModel(i.itemCat, (double)i.totalAmt)); } } else { var genstatRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Disbursement.DepartmentId == DID). GroupBy(y => new { y.Stationery.Category }). Select(z => new { itemCat = z.Key.Category, totalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in genstatRpt) { grvm.statDP.datapoint.Add(new StringDoubleDPViewModel(i.itemCat, (double)i.totalAmt)); } } #endregion #region Disbursements by entity over time int r = 0; int r1 = 0; foreach (var i in grvm.selectentcategory) { if (DID == "STAT") { var etimeRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Disbursement.DepartmentId == i). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.Stationery.Category, x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { catID = y.Key.Category, dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.entdata.Add(new ChartViewModel(i, i, new List <StringDoubleDPViewModel>())); foreach (var q in etimeRpt) { grvm.entdata[r].datapoint.Add(new StringDoubleDPViewModel(q.dateval, (double)q.totalAmt)); } r++; } else { var timeRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Stationery.Category == i && x.Disbursement.DepartmentId == DID). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.Stationery.Category, x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { catID = y.Key.Category, dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.entdata.Add(new ChartViewModel(i, i, new List <StringDoubleDPViewModel>())); foreach (var q in timeRpt) { grvm.entdata[r].datapoint.Add(new StringDoubleDPViewModel(q.dateval, (double)q.totalAmt)); } r++; } } #endregion #region Disbursements by stationery over time foreach (var i in grvm.selectstatcategory) { if (DID == "STAT") { var timeRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Stationery.Category == i). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.Disbursement.DepartmentId, x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { deptID = y.Key.DepartmentId, dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.data.Add(new ChartViewModel(i, i, new List <StringDoubleDPViewModel>())); foreach (var q in timeRpt) { grvm.data[r1].datapoint.Add(new StringDoubleDPViewModel(q.dateval, (double)q.totalAmt)); } r1++; } else { var timeRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Stationery.Category == i && x.Disbursement.DepartmentId == DID). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.Disbursement.DepartmentId, x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { deptID = y.Key.DepartmentId, dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.data.Add(new ChartViewModel(i, i, new List <StringDoubleDPViewModel>())); foreach (var q in timeRpt) { grvm.data[r1].datapoint.Add(new StringDoubleDPViewModel(q.dateval, (double)q.totalAmt)); } r1++; } } #endregion return(View(grvm)); }
public ActionResult GenerateDashboard(DateTime?fromDateTP, DateTime?toDateTP, string module, List <string> selstatcat, List <string> seldeptcat, List <string> seleecat, List <string> selsscat) { LogicDB context = new LogicDB(); String userId = User.Identity.GetUserId(); String DID = context.AspNetUsers.Where(x => x.Id == userId).First().DepartmentId; int r = 0; int r1 = 0; #region Build VM var grvm = GenerateReportViewModel.InitGRVM(DID, fromDateTP, toDateTP, module, selstatcat, seldeptcat, seleecat, selsscat); #endregion if (module == "Disbursements") { #region Disbursement by DeptId var gendeptRpt = context.TransactionDetail. Where(x => x.Disbursement.AcknowledgedBy != null && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId) && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP). GroupBy(y => new { y.Disbursement.DepartmentId }). Select(z => new { DeptID = z.Key.DepartmentId, TotalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in gendeptRpt) { grvm.deptDP.datapoint.Add(new StringDoubleDPViewModel(i.DeptID, (double)i.TotalAmt)); } #endregion #region Disbursement by Stationery Category var genstatRpt = context.TransactionDetail. Where(x => x.Disbursement.AcknowledgedBy != null && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId) && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP). GroupBy(y => new { y.Stationery.Category }). Select(z => new { itemCat = z.Key.Category, totalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in genstatRpt) { grvm.statDP.datapoint.Add(new StringDoubleDPViewModel(i.itemCat, (double)i.totalAmt)); } #endregion #region Disbursements by entity over time foreach (var i in grvm.selectentcategory) { var etimeRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Disbursement.DepartmentId == i && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId) && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.Stationery.Category, x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { catID = y.Key.Category, dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.entdata.Add(new ChartViewModel(i, i, new List <StringDoubleDPViewModel>())); foreach (var j in etimeRpt) { grvm.entdata[r1].datapoint.Add(new StringDoubleDPViewModel(j.dateval, (double)j.totalAmt)); } r1++; } #endregion #region Disbursements by stationery over time foreach (var i in grvm.selectstatcategory) { var timeRpt = context.TransactionDetail.Where(x => x.Disbursement.AcknowledgedBy != null && x.Stationery.Category == i && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId) && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.Disbursement.DepartmentId, x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { deptID = y.Key.DepartmentId, dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.data.Add(new ChartViewModel(i, i, new List <StringDoubleDPViewModel>())); foreach (var j in timeRpt) { grvm.data[r].datapoint.Add(new StringDoubleDPViewModel(j.dateval, (double)j.totalAmt)); } r++; } #endregion } if (module == "Requests") { #region Requests by Dept var gendeptRpt = context.TransactionDetail. Where(x => x.StationeryRequest.Status != "Pending Approval" && x.StationeryRequest.Status != "Rejected" && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRequest.DepartmentId)). GroupBy(y => new { y.StationeryRequest.DepartmentId }). Select(z => new { DeptID = z.Key.DepartmentId, TotalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in gendeptRpt) { grvm.deptDP.datapoint.Add(new StringDoubleDPViewModel(i.DeptID, (double)i.TotalAmt)); } #endregion #region Requests by Stationery Category var genstatRpt = context.TransactionDetail. Where(x => x.StationeryRequest.Status != "Pending Approval" && x.StationeryRequest.Status != "Rejected" && x.StationeryRequest.RequestDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRequest.DepartmentId)). GroupBy(y => new { y.Stationery.Category }). Select(z => new { itemCat = z.Key.Category, totalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in genstatRpt) { grvm.statDP.datapoint.Add(new StringDoubleDPViewModel(i.itemCat, (double)i.totalAmt)); } #endregion #region Requests by entity over time foreach (var j in grvm.selectentcategory) { var timeRpt = context.TransactionDetail.Where(x => x.StationeryRequest.Status != "Pending Approval" && x.StationeryRequest.Status != "Rejected" && x.StationeryRequest.DepartmentId == j && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRequest.DepartmentId)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.entdata.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in timeRpt) { grvm.entdata[r1].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r1++; } #endregion #region Requests by stationery over time foreach (var j in grvm.selectstatcategory) { var timeRpt = context.TransactionDetail.Where(x => x.StationeryRequest.Status != "Pending Approval" && x.StationeryRequest.Status != "Rejected" && x.Stationery.Category == j && x.StationeryRequest.RequestDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRequest.DepartmentId)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.data.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in timeRpt) { grvm.data[r].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r++; } #endregion } if (module == "ChargeBack") { #region Charge back by DeptId var gendeptRpt = context.TransactionDetail. Where(x => x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId)). GroupBy(y => new { y.Disbursement.DepartmentId }). Select(z => new { DeptID = z.Key.DepartmentId, TotalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in gendeptRpt) { grvm.deptDP.datapoint.Add(new StringDoubleDPViewModel(i.DeptID, (double)i.TotalAmt)); } #endregion #region Charge back by Stationery Category var genstatRpt = context.TransactionDetail. Where(x => x.Disbursement.DepartmentId != null && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId)). GroupBy(y => new { y.Stationery.Category }). Select(z => new { itemCat = z.Key.Category, totalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in genstatRpt) { grvm.statDP.datapoint.Add(new StringDoubleDPViewModel(i.itemCat, (double)i.totalAmt)); } #endregion #region Charge back by entity over time foreach (var j in grvm.selectentcategory) { var etimeRpt = context.TransactionDetail.Where(x => x.Stationery.Category != null && x.Disbursement.DepartmentId == j && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.entdata.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in etimeRpt) { grvm.entdata[r1].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r1++; } #endregion #region Charge back by stationery over time foreach (var j in grvm.selectstatcategory) { var timeRpt = context.TransactionDetail.Where(x => x.Disbursement.DepartmentId != null && x.Stationery.Category == j && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.Disbursement.DepartmentId)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.data.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in timeRpt) { grvm.data[r].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r++; } #endregion } if (DID == "STAT") { if (module == "Purchases") { #region Purchases by SupplierID var gendeptRpt = context.TransactionDetail. Where(x => x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.PurchaseOrder.SupplierId)). GroupBy(y => new { y.PurchaseOrder.SupplierId }). Select(z => new { DeptID = z.Key.SupplierId, TotalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in gendeptRpt) { grvm.deptDP.datapoint.Add(new StringDoubleDPViewModel(i.DeptID, (double)i.TotalAmt)); } #endregion #region Purchases by Stationery Category var genstatRpt = context.TransactionDetail. Where(x => x.PurchaseOrder.Status == "Completed" && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.PurchaseOrder.SupplierId)). GroupBy(y => new { y.Stationery.Category }). Select(z => new { itemCat = z.Key.Category, totalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in genstatRpt) { grvm.statDP.datapoint.Add(new StringDoubleDPViewModel(i.itemCat, (double)i.totalAmt)); } #endregion #region Purchases by entity over time foreach (var j in grvm.selectentcategory) { var etimeRpt = context.TransactionDetail.Where(x => x.PurchaseOrder.Status == "Completed" && x.PurchaseOrder.SupplierId == j && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.PurchaseOrder.SupplierId)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.entdata.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in etimeRpt) { grvm.entdata[r1].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r1++; } #endregion #region Purchases by stationery over time foreach (var j in grvm.selectstatcategory) { var timeRpt = context.TransactionDetail.Where(x => x.PurchaseOrder.Status == "Completed" && x.Stationery.Category == j && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.PurchaseOrder.SupplierId)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.data.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in timeRpt) { grvm.data[r].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r++; } #endregion } if (module == "Retrieval") { #region Retrieval by Employee var gendeptRpt = context.TransactionDetail. Where(x => x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRetrieval.AspNetUsers.EmployeeName)). GroupBy(y => new { y.StationeryRetrieval.AspNetUsers.EmployeeName }). Select(z => new { DeptID = z.Key.EmployeeName, TotalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in gendeptRpt) { grvm.deptDP.datapoint.Add(new StringDoubleDPViewModel(i.DeptID, (double)i.TotalAmt)); } #endregion #region Retrieval by Stationery Category var genstatRpt = context.TransactionDetail. Where(x => x.StationeryRetrieval.RetrievalId != null && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRetrieval.AspNetUsers.EmployeeName)). GroupBy(y => new { y.Stationery.Category }). Select(z => new { itemCat = z.Key.Category, totalAmt = z.Sum(a => (a.Quantity * a.UnitPrice)) }); foreach (var i in genstatRpt) { grvm.statDP.datapoint.Add(new StringDoubleDPViewModel(i.itemCat, (double)i.totalAmt)); } #endregion #region Retrieval by entity over time foreach (var j in grvm.selectentcategory) { var etimeRpt = context.TransactionDetail.Where(x => x.StationeryRetrieval.RetrievalId != null && x.StationeryRetrieval.AspNetUsers.EmployeeName == j && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRetrieval.AspNetUsers.EmployeeName)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.entdata.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in etimeRpt) { grvm.entdata[r1].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r1++; } #endregion #region Retrieval by stationery over time foreach (var j in grvm.selectstatcategory) { var timeRpt = context.TransactionDetail.Where(x => x.StationeryRetrieval.RetrievalId != null && x.Stationery.Category == j && x.TransactionDate >= fromDateTP && x.TransactionDate <= toDateTP && grvm.selectstatcategory.Any(id => id == x.Stationery.Category) && grvm.selectentcategory.Any(id => id == x.StationeryRetrieval.AspNetUsers.EmployeeName)). OrderBy(x => x.TransactionDate). GroupBy(x => new { x.TransactionDate.Year, x.TransactionDate.Month }).ToArray(). Select(y => new { dateval = string.Format("{0} {1}", Enum.Parse(typeof(EnumMonth), y.Key.Month.ToString()), y.Key.Year), totalAmt = y.Sum(z => (z.Quantity * z.UnitPrice)) }); grvm.data.Add(new ChartViewModel(j, j, new List <StringDoubleDPViewModel>())); foreach (var i in timeRpt) { grvm.data[r].datapoint.Add(new StringDoubleDPViewModel(i.dateval, (double)i.totalAmt)); } r++; } } #endregion } return(View(grvm)); }