public ActionResult PTOReportPartial([ModelBinder(typeof(DevExpressEditorsBinder))] ProductionLedgerReport item,
                                             [ModelBinder(typeof(DevExpressEditorsBinder))] PTOReportParams reportParams)
        {
            if (item.isSubmitted != true)
            {
                return(base.PartialView(string.Format(PTOReportPath, nameof(PTOReportPartial)), new Helpers.PTOReport()));
            }

            if (reportParams != null)
            {
                if (reportParams.Year > 0 && item.Month > 0)
                {
                    var date = new DateTime(reportParams.Year, item.Month, 1);
                    item.DateFrom = date;
                    item.DateTo   = date.AddMonths(1).AddDays(-1);
                }
                else
                {
                    var date = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                    item.DateFrom = date;
                    item.DateTo   = date.AddMonths(1).AddDays(-1);
                }
            }

            var _permittee = unitOfWork.PermiteesRepo.Fetch();

            if (reportParams.PermitteeId > 0)
            {
                _permittee = _permittee.Where(x => x.Id == reportParams.PermitteeId);
            }
            if (reportParams.PermitteeTypeId > 0)
            {
                _permittee = _permittee.Where(x => x.PermiteeTypeId == reportParams.PermitteeTypeId);
            }



            List <SummaryProductionReport> reports = new List <SummaryProductionReport>();
            List <Permitees> permittees            = new List <Permitees>();
            var sag = unitOfWork.SagsRepo.Fetch();

            foreach (var permittee in _permittee)
            {
                var productionLedgerReports = new List <ProductionLedgerReport>();
                foreach (var i in permittee.Quarries)
                {
                    var r = new ProductionLedgerReport()
                    {
                        OrdinaryEarth = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                         m.PermiteeId == permittee.Id &&
                                                                         (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                         m.Quarries.Id == i.Id && m.SagId == 1)
                                        .Sum(m => m.Quantity) ?? 0,
                        OrdinaryEarthAmount = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                               m.PermiteeId == permittee.Id &&
                                                                               (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                               m.Quarries.Id == i.Id && m.SagId == 1)
                                              .Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Mixed = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                 m.PermiteeId == permittee.Id &&
                                                                 (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                 m.Quarries.Id == i.Id && m.SagId == 4)
                                .Sum(m => m.Quantity) ?? 0,
                        MixedAmount = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                       m.PermiteeId == permittee.Id &&
                                                                       (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                       m.Quarries.Id == i.Id && m.SagId == 4)
                                      .Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Fined = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                 m.PermiteeId == permittee.Id &&
                                                                 (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                 m.Quarries.Id == i.Id && m.SagId == 5)
                                .Sum(m => m.Quantity) ?? 0,
                        FinedAmount = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                       m.PermiteeId == permittee.Id &&
                                                                       (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                       m.Quarries.Id == i.Id && m.SagId == 5)
                                      .Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Coarse = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                  m.PermiteeId == permittee.Id &&
                                                                  (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                  m.Quarries.Id == i.Id && m.SagId == 8)
                                 .Sum(m => m.Quantity) ?? 0,
                        CoarseAmount = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                        m.PermiteeId == permittee.Id &&
                                                                        (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                        m.Quarries.Id == i.Id && m.SagId == 8).Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Boulders = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                    m.PermiteeId == permittee.Id &&
                                                                    (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                    m.Quarries.Id == i.Id && m.SagId == 6)
                                   .Sum(m => m.Quantity) ?? 0,
                        BouldersAmount = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                          m.PermiteeId == permittee.Id &&
                                                                          (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                          m.Quarries.Id == i.Id && m.SagId == 6)
                                         .Sum(m => m.Quantity) ?? 0,
                        Crushed = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                   m.PermiteeId == permittee.Id &&
                                                                   (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                   m.Quarries.Id == i.Id && m.SagId == 7)
                                  .Sum(m => m.Quantity) ?? 0,
                        CrushedAmount = unitOfWork.ProductionsRepo.Fetch(m =>
                                                                         m.PermiteeId == permittee.Id &&
                                                                         (m.ProductionDate >= item.DateFrom && m.ProductionDate <= item.DateTo) &&
                                                                         m.Quarries.Id == i.Id && m.SagId == 7)
                                        .Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,


                        Permitees  = permittee,
                        Quarries   = i,
                        ReportDate = DateTime.Now.ToLongDateString()
                    };


                    productionLedgerReports.Add(r);
                }

                permittee.ProductionLedgerReports = productionLedgerReports;
                permittees.Add(permittee);
            }

            reports.Add(new SummaryProductionReport()
            {
                Permitees = permittees
            });

            Helpers.PTOReport summary = new Helpers.PTOReport()
            {
                DataSource = reports
            };
            return(PartialView($"/views/reports/birreport/{nameof(BIRReportPartial)}.cshtml", summary));
        }
