public async Task <int> Count(ShippingAddressFilter filter)
        {
            IQueryable <ShippingAddressDAO> ShippingAddressDAOs = DataContext.ShippingAddress;

            ShippingAddressDAOs = DynamicFilter(ShippingAddressDAOs, filter);
            return(await ShippingAddressDAOs.CountAsync());
        }
        public ShippingAddressFilter ConvertFilterDTOToFilterEntity(ShippingAddressMaster_ShippingAddressFilterDTO ShippingAddressMaster_ShippingAddressFilterDTO)
        {
            ShippingAddressFilter ShippingAddressFilter = new ShippingAddressFilter();

            ShippingAddressFilter.Selects = ShippingAddressSelect.ALL;

            ShippingAddressFilter.Id = new LongFilter {
                Equal = ShippingAddressMaster_ShippingAddressFilterDTO.Id
            };
            ShippingAddressFilter.CustomerId = new LongFilter {
                Equal = ShippingAddressMaster_ShippingAddressFilterDTO.CustomerId
            };
            ShippingAddressFilter.FullName = new StringFilter {
                StartsWith = ShippingAddressMaster_ShippingAddressFilterDTO.FullName
            };
            ShippingAddressFilter.CompanyName = new StringFilter {
                StartsWith = ShippingAddressMaster_ShippingAddressFilterDTO.CompanyName
            };
            ShippingAddressFilter.PhoneNumber = new StringFilter {
                StartsWith = ShippingAddressMaster_ShippingAddressFilterDTO.PhoneNumber
            };
            ShippingAddressFilter.ProvinceId = new LongFilter {
                Equal = ShippingAddressMaster_ShippingAddressFilterDTO.ProvinceId
            };
            ShippingAddressFilter.DistrictId = new LongFilter {
                Equal = ShippingAddressMaster_ShippingAddressFilterDTO.DistrictId
            };
            ShippingAddressFilter.WardId = new LongFilter {
                Equal = ShippingAddressMaster_ShippingAddressFilterDTO.WardId
            };
            ShippingAddressFilter.Address = new StringFilter {
                StartsWith = ShippingAddressMaster_ShippingAddressFilterDTO.Address
            };
            return(ShippingAddressFilter);
        }
        public async Task <int> Count([FromBody] ShippingAddressMaster_ShippingAddressFilterDTO ShippingAddressMaster_ShippingAddressFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new MessageException(ModelState);
            }

            ShippingAddressFilter ShippingAddressFilter = ConvertFilterDTOToFilterEntity(ShippingAddressMaster_ShippingAddressFilterDTO);

            return(await ShippingAddressService.Count(ShippingAddressFilter));
        }
        public async Task <List <ShippingAddressMaster_ShippingAddressDTO> > List([FromBody] ShippingAddressMaster_ShippingAddressFilterDTO ShippingAddressMaster_ShippingAddressFilterDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new MessageException(ModelState);
            }

            ShippingAddressFilter ShippingAddressFilter = ConvertFilterDTOToFilterEntity(ShippingAddressMaster_ShippingAddressFilterDTO);

            List <ShippingAddress> ShippingAddresss = await ShippingAddressService.List(ShippingAddressFilter);

            return(ShippingAddresss.Select(c => new ShippingAddressMaster_ShippingAddressDTO(c)).ToList());
        }
        public async Task <List <ShippingAddress> > List(ShippingAddressFilter filter)
        {
            if (filter == null)
            {
                return(new List <ShippingAddress>());
            }
            IQueryable <ShippingAddressDAO> ShippingAddressDAOs = DataContext.ShippingAddress;

            ShippingAddressDAOs = DynamicFilter(ShippingAddressDAOs, filter);
            ShippingAddressDAOs = DynamicOrder(ShippingAddressDAOs, filter);
            var ShippingAddresss = await DynamicSelect(ShippingAddressDAOs, filter);

            return(ShippingAddresss);
        }
Ejemplo n.º 6
0
        public async Task <bool> ValidateId(ShippingAddress ShippingAddress)
        {
            ShippingAddressFilter ShippingAddressFilter = new ShippingAddressFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new LongFilter {
                    Equal = ShippingAddress.Id
                },
                Selects = ShippingAddressSelect.Id
            };

            int count = await UOW.ShippingAddressRepository.Count(ShippingAddressFilter);

            if (count == 0)
            {
                ShippingAddress.AddError(nameof(ShippingAddressValidator), nameof(ShippingAddress.Id), ErrorCode.IdNotExisted);
            }

            return(count == 1);
        }
        public async Task <List <ShippingAddress> > List(ShippingAddressFilter ShippingAddressFilter)
        {
            List <ShippingAddress> ShippingAddresss = await UOW.ShippingAddressRepository.List(ShippingAddressFilter);

            return(ShippingAddresss);
        }
        public async Task <int> Count(ShippingAddressFilter ShippingAddressFilter)
        {
            int result = await UOW.ShippingAddressRepository.Count(ShippingAddressFilter);

            return(result);
        }
        private IQueryable <ShippingAddressDAO> DynamicOrder(IQueryable <ShippingAddressDAO> query, ShippingAddressFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case ShippingAddressOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case ShippingAddressOrder.Customer:
                    query = query.OrderBy(q => q.Customer.Id);
                    break;

                case ShippingAddressOrder.FullName:
                    query = query.OrderBy(q => q.FullName);
                    break;

                case ShippingAddressOrder.CompanyName:
                    query = query.OrderBy(q => q.CompanyName);
                    break;

                case ShippingAddressOrder.PhoneNumber:
                    query = query.OrderBy(q => q.PhoneNumber);
                    break;

                case ShippingAddressOrder.Province:
                    query = query.OrderBy(q => q.Province.Id);
                    break;

                case ShippingAddressOrder.District:
                    query = query.OrderBy(q => q.District.Id);
                    break;

                case ShippingAddressOrder.Ward:
                    query = query.OrderBy(q => q.Ward.Id);
                    break;

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

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

                case ShippingAddressOrder.Customer:
                    query = query.OrderByDescending(q => q.Customer.Id);
                    break;

                case ShippingAddressOrder.FullName:
                    query = query.OrderByDescending(q => q.FullName);
                    break;

                case ShippingAddressOrder.CompanyName:
                    query = query.OrderByDescending(q => q.CompanyName);
                    break;

                case ShippingAddressOrder.PhoneNumber:
                    query = query.OrderByDescending(q => q.PhoneNumber);
                    break;

                case ShippingAddressOrder.Province:
                    query = query.OrderByDescending(q => q.Province.Id);
                    break;

                case ShippingAddressOrder.District:
                    query = query.OrderByDescending(q => q.District.Id);
                    break;

                case ShippingAddressOrder.Ward:
                    query = query.OrderByDescending(q => q.Ward.Id);
                    break;

                case ShippingAddressOrder.Address:
                    query = query.OrderByDescending(q => q.Address);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }
        private IQueryable <ShippingAddressDAO> DynamicFilter(IQueryable <ShippingAddressDAO> query, ShippingAddressFilter filter)
        {
            if (filter == null)
            {
                return(query.Where(q => false));
            }

            if (filter.Id != null)
            {
                query = query.Where(q => q.Id, filter.Id);
            }
            if (filter.CustomerId != null)
            {
                query = query.Where(q => q.CustomerId, filter.CustomerId);
            }
            if (filter.FullName != null)
            {
                query = query.Where(q => q.FullName, filter.FullName);
            }
            if (filter.CompanyName != null)
            {
                query = query.Where(q => q.CompanyName, filter.CompanyName);
            }
            if (filter.PhoneNumber != null)
            {
                query = query.Where(q => q.PhoneNumber, filter.PhoneNumber);
            }
            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.Address != null)
            {
                query = query.Where(q => q.Address, filter.Address);
            }
            if (filter.Ids != null)
            {
                query = query.Where(q => filter.Ids.Contains(q.Id));
            }
            if (filter.ExceptIds != null)
            {
                query = query.Where(q => !filter.ExceptIds.Contains(q.Id));
            }
            return(query);
        }
        private async Task <List <ShippingAddress> > DynamicSelect(IQueryable <ShippingAddressDAO> query, ShippingAddressFilter filter)
        {
            List <ShippingAddress> ShippingAddresss = await query.Select(q => new ShippingAddress()
            {
                Id          = filter.Selects.Contains(ShippingAddressSelect.Id) ? q.Id : default(long),
                CustomerId  = filter.Selects.Contains(ShippingAddressSelect.Customer) ? q.CustomerId : default(long),
                FullName    = filter.Selects.Contains(ShippingAddressSelect.FullName) ? q.FullName : default(string),
                CompanyName = filter.Selects.Contains(ShippingAddressSelect.CompanyName) ? q.CompanyName : default(string),
                PhoneNumber = filter.Selects.Contains(ShippingAddressSelect.PhoneNumber) ? q.PhoneNumber : default(string),
                ProvinceId  = filter.Selects.Contains(ShippingAddressSelect.Province) ? q.ProvinceId : default(long),
                DistrictId  = filter.Selects.Contains(ShippingAddressSelect.District) ? q.DistrictId : default(long),
                WardId      = filter.Selects.Contains(ShippingAddressSelect.Ward) ? q.WardId : default(long),
                Address     = filter.Selects.Contains(ShippingAddressSelect.Address) ? q.Address : default(string),
                IsDefault   = filter.Selects.Contains(ShippingAddressSelect.IsDefault) ? q.IsDefault : default(bool),
                Customer    = filter.Selects.Contains(ShippingAddressSelect.Customer) && q.Customer != null ? new Customer
                {
                    Id          = q.Customer.Id,
                    Username    = q.Customer.Username,
                    DisplayName = q.Customer.DisplayName,
                    PhoneNumber = q.Customer.PhoneNumber,
                    Email       = q.Customer.Email,
                } : null,
                District = filter.Selects.Contains(ShippingAddressSelect.District) && q.District != null ? new District
                {
                    Id          = q.District.Id,
                    Name        = q.District.Name,
                    OrderNumber = q.District.OrderNumber,
                    ProvinceId  = q.District.ProvinceId,
                } : null,
                Province = filter.Selects.Contains(ShippingAddressSelect.Province) && q.Province != null ? new Province
                {
                    Id          = q.Province.Id,
                    Name        = q.Province.Name,
                    OrderNumber = q.Province.OrderNumber,
                } : null,
                Ward = filter.Selects.Contains(ShippingAddressSelect.Ward) && q.Ward != null ? new Ward
                {
                    Id          = q.Ward.Id,
                    Name        = q.Ward.Name,
                    OrderNumber = q.Ward.OrderNumber,
                    DistrictId  = q.Ward.DistrictId,
                } : null,
            }).ToListAsync();

            return(ShippingAddresss);
        }