Пример #1
0
 /// <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());
 }
Пример #2
0
        /// <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));
        }
Пример #3
0
 public IActionResult SearchVendor([FromQuery] VendorFilterSearchViewModel model)
 {
     return(Ok(_vendorFilter.SearchVendor(model)));
 }