/// <summary> /// Get exits vendor in condition. /// </summary> /// <param name="model">The criteria vendor filter.</param> /// <returns></returns> private string[] GetExistVendorFilter(VendorFilterSearchViewModel model) { return(_unitOfWork.GetRepository <VendorFilter>().Get(x => x.PeriodItemId == model.PeriodItemId && x.CompanyCode == model.ComCode && x.PurchasingOrg == model.PurchaseOrg && x.WeightingKey == model.WeightingKey).Select(x => x.VendorNo).ToArray()); }
/// <summary> /// Filter Vendor by condition and total sales. /// </summary> /// <param name="model">The criteria vendor filter.</param> /// <returns></returns> public IEnumerable <VendorFilterResponseViewModel> SearchVendor(VendorFilterSearchViewModel model) { var result = new List <VendorFilterResponseViewModel>(); var purGroups = _unitOfWork.GetRepository <PurGroupWeightingKey>().GetCache(x => x.WeightingKey == model.WeightingKey && x.EvaStatus.Value).Select(x => x.PurGroup).ToArray(); var transectionList = _vendorTransection.GetTransections(model.StartDate, model.EndDate, purGroups, model.ComCode, model.PurchaseOrg); transectionList = this.FilterCondition(transectionList, model.WeightingKey); var vendorInfo = _unitOfWork.GetRepository <Data.Pocos.Vendor>().GetCache(); var exitsVendors = this.GetExistVendorFilter(model); var vendors = transectionList.Where(x => !exitsVendors.Contains(x.Vendor)) .Select(x => x.Vendor).Distinct().ToArray(); foreach (var item in vendors) { var vendorTransaction = transectionList.Where(x => x.Vendor == item); var summary = vendorTransaction.Sum(x => x.QuantityReceived); if (summary.Value == 0) { //logic when summary equal zero } result.Add(new VendorFilterResponseViewModel { VendorNo = item, VendorName = vendorInfo.FirstOrDefault(x => x.VendorNo == item)?.VendorName, TotalSales = summary.Value }); } switch (model.Condition) { case ConstantValue.VendorConditionMoreThan: //filter total sales morethan value in model. result = result.Where(x => x.TotalSales >= model.TotalSales).ToList(); break; } return(result.OrderByDescending(x => x.TotalSales)); }
public IActionResult SearchVendor([FromQuery] VendorFilterSearchViewModel model) { return(Ok(_vendorFilter.SearchVendor(model))); }