예제 #1
0
        public IHttpActionResult GetList([FromUri] SupplierFilter filter, [UserId] int userId)
        {
            int total;

            if (filter == null)
            {
                filter = new SupplierFilter();
            }

            var pagerRequest = new PagerRequest(filter.Page ?? 1, filter.PageSize ?? 0);

            var model = _supplierRepository.GetPagedList(pagerRequest, out total, filter, filter.SortOrder ?? SupplierSortOrder.Default);

            var dto = Mapper.Map <List <OpcSupplierInfo>, List <SupplierDto> >(model);

            var pagerdto = new PagerInfo <SupplierDto>(pagerRequest, total);

            pagerdto.Datas = dto;

            return(RetrunHttpActionResult(pagerdto));
        }
예제 #2
0
        public async Task <List <Supplier> > List(SupplierFilter SupplierFilter)
        {
            try
            {
                List <Supplier> Suppliers = await UOW.SupplierRepository.List(SupplierFilter);

                return(Suppliers);
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    await Logging.CreateSystemLog(ex, nameof(SupplierService));

                    throw new MessageException(ex);
                }
                else
                {
                    await Logging.CreateSystemLog(ex.InnerException, nameof(SupplierService));

                    throw new MessageException(ex.InnerException);
                }
            }
        }
예제 #3
0
        public async Task <int> Count(SupplierFilter SupplierFilter)
        {
            try
            {
                int result = await UOW.SupplierRepository.Count(SupplierFilter);

                return(result);
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    await Logging.CreateSystemLog(ex, nameof(SupplierService));

                    throw new MessageException(ex);
                }
                else
                {
                    await Logging.CreateSystemLog(ex.InnerException, nameof(SupplierService));

                    throw new MessageException(ex.InnerException);
                }
            }
        }
예제 #4
0
 public IActionResult Suppliers([FromQuery] SupplierFilter filter)
 => Ok(dbContext.Suppliers.ApplyFilter(filter));
        protected virtual IEnumerable supplierProducts()
        {
            // Creating a dynamic query
            // Data is ordered by the productID (and supplierID).
            PXSelectBase <SupplierProduct> query =
                new PXSelectReadonly3 <SupplierProduct,
                                       InnerJoin <Supplier, On <Supplier.supplierID,
                                                                Equal <SupplierProduct.supplierID> > >,
                                       OrderBy <Asc <SupplierProduct.productID,
                                                     Asc <SupplierProduct.supplierID> > > >(this);
            // Adding filtering conditions to the query
            SupplierFilter filter = Filter.Current;

            if (filter.CountryCD != null)
            {
                query.WhereAnd <Where <Supplier.countryCD,
                                       Equal <Current <SupplierFilter.countryCD> > > >();
            }
            if (filter.MinOrderQty != null)
            {
                query.WhereAnd <Where <SupplierProduct.minOrderQty,
                                       GreaterEqual <Current <SupplierFilter.minOrderQty> > > >();
            }
            // Returning the result of the query for the non-aggregated mode
            if (filter.GroupBySupplier != true)
            {
                return(query.Select());
            }
            PXResultset <SupplierProduct, Supplier> result =
                new PXResultset <SupplierProduct, Supplier>();
            SupplierProduct pendingProduct  = null;
            Supplier        pendingSupplier = null;
            int             supplierCount   = 0;
            List <string>   countries       = new List <string>();

            // Iterating over all records returned by the query
            foreach (PXResult <SupplierProduct, Supplier> record in query.Select())
            {
                SupplierProduct supplierProduct = (SupplierProduct)record;
                Supplier        supplier        = (Supplier)record;
                // Comparing the current supplier product with the previous one
                if (pendingProduct != null && supplierProduct.ProductID !=
                    pendingProduct.ProductID)
                {
                    CalcAggregates(ref pendingProduct, ref pendingSupplier,
                                   ref supplierCount, countries);
                    result.Add(new PXResult <SupplierProduct, Supplier>(
                                   pendingProduct, pendingSupplier));
                    ClearTotals(ref pendingProduct, ref pendingSupplier,
                                ref supplierCount, countries);
                }
                CalcTotals(supplierProduct, supplier, ref pendingProduct,
                           ref pendingSupplier, ref supplierCount, countries);
            }
            if (pendingProduct != null && pendingSupplier != null)
            {
                CalcAggregates(ref pendingProduct, ref pendingSupplier,
                               ref supplierCount, countries);
                result.Add(new PXResult <SupplierProduct, Supplier>(
                               pendingProduct, pendingSupplier));
            }
            return(result);
        }
예제 #6
0
        private async Task <List <Supplier> > DynamicSelect(IQueryable <SupplierDAO> query, SupplierFilter filter)
        {
            List <Supplier> Suppliers = await query.Select(q => new Supplier()
            {
                Id               = filter.Selects.Contains(SupplierSelect.Id) ? q.Id : default(long),
                Code             = filter.Selects.Contains(SupplierSelect.Code) ? q.Code : default(string),
                Name             = filter.Selects.Contains(SupplierSelect.Name) ? q.Name : default(string),
                TaxCode          = filter.Selects.Contains(SupplierSelect.TaxCode) ? q.TaxCode : default(string),
                Phone            = filter.Selects.Contains(SupplierSelect.Phone) ? q.Phone : default(string),
                Email            = filter.Selects.Contains(SupplierSelect.Email) ? q.Email : default(string),
                Address          = filter.Selects.Contains(SupplierSelect.Address) ? q.Address : default(string),
                NationId         = filter.Selects.Contains(SupplierSelect.Nation) ? q.NationId : default(long?),
                ProvinceId       = filter.Selects.Contains(SupplierSelect.Province) ? q.ProvinceId : default(long?),
                DistrictId       = filter.Selects.Contains(SupplierSelect.District) ? q.DistrictId : default(long?),
                WardId           = filter.Selects.Contains(SupplierSelect.Ward) ? q.WardId : default(long?),
                PersonInChargeId = filter.Selects.Contains(SupplierSelect.PersonInCharge) ? q.PersonInChargeId : default(long?),
                OwnerName        = filter.Selects.Contains(SupplierSelect.OwnerName) ? q.OwnerName : default(string),
                Description      = filter.Selects.Contains(SupplierSelect.Description) ? q.Description : default(string),
                StatusId         = filter.Selects.Contains(SupplierSelect.Status) ? q.StatusId : default(long),
                UpdatedAt        = filter.Selects.Contains(SupplierSelect.UpdatedAt) ? q.UpdatedAt : default(DateTime),
                District         = filter.Selects.Contains(SupplierSelect.District) && q.District != null ? new District
                {
                    Id         = q.District.Id,
                    Name       = q.District.Name,
                    Priority   = q.District.Priority,
                    ProvinceId = q.District.ProvinceId,
                    StatusId   = q.District.StatusId,
                } : null,
                PersonInCharge = filter.Selects.Contains(SupplierSelect.PersonInCharge) && q.PersonInCharge != null ? new AppUser
                {
                    Id          = q.PersonInCharge.Id,
                    DisplayName = q.PersonInCharge.DisplayName,
                    Address     = q.PersonInCharge.Address,
                    Phone       = q.PersonInCharge.Phone,
                    Email       = q.Email,
                    SexId       = q.PersonInCharge.SexId,
                    StatusId    = q.StatusId
                } : null,
                Nation = filter.Selects.Contains(SupplierSelect.Nation) && q.Nation != null ? new Nation
                {
                    Id       = q.Nation.Id,
                    Code     = q.Nation.Code,
                    Name     = q.Nation.Name,
                    StatusId = q.Nation.StatusId,
                } : null,
                Province = filter.Selects.Contains(SupplierSelect.Province) && q.Province != null ? new Province
                {
                    Id       = q.Province.Id,
                    Name     = q.Province.Name,
                    Priority = q.Province.Priority,
                    StatusId = q.Province.StatusId,
                } : null,
                Status = filter.Selects.Contains(SupplierSelect.Status) && q.Status != null ? new Status
                {
                    Id   = q.Status.Id,
                    Code = q.Status.Code,
                    Name = q.Status.Name,
                } : null,
                Ward = filter.Selects.Contains(SupplierSelect.Ward) && q.Ward != null ? new Ward
                {
                    Id         = q.Ward.Id,
                    Name       = q.Ward.Name,
                    Priority   = q.Ward.Priority,
                    DistrictId = q.Ward.DistrictId,
                    StatusId   = q.Ward.StatusId,
                } : null,
                Used = q.Used,
            }).ToListAsync();

            return(Suppliers);
        }
예제 #7
0
 private IQueryable <SupplierDAO> DynamicFilter(IQueryable <SupplierDAO> query, SupplierFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     query = query.Where(q => !q.DeletedAt.HasValue);
     if (filter.Id != null)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.Code != null)
     {
         query = query.Where(q => q.Code, filter.Code);
     }
     if (filter.Name != null)
     {
         query = query.Where(q => q.Name, filter.Name);
     }
     if (filter.TaxCode != null)
     {
         query = query.Where(q => q.TaxCode, filter.TaxCode);
     }
     if (filter.Phone != null)
     {
         query = query.Where(q => q.Phone, filter.Phone);
     }
     if (filter.Email != null)
     {
         query = query.Where(q => q.Email, filter.Email);
     }
     if (filter.Address != null)
     {
         query = query.Where(q => q.Address, filter.Address);
     }
     if (filter.NationId != null)
     {
         query = query.Where(q => q.NationId, filter.NationId);
     }
     if (filter.ProvinceId != null)
     {
         query = query.Where(q => q.ProvinceId, filter.ProvinceId);
     }
     if (filter.DistrictId != null)
     {
         query = query.Where(q => q.DistrictId, filter.DistrictId);
     }
     if (filter.WardId != null)
     {
         query = query.Where(q => q.WardId, filter.WardId);
     }
     if (filter.OwnerName != null)
     {
         query = query.Where(q => q.OwnerName, filter.OwnerName);
     }
     if (filter.PersonInChargeId != null)
     {
         query = query.Where(q => q.PersonInChargeId, filter.PersonInChargeId);
     }
     if (filter.Description != null)
     {
         query = query.Where(q => q.Description, filter.Description);
     }
     if (filter.StatusId != null)
     {
         query = query.Where(q => q.StatusId, filter.StatusId);
     }
     if (filter.UpdatedTime != null)
     {
         query = query.Where(q => q.UpdatedAt, filter.UpdatedTime);
     }
     query = OrFilter(query, filter);
     return(query);
 }
예제 #8
0
        private IQueryable <SupplierDAO> DynamicOrder(IQueryable <SupplierDAO> query, SupplierFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case SupplierOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case SupplierOrder.Code:
                    query = query.OrderBy(q => q.Code);
                    break;

                case SupplierOrder.Name:
                    query = query.OrderBy(q => q.Name);
                    break;

                case SupplierOrder.TaxCode:
                    query = query.OrderBy(q => q.TaxCode);
                    break;

                case SupplierOrder.Phone:
                    query = query.OrderBy(q => q.Phone);
                    break;

                case SupplierOrder.Email:
                    query = query.OrderBy(q => q.Email);
                    break;

                case SupplierOrder.Address:
                    query = query.OrderBy(q => q.Address);
                    break;

                case SupplierOrder.Province:
                    query = query.OrderBy(q => q.ProvinceId);
                    break;

                case SupplierOrder.Nation:
                    query = query.OrderBy(q => q.NationId);
                    break;

                case SupplierOrder.District:
                    query = query.OrderBy(q => q.DistrictId);
                    break;

                case SupplierOrder.Ward:
                    query = query.OrderBy(q => q.WardId);
                    break;

                case SupplierOrder.OwnerName:
                    query = query.OrderBy(q => q.OwnerName);
                    break;

                case SupplierOrder.PersonInCharge:
                    query = query.OrderBy(q => q.PersonInChargeId);
                    break;

                case SupplierOrder.Description:
                    query = query.OrderBy(q => q.Description);
                    break;

                case SupplierOrder.Status:
                    query = query.OrderBy(q => q.StatusId);
                    break;

                case SupplierOrder.UpdatedTime:
                    query = query.OrderBy(q => q.UpdatedAt);
                    break;

                default:
                    query = query.OrderBy(q => q.CreatedAt);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case SupplierOrder.Id:
                    query = query.OrderByDescending(q => q.Id);
                    break;

                case SupplierOrder.Code:
                    query = query.OrderByDescending(q => q.Code);
                    break;

                case SupplierOrder.Name:
                    query = query.OrderByDescending(q => q.Name);
                    break;

                case SupplierOrder.TaxCode:
                    query = query.OrderByDescending(q => q.TaxCode);
                    break;

                case SupplierOrder.Phone:
                    query = query.OrderByDescending(q => q.Phone);
                    break;

                case SupplierOrder.Email:
                    query = query.OrderByDescending(q => q.Email);
                    break;

                case SupplierOrder.Address:
                    query = query.OrderByDescending(q => q.Address);
                    break;

                case SupplierOrder.Nation:
                    query = query.OrderByDescending(q => q.NationId);
                    break;

                case SupplierOrder.Province:
                    query = query.OrderByDescending(q => q.ProvinceId);
                    break;

                case SupplierOrder.District:
                    query = query.OrderByDescending(q => q.DistrictId);
                    break;

                case SupplierOrder.Ward:
                    query = query.OrderByDescending(q => q.WardId);
                    break;

                case SupplierOrder.OwnerName:
                    query = query.OrderByDescending(q => q.OwnerName);
                    break;

                case SupplierOrder.PersonInCharge:
                    query = query.OrderByDescending(q => q.PersonInChargeId);
                    break;

                case SupplierOrder.Description:
                    query = query.OrderByDescending(q => q.Description);
                    break;

                case SupplierOrder.Status:
                    query = query.OrderByDescending(q => q.StatusId);
                    break;

                case SupplierOrder.UpdatedTime:
                    query = query.OrderByDescending(q => q.UpdatedAt);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }
예제 #9
0
        private IQueryable <SupplierDAO> OrFilter(IQueryable <SupplierDAO> query, SupplierFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <SupplierDAO> initQuery = query.Where(q => false);

            foreach (SupplierFilter SupplierFilter in filter.OrFilter)
            {
                IQueryable <SupplierDAO> queryable = query;
                if (SupplierFilter.Id != null)
                {
                    queryable = queryable.Where(q => q.Id, SupplierFilter.Id);
                }
                if (SupplierFilter.Code != null)
                {
                    queryable = queryable.Where(q => q.Code, SupplierFilter.Code);
                }
                if (SupplierFilter.Name != null)
                {
                    queryable = queryable.Where(q => q.Name, SupplierFilter.Name);
                }
                if (SupplierFilter.TaxCode != null)
                {
                    queryable = queryable.Where(q => q.TaxCode, SupplierFilter.TaxCode);
                }
                if (SupplierFilter.Phone != null)
                {
                    queryable = queryable.Where(q => q.Phone, SupplierFilter.Phone);
                }
                if (SupplierFilter.Email != null)
                {
                    queryable = queryable.Where(q => q.Email, SupplierFilter.Email);
                }
                if (SupplierFilter.Address != null)
                {
                    queryable = queryable.Where(q => q.Address, SupplierFilter.Address);
                }
                if (SupplierFilter.NationId != null)
                {
                    queryable = queryable.Where(q => q.NationId, SupplierFilter.NationId);
                }
                if (SupplierFilter.ProvinceId != null)
                {
                    queryable = queryable.Where(q => q.ProvinceId, SupplierFilter.ProvinceId);
                }
                if (SupplierFilter.DistrictId != null)
                {
                    queryable = queryable.Where(q => q.DistrictId, SupplierFilter.DistrictId);
                }
                if (SupplierFilter.WardId != null)
                {
                    queryable = queryable.Where(q => q.WardId, SupplierFilter.WardId);
                }
                if (SupplierFilter.OwnerName != null)
                {
                    queryable = queryable.Where(q => q.OwnerName, SupplierFilter.OwnerName);
                }
                if (SupplierFilter.PersonInChargeId != null)
                {
                    queryable = queryable.Where(q => q.PersonInChargeId, SupplierFilter.PersonInChargeId);
                }
                if (SupplierFilter.Description != null)
                {
                    queryable = queryable.Where(q => q.Description, SupplierFilter.Description);
                }
                if (SupplierFilter.StatusId != null)
                {
                    queryable = queryable.Where(q => q.StatusId, SupplierFilter.StatusId);
                }
                if (SupplierFilter.UpdatedTime != null)
                {
                    queryable = queryable.Where(q => q.UpdatedAt, SupplierFilter.UpdatedTime);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
예제 #10
0
        /// <summary>
        /// 分页
        /// </summary>
        /// <param name="pagerRequest"></param>
        /// <param name="totalCount"></param>
        /// <param name="filter"></param>
        /// <param name="sortOrder"></param>
        /// <returns></returns>
        public List <OpcSupplierInfo> GetPagedList(PagerRequest pagerRequest, out int totalCount, SupplierFilter filter, SupplierSortOrder sortOrder)
        {
            var query   = Filter(filter);
            var orderBy = OrderBy(sortOrder);
            var result  = Func(c =>
            {
                int t;
                var q1 = EFHelper.GetPaged(c, query, out t, pagerRequest.PageIndex, pagerRequest.PageSize, orderBy);

                var q2 = from b in c.Set <Brand>()
                         join sb in c.Set <Supplier_Brand>() on b.Id equals sb.Brand_Id into temp1
                         from sb in temp1.DefaultIfEmpty()
                         select new
                {
                    b,
                    sb.Supplier_Id
                };
                var q = from s in q1
                        join b in q2 on s.Id equals b.Supplier_Id into temp1
                        from sb in temp1.DefaultIfEmpty()
                        select new
                {
                    Et    = s,
                    Brand = sb.b
                };

                var list = new Dictionary <int, OpcSupplierInfo>();

                var rst = q.ToList();

                rst.ForEach(v =>
                {
                    Brand b = null;
                    if (v.Brand != null)
                    {
                        b = Brand.Convert2Brand(v.Brand);
                    }

                    var item = OpcSupplierInfo.Convert2Supplier(v.Et);

                    OpcSupplierInfo s;
                    if (list.TryGetValue(item.Id, out s))
                    {
                        if (b != null)
                        {
                            var l = s.Brands.ToList();
                            l.Add(b);

                            s.Brands = l;
                        }
                    }
                    else
                    {
                        if (b != null)
                        {
                            var l = item.Brands.ToList();
                            l.Add(b);

                            item.Brands = l;
                        }

                        list.Add(item.Id, item);
                    }
                });

                return(new
                {
                    totalCount = t,
                    Data = list.Values.ToList()
                });
            });

            totalCount = result.totalCount;

            return(result.Data);
        }
예제 #11
0
        public SupplierFilter ToFilter(SupplierFilter filter)
        {
            if (filter.OrFilter == null)
            {
                filter.OrFilter = new List <SupplierFilter>();
            }
            if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0)
            {
                return(filter);
            }
            foreach (var currentFilter in CurrentContext.Filters)
            {
                SupplierFilter subFilter = new SupplierFilter();
                filter.OrFilter.Add(subFilter);
                List <FilterPermissionDefinition> FilterPermissionDefinitions = currentFilter.Value;
                foreach (FilterPermissionDefinition FilterPermissionDefinition in FilterPermissionDefinitions)
                {
                    if (FilterPermissionDefinition.Name == nameof(subFilter.Id))
                    {
                        subFilter.Id = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.Code))
                    {
                        subFilter.Code = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.Name))
                    {
                        subFilter.Name = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.TaxCode))
                    {
                        subFilter.TaxCode = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.Phone))
                    {
                        subFilter.Phone = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.Email))
                    {
                        subFilter.Email = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.Address))
                    {
                        subFilter.Address = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.ProvinceId))
                    {
                        subFilter.ProvinceId = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.DistrictId))
                    {
                        subFilter.DistrictId = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.WardId))
                    {
                        subFilter.WardId = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.OwnerName))
                    {
                        subFilter.OwnerName = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.PersonInChargeId))
                    {
                        subFilter.PersonInChargeId = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.StatusId))
                    {
                        subFilter.StatusId = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.Description))
                    {
                        subFilter.Description = FilterPermissionDefinition.StringFilter;
                    }
                }
            }
            return(filter);
        }