Exemple #2
0
        public ActionResult ProductionLedgerGridViewPartial([ModelBinder(typeof(DevExpressEditorsBinder))] ProductionLedgerReport item)
        {
            var permittee = unitOfWork.PermiteesRepo.Fetch(includeProperties: "Productions");

            if (item.PermitteeId != 0)
            {
                permittee = permittee.Where(x => x.Id == item.PermitteeId);
            }
            var datefrom = new DateTime(item.Year.ToInt(), item.Month.ToInt(), 1);
            var dateTo   = new DateTime(item.Year.ToInt(), item.Month.ToInt(), DateTime.DaysInMonth(item.Year.ToInt(), item.Month.ToInt())).AddHours(23);

            var res = permittee.ToList().Where(x => x.Productions.Any(m => (m.DateCreated >= datefrom && m.DateCreated <= dateTo)));

            foreach (var i in res)
            {
                i.Productions = unitOfWork.ProductionsRepo.Get(m => (m.DateCreated >= datefrom && m.DateCreated <= dateTo) && m.PermiteeId == i.Id).ToList();
            }
            var rpt = new rptDetailProductionPivot()
            {
                DataSource = res
            };

            foreach (var i in res)
            {
                List <ProductionLedgerReport> reports = new List <ProductionLedgerReport>();

                foreach (var quarry in i.Quarries)
                {
                    var transaction = unitOfWork.TransactionSagsRepo.Fetch(m =>
                                                                           m.Transactions.PermiteeId == i.Id).Where(x => x.Transactions.Permitees.Quarries.Any(m => m.Id == quarry.Id));
                    var r = new ProductionLedgerReport()
                    {
                        Boulders                      = transaction.Where(x => x.SagId == 6).Sum(m => m.Quantity) ?? 0,
                        BouldersAmount                = transaction.Where(x => x.SagId == 6).Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Coarse                        = transaction.Where(x => x.SagId == 8).Sum(m => m.Quantity) ?? 0,
                        CoarseAmount                  = transaction.Where(x => x.SagId == 8).Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Crushed                       = transaction.Where(x => x.SagId == 7).Sum(m => m.Quantity) ?? 0,
                        CrushedAmount                 = transaction.Where(x => x.SagId == 7).Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Fined                         = transaction.Where(x => x.SagId == 5).Sum(m => m.Quantity) ?? 0,
                        FinedAmount                   = transaction.Where(x => x.SagId == 5).Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        Mixed                         = transaction.Where(x => x.SagId == 4).Sum(m => m.Quantity) ?? 0,
                        MixedAmount                   = transaction.Where(x => x.SagId == 4).Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        OrdinaryEarth                 = transaction.Where(x => x.SagId == 1).Sum(m => m.Quantity) ?? 0,
                        OrdinaryEarthAmount           = transaction.Where(x => x.SagId == 1).Sum(m => m.Quantity * m.Sags.UnitCost) ?? 0,
                        ProductionBoulders            = i.Productions.Where(x => x.SagId == 6 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity) ?? 0,
                        ProductionBouldersAmount      = i.Productions.Where(x => x.SagId == 6 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity * x.Sags.UnitCost) ?? 0,
                        ProductionCoarse              = i.Productions.Where(x => x.SagId == 8 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity) ?? 0,
                        ProductionCoarseAmount        = i.Productions.Where(x => x.SagId == 8 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity * x.Sags.UnitCost) ?? 0,
                        ProductionCrushed             = i.Productions.Where(x => x.SagId == 7 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity) ?? 0,
                        ProductionCrushedAmount       = i.Productions.Where(x => x.SagId == 7 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity * x.Sags.UnitCost) ?? 0,
                        ProductionMixed               = i.Productions.Where(x => x.SagId == 4 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity) ?? 0,
                        ProductionMixedAmount         = i.Productions.Where(x => x.SagId == 4 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity * x.Sags.UnitCost) ?? 0,
                        ProductionOrdinaryEarth       = i.Productions.Where(x => x.SagId == 1 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity) ?? 0,
                        ProductionOrdinaryEarthAmount = i.Productions.Where(x => x.SagId == 1 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity * x.Sags.UnitCost) ?? 0,
                        ProductionFinedAmount         = i.Productions.Where(x => x.SagId == 5 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity * x.Sags.UnitCost),
                        ProductionFined               = i.Productions.Where(x => x.SagId == 5 && x.QuarriesId == quarry.Id).Sum(x => x.Quantity) ?? 0,
                        Quarries                      = quarry,
                        Permitees                     = i,
                    };
                    reports.Add(r);
                }

                i.ProductionLedgerReports = reports;
            }


            /*   var OrdinaryEarth = reports.Sum(m => m.ProductionOrdinaryEarth).ToInt();
             *     var Mixed = reports.Sum(m => m.ProductionMixed).ToInt();
             *     var Fined = reports.Sum(m => m.ProductionFined).ToInt();
             *     var Coarse = reports.Sum(m => m.ProductionCoarse).ToInt();
             *     var Boulders = reports.Sum(m => m.ProductionBoulders).ToInt();
             *     var Crushed = reports.Sum(m => m.ProductionCrushed).ToInt();
             *
             *     //reports.ForEach(x =>
             *     //{
             *     //    x.OrdinaryEarth = x.OrdinaryEarth.ToInt() - OrdinaryEarth;
             *     //    x.Mixed = x.Mixed.ToInt() - Mixed;
             *     //    x.Fined = x.Fined.ToInt() - Fined;
             *     //    x.Coarse = x.Coarse.ToInt() - Coarse;
             *     //    x.Boulders = x.Boulders.ToInt() - Boulders;
             *     //    x.Crushed = x.Crushed.ToInt() - Crushed;
             *     //});
             *     permittee.ProductionLedgerReports = reports;*/



            //    Session["ProductionLedgerReport"] = reports;

            SummaryLedgerReportByRange summaryLedgerReport = new SummaryLedgerReportByRange()
            {
                DataSource = new List <SummaryProductionReport>()
                {
                    new SummaryProductionReport()
                    {
                        Permitees = res.ToList(), Month = item.Month, Year = item.Year
                    }
                }
            };

            return(PartialView("_ProductionLedgerGridViewPartial", summaryLedgerReport));
        }
 public ActionResult PTOReport([ModelBinder(typeof(DevExpressEditorsBinder))] ProductionLedgerReport item)
 {
     return(View(string.Format(PTOReportPath, nameof(PTOReport))));
 }