コード例 #1
0
        public async Task <IActionResult> GenerateReportPopup(Guid workId)
        {
            var work = await _repo.GetWork(workId);

            ViewBag.WorkId = workId;
            var vm = new GenerateReportViewModel(work);

            return(View(vm));
        }
コード例 #2
0
ファイル: ReportController.cs プロジェクト: filar7/Ether
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
ファイル: EtherApiClient.cs プロジェクト: filar7/Ether
        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);
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        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));
        }
コード例 #8
0
ファイル: EtherClient.cs プロジェクト: filar7/Ether
 public Task <Guid> GenerateReport(GenerateReportViewModel model)
 {
     return(HttpPost <Guid>($"{GetPathFor<GenerateReportViewModel>()}/Generate", model));
 }
コード例 #9
0
ファイル: ReportController.cs プロジェクト: filar7/Ether
        private Task <Guid> GenerateReport(Type generateCommandType, GenerateReportViewModel requestModel)
        {
            var request = _mapper.Map(requestModel, typeof(GenerateReportViewModel), generateCommandType) as GenerateReportCommand;

            return(_mediator.Execute <Guid>(request));
        }
コード例 #10
0
 private Task HandleGenerate(IDispatcher dispatcher, GenerateReportViewModel reportRequest)
 {
     return(dispatcher.Dispatch <GenerateReportAction, GenerateReportViewModel>(reportRequest));
 }
コード例 #11
0
 public GenerateReportFormState(GenerateReportViewModel form, IEnumerable <ReporterDescriptorViewModel> reportTypes)
 {
     Form        = form;
     ReportTypes = reportTypes;
 }
コード例 #12
0
        // 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));
        }
コード例 #13
0
        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));
        }