public JsonResult GetBranchFactorReport(CustomerFactorViewModel model) { Response response; try { using (var db = new KiaGalleryContext()) { var query = db.CustomerFactor.Select(x => x); var list = query.GroupBy(x => x.Branch).Select(x => new CustomerFactorViewModel { branchName = x.Key.Name, count = x.Count(), returnCount = x.Where(y => y.PurchaseType == PurchaseType.Return).Count(), branchType = x.Key.BranchType, }).OrderBy(x => x.branchType).ToList(); var yesterdayList = query.Where(x => x.Date < DateTime.Today && x.Date >= DbFunctions.AddDays(DateTime.Today, -1)).GroupBy(x => x.Branch).Select(x => new CustomerFactorViewModel { branchName = x.Key.Name, count = x.Count(), returnCount = x.Where(y => y.PurchaseType == PurchaseType.Return).Count(), branchType = x.Key.BranchType, }).OrderBy(x => x.branchType).ToList(); response = new Response() { status = 200, data = new { list = list, yesterdayList = yesterdayList } }; } } catch (Exception ex) { response = Core.GetExceptionResponse(ex); } return(Json(response, JsonRequestBehavior.AllowGet)); }
public JsonResult SearchDetail(CustomerFactorViewModel model) { Response response; int dataCount; var currentUser = GetAuthenticatedUser(); try { long priceSum = 0; var countSum = 0; decimal?branchWeightSum = 0; using (var db = new KiaGalleryContext()) { var query = db.CustomerFactor.Select(x => x); if (User.IsInRole("admin")) { priceSum = query.Where(x => x.PurchaseType == PurchaseType.Buy).Sum(x => x.FactorPrice) - ((long?)query.Where(y => y.PurchaseType == PurchaseType.Return).Sum(y => y.FactorPrice) ?? 0); countSum = query.Where(x => x.PurchaseType == PurchaseType.Buy).Count() - query.Where(y => y.PurchaseType == PurchaseType.Return).Count(); branchWeightSum = query.Sum(x => x.FactorWeight); } else { branchWeightSum = query.Where(x => DbFunctions.TruncateTime(x.Date) == DateTime.Today && x.BranchId == currentUser.BranchId).Sum(x => x.FactorWeight) ?? 0; } if (!User.IsInRole("admin") && !User.IsInRole("loyalCustomer") && currentUser.BranchType == BranchType.Branch) { query = query.Where(x => x.BranchId == currentUser.BranchId); } if (!User.IsInRole("admin") && currentUser.BranchType == BranchType.Solicitorship) { query = query.Where(x => x.BranchId == currentUser.BranchId); } if (model.id != null && model.id > 0) { query = query.Where(x => x.CustomerLoyality.Id == model.id); } if (!string.IsNullOrEmpty(model.term)) { query = query.Where(x => x.CustomerLoyality.PhoneNumber.Contains(model.term.Trim()) || x.CustomerLoyality.FirstName.Contains(model.term.Trim()) || x.CustomerLoyality.LastName.Contains(model.term.Trim()) || x.FactorNumber.Contains(model.term.Trim())); } dataCount = query.Count(); query = query.OrderByDescending(x => x.Date).Skip(model.page * model.count).Take(model.count); var list = query.Select(x => new CustomerLoyalityViewModel { id = x.Id, fullName = x.CustomerLoyality.FirstName + " " + x.CustomerLoyality.LastName, phoneNumber = x.CustomerLoyality.PhoneNumber, branchId = x.BranchId, branchName = x.Branch.Name, date = x.Date, factorPrice = x.FactorPrice, factorNumber = x.FactorNumber, purchaseType = x.PurchaseType, returnDate = x.ReturnDate, factorWeight = x.FactorWeight }).ToList(); list.ForEach(x => { x.persianDate = DateUtility.GetPersianDate(x.date); x.persianReturnDate = DateUtility.GetPersianDate(x.returnDate); x.separateFactorPrice = Core.ToSeparator(x.factorPrice); x.purchaseTypeTitle = Enums.GetTitle(x.purchaseType); }); response = new Response() { status = 200, data = new { list = list, priceSum = Core.ToSeparator(priceSum), countSum = Core.ToSeparator(countSum), branchWeightSum = branchWeightSum, pageCount = Math.Ceiling((double)dataCount / model.count), count = dataCount, page = model.page + 1 } }; } } catch (Exception ex) { response = Core.GetExceptionResponse(ex); } return(Json(response, JsonRequestBehavior.AllowGet)); }