public ActionResult CboQuarriesInPermittee([ModelBinder(typeof(DevExpressEditorsBinder))] AccountingReportViewModel item) { return(PartialView(item)); }
public ActionResult AccountingReportPartial([ModelBinder(typeof(DevExpressEditorsBinder))] AccountingReportViewModel item) { var dateFrom = new DateTime(item.Year, item.Month, 1); var dateTo = new DateTime(item.Year, item.Month, DateTime.DaysInMonth(item.Year, item.Month)).AddHours(23).AddMinutes(59).AddSeconds(59); List <AccountingReportViewModel> accountingReportViewModels = new List <AccountingReportViewModel>(); UnitOfWork unitOfWork = new UnitOfWork(); var permittees = unitOfWork.PermiteesRepo.Fetch(includeProperties: "Productions"); var res = permittees.Where(x => x.Productions.Any(m => (m.DateCreated >= dateFrom && m.DateCreated <= dateTo))); var type = item.PermitteeType.Split(',')?.Select(x => new { Id = x.ToInt() }).Select(x => x.Id).ToList(); res = res.Where(x => type.Contains(x.PermiteeTypeId ?? 0)); if (item.PermitteeId != 0) { res = res.Where(x => x.Id == item.PermitteeId); } decimal prodTotal = 0; foreach (var permittee in res.ToList()) { permittee.Productions = unitOfWork.ProductionsRepo.Get(m => (m.DateCreated >= dateFrom && m.DateCreated <= dateTo) && m.Transactions.PermiteeId == permittee.Id).ToList(); // var totalExtraction = permittee.Productions.Sum(x => (x.Quantity ?? 0) * (x.Sags.UnitCost ?? 0)); //for accounting var transaction = unitOfWork.TransactionsRepo.Fetch(m => m.Productions.Any(x => x.DateCreated >= dateFrom && x.DateCreated <= dateTo) && m.PermiteeId == permittee.Id); foreach (var t in transaction.ToList()) { var quarry = unitOfWork.ProductionsRepo.Fetch() .Where(x => (x.DateCreated >= dateFrom && x.DateCreated <= dateTo) && x.Transactions.PermiteeId == permittee.Id && x.TransactionId == t.Id); if (item.QuarryId != 0) { quarry = quarry.Where(x => x.Id == item.QuarryId); } var _quarry = quarry.GroupBy(x => x.QuarriesId).ToList(); foreach (var q in _quarry) { var quarryId = q.Key?.ToInt(); var accountingReportViewModel = new AccountingReportViewModel() { Permittee = t.Permitees, OfficialReceipt = t.OfficialReceipt, Amount = t.SagSubTotal.ToDecimal() }; var prod = unitOfWork.ProductionsRepo.Fetch() .Where(x => (x.DateCreated >= dateFrom && x.DateCreated <= dateTo) && x.Transactions.PermiteeId == permittee.Id && x.QuarriesId == quarryId && x.TransactionId == t.Id); accountingReportViewModel.Extraction = prod?.Sum(x => (x.Quantity ?? 0) * (x.Sags.UnitCost ?? 0)) ?? 0; accountingReportViewModel.Quarries = unitOfWork.QuarriesRepo.Find(m => m.Id == quarryId); accountingReportViewModels.Add(accountingReportViewModel); } } //x.QuarriesId == quarryId && x.TransactionId == t.Id).ToList(); } rptAccountingReports reports = new rptAccountingReports() { DataSource = accountingReportViewModels }; return(PartialView(reports)); }