示例#1
0
        private DirectSalesOrderFilter ConvertFilterDTOToFilterEntity(DirectSalesOrder_DirectSalesOrderFilterDTO DirectSalesOrder_DirectSalesOrderFilterDTO)
        {
            DirectSalesOrderFilter DirectSalesOrderFilter = new DirectSalesOrderFilter();

            DirectSalesOrderFilter.Selects   = DirectSalesOrderSelect.ALL;
            DirectSalesOrderFilter.Skip      = DirectSalesOrder_DirectSalesOrderFilterDTO.Skip;
            DirectSalesOrderFilter.Take      = DirectSalesOrder_DirectSalesOrderFilterDTO.Take;
            DirectSalesOrderFilter.OrderBy   = DirectSalesOrder_DirectSalesOrderFilterDTO.OrderBy;
            DirectSalesOrderFilter.OrderType = DirectSalesOrder_DirectSalesOrderFilterDTO.OrderType;

            DirectSalesOrderFilter.Id                        = DirectSalesOrder_DirectSalesOrderFilterDTO.Id;
            DirectSalesOrderFilter.OrganizationId            = DirectSalesOrder_DirectSalesOrderFilterDTO.OrganizationId;
            DirectSalesOrderFilter.Code                      = DirectSalesOrder_DirectSalesOrderFilterDTO.Code;
            DirectSalesOrderFilter.BuyerStoreId              = DirectSalesOrder_DirectSalesOrderFilterDTO.BuyerStoreId;
            DirectSalesOrderFilter.PhoneNumber               = DirectSalesOrder_DirectSalesOrderFilterDTO.PhoneNumber;
            DirectSalesOrderFilter.StoreAddress              = DirectSalesOrder_DirectSalesOrderFilterDTO.StoreAddress;
            DirectSalesOrderFilter.DeliveryAddress           = DirectSalesOrder_DirectSalesOrderFilterDTO.DeliveryAddress;
            DirectSalesOrderFilter.AppUserId                 = DirectSalesOrder_DirectSalesOrderFilterDTO.AppUserId;
            DirectSalesOrderFilter.OrderDate                 = DirectSalesOrder_DirectSalesOrderFilterDTO.OrderDate;
            DirectSalesOrderFilter.DeliveryDate              = DirectSalesOrder_DirectSalesOrderFilterDTO.DeliveryDate;
            DirectSalesOrderFilter.RequestStateId            = DirectSalesOrder_DirectSalesOrderFilterDTO.RequestStateId;
            DirectSalesOrderFilter.EditedPriceStatusId       = DirectSalesOrder_DirectSalesOrderFilterDTO.EditedPriceStatusId;
            DirectSalesOrderFilter.Note                      = DirectSalesOrder_DirectSalesOrderFilterDTO.Note;
            DirectSalesOrderFilter.SubTotal                  = DirectSalesOrder_DirectSalesOrderFilterDTO.SubTotal;
            DirectSalesOrderFilter.GeneralDiscountPercentage = DirectSalesOrder_DirectSalesOrderFilterDTO.GeneralDiscountPercentage;
            DirectSalesOrderFilter.GeneralDiscountAmount     = DirectSalesOrder_DirectSalesOrderFilterDTO.GeneralDiscountAmount;
            DirectSalesOrderFilter.TotalTaxAmount            = DirectSalesOrder_DirectSalesOrderFilterDTO.TotalTaxAmount;
            DirectSalesOrderFilter.Total                     = DirectSalesOrder_DirectSalesOrderFilterDTO.Total;
            DirectSalesOrderFilter.StoreStatusId             = DirectSalesOrder_DirectSalesOrderFilterDTO.StoreStatusId;
            return(DirectSalesOrderFilter);
        }
        public async Task <ActionResult <List <RepairTicket_DirectSalesOrderDTO> > > SingleListDirectSalesOrder([FromBody] RepairTicket_DirectSalesOrderFilterDTO RepairTicket_DirectSalesOrderFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            DirectSalesOrderFilter DirectSalesOrderFilter = new DirectSalesOrderFilter();

            DirectSalesOrderFilter.Skip      = 0;
            DirectSalesOrderFilter.Take      = int.MaxValue;
            DirectSalesOrderFilter.Take      = 20;
            DirectSalesOrderFilter.OrderBy   = DirectSalesOrderOrder.Id;
            DirectSalesOrderFilter.OrderType = OrderType.ASC;
            DirectSalesOrderFilter.Selects   = DirectSalesOrderSelect.ALL;
            DirectSalesOrderFilter.Code      = RepairTicket_DirectSalesOrderFilterDTO.Code;

            List <DirectSalesOrder> DirectSalesOrderes = await DirectSalesOrderService.List(DirectSalesOrderFilter);

            List <RepairTicket_DirectSalesOrderDTO> RepairTicket_DirectSalesOrderDTOs = DirectSalesOrderes
                                                                                        .Select(x => new RepairTicket_DirectSalesOrderDTO(x)).ToList();

            return(RepairTicket_DirectSalesOrderDTOs);
        }
        public async Task <int> Count(DirectSalesOrderFilter filter)
        {
            IQueryable <DirectSalesOrderDAO> DirectSalesOrderDAOs = DataContext.DirectSalesOrder.AsNoTracking();

            DirectSalesOrderDAOs = DynamicFilter(DirectSalesOrderDAOs, filter);
            DirectSalesOrderDAOs = OrFilter(DirectSalesOrderDAOs, filter);
            return(await DirectSalesOrderDAOs.Distinct().CountAsync());
        }
        public async Task <List <DirectSalesOrder> > List(DirectSalesOrderFilter filter)
        {
            if (filter == null)
            {
                return(new List <DirectSalesOrder>());
            }
            IQueryable <DirectSalesOrderDAO> DirectSalesOrderDAOs = DataContext.DirectSalesOrder.AsNoTracking();

            DirectSalesOrderDAOs = DynamicFilter(DirectSalesOrderDAOs, filter);
            DirectSalesOrderDAOs = OrFilter(DirectSalesOrderDAOs, filter);
            DirectSalesOrderDAOs = DynamicOrder(DirectSalesOrderDAOs, filter);
            List <DirectSalesOrder> DirectSalesOrders = await DynamicSelect(DirectSalesOrderDAOs, filter);

            return(DirectSalesOrders);
        }
示例#5
0
        public async Task <ActionResult <int> > Count([FromBody] DirectSalesOrder_DirectSalesOrderFilterDTO DirectSalesOrder_DirectSalesOrderFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            DirectSalesOrderFilter DirectSalesOrderFilter = ConvertFilterDTOToFilterEntity(DirectSalesOrder_DirectSalesOrderFilterDTO);

            DirectSalesOrderFilter = await DirectSalesOrderService.ToFilter(DirectSalesOrderFilter);

            int count = await DirectSalesOrderService.Count(DirectSalesOrderFilter);

            return(count);
        }
        public async Task <bool> ValidateId(DirectSalesOrder DirectSalesOrder)
        {
            DirectSalesOrderFilter DirectSalesOrderFilter = new DirectSalesOrderFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = DirectSalesOrder.Id
                },
                Selects = DirectSalesOrderSelect.Id
            };

            int count = await UOW.DirectSalesOrderRepository.Count(DirectSalesOrderFilter);

            if (count == 0)
            {
                DirectSalesOrder.AddError(nameof(DirectSalesOrderValidator), nameof(DirectSalesOrder.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
示例#7
0
        public async Task <ActionResult <List <DirectSalesOrder_DirectSalesOrderDTO> > > List([FromBody] DirectSalesOrder_DirectSalesOrderFilterDTO DirectSalesOrder_DirectSalesOrderFilterDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            DirectSalesOrderFilter DirectSalesOrderFilter = ConvertFilterDTOToFilterEntity(DirectSalesOrder_DirectSalesOrderFilterDTO);

            DirectSalesOrderFilter = await DirectSalesOrderService.ToFilter(DirectSalesOrderFilter);

            List <DirectSalesOrder> DirectSalesOrders = await DirectSalesOrderService.List(DirectSalesOrderFilter);

            List <DirectSalesOrder_DirectSalesOrderDTO> DirectSalesOrder_DirectSalesOrderDTOs = DirectSalesOrders
                                                                                                .Select(c => new DirectSalesOrder_DirectSalesOrderDTO(c)).ToList();

            return(DirectSalesOrder_DirectSalesOrderDTOs);
        }
示例#8
0
        private async Task <bool> HasPermission(long Id)
        {
            DirectSalesOrderFilter DirectSalesOrderFilter = new DirectSalesOrderFilter();

            DirectSalesOrderFilter = await DirectSalesOrderService.ToFilter(DirectSalesOrderFilter);

            if (Id == 0)
            {
            }
            else
            {
                DirectSalesOrderFilter.Id = new IdFilter {
                    Equal = Id
                };
                int count = await DirectSalesOrderService.Count(DirectSalesOrderFilter);

                if (count == 0)
                {
                    return(false);
                }
            }
            return(true);
        }
示例#9
0
        public async Task <List <DirectSalesOrder> > List(DirectSalesOrderFilter DirectSalesOrderFilter)
        {
            try
            {
                List <DirectSalesOrder> DirectSalesOrders = await UOW.DirectSalesOrderRepository.List(DirectSalesOrderFilter);

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

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

                    throw new MessageException(ex.InnerException);
                }
            }
        }
示例#10
0
        public async Task <int> Count(DirectSalesOrderFilter DirectSalesOrderFilter)
        {
            try
            {
                int result = await UOW.DirectSalesOrderRepository.Count(DirectSalesOrderFilter);

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

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

                    throw new MessageException(ex.InnerException);
                }
            }
        }
        private async Task <List <DirectSalesOrder> > DynamicSelect(IQueryable <DirectSalesOrderDAO> query, DirectSalesOrderFilter filter)
        {
            List <DirectSalesOrder> DirectSalesOrders = await query.Select(q => new DirectSalesOrder()
            {
                Id                        = filter.Selects.Contains(DirectSalesOrderSelect.Id) ? q.Id : default(long),
                Code                      = filter.Selects.Contains(DirectSalesOrderSelect.Code) ? q.Code : default(string),
                OrganizationId            = filter.Selects.Contains(DirectSalesOrderSelect.Organization) ? q.OrganizationId : default(long),
                BuyerStoreId              = filter.Selects.Contains(DirectSalesOrderSelect.BuyerStore) ? q.BuyerStoreId : default(long),
                PhoneNumber               = filter.Selects.Contains(DirectSalesOrderSelect.PhoneNumber) ? q.PhoneNumber : default(string),
                StoreAddress              = filter.Selects.Contains(DirectSalesOrderSelect.StoreAddress) ? q.StoreAddress : default(string),
                DeliveryAddress           = filter.Selects.Contains(DirectSalesOrderSelect.DeliveryAddress) ? q.DeliveryAddress : default(string),
                SaleEmployeeId            = filter.Selects.Contains(DirectSalesOrderSelect.SaleEmployee) ? q.SaleEmployeeId : default(long),
                OrderDate                 = filter.Selects.Contains(DirectSalesOrderSelect.OrderDate) ? q.OrderDate : default(DateTime),
                DeliveryDate              = filter.Selects.Contains(DirectSalesOrderSelect.DeliveryDate) ? q.DeliveryDate : default(DateTime?),
                EditedPriceStatusId       = filter.Selects.Contains(DirectSalesOrderSelect.EditedPriceStatus) ? q.EditedPriceStatusId : default(long),
                Note                      = filter.Selects.Contains(DirectSalesOrderSelect.Note) ? q.Note : default(string),
                RequestStateId            = filter.Selects.Contains(DirectSalesOrderSelect.RequestState) ? q.RequestStateId : default(long),
                SubTotal                  = filter.Selects.Contains(DirectSalesOrderSelect.SubTotal) ? q.SubTotal : default(decimal),
                GeneralDiscountPercentage = filter.Selects.Contains(DirectSalesOrderSelect.GeneralDiscountPercentage) ? q.GeneralDiscountPercentage : default(decimal?),
                GeneralDiscountAmount     = filter.Selects.Contains(DirectSalesOrderSelect.GeneralDiscountAmount) ? q.GeneralDiscountAmount : default(decimal?),
                PromotionCode             = filter.Selects.Contains(DirectSalesOrderSelect.PromotionCode) ? q.PromotionCode : default(string),
                PromotionValue            = filter.Selects.Contains(DirectSalesOrderSelect.PromotionValue) ? q.PromotionValue : default(decimal?),
                TotalTaxAmount            = filter.Selects.Contains(DirectSalesOrderSelect.TotalTaxAmount) ? q.TotalTaxAmount : default(decimal),
                TotalAfterTax             = filter.Selects.Contains(DirectSalesOrderSelect.TotalAfterTax) ? q.TotalAfterTax : default(decimal),
                Total                     = filter.Selects.Contains(DirectSalesOrderSelect.Total) ? q.Total : default(decimal),
                BuyerStore                = filter.Selects.Contains(DirectSalesOrderSelect.BuyerStore) && q.BuyerStore != null ? new Store
                {
                    Id                = q.BuyerStore.Id,
                    Code              = q.BuyerStore.Code,
                    CodeDraft         = q.BuyerStore.CodeDraft,
                    Name              = q.BuyerStore.Name,
                    ParentStoreId     = q.BuyerStore.ParentStoreId,
                    OrganizationId    = q.BuyerStore.OrganizationId,
                    StoreTypeId       = q.BuyerStore.StoreTypeId,
                    StoreGroupingId   = q.BuyerStore.StoreGroupingId,
                    Telephone         = q.BuyerStore.Telephone,
                    ProvinceId        = q.BuyerStore.ProvinceId,
                    DistrictId        = q.BuyerStore.DistrictId,
                    WardId            = q.BuyerStore.WardId,
                    Address           = q.BuyerStore.Address,
                    DeliveryAddress   = q.BuyerStore.DeliveryAddress,
                    Latitude          = q.BuyerStore.Latitude,
                    Longitude         = q.BuyerStore.Longitude,
                    DeliveryLatitude  = q.BuyerStore.DeliveryLatitude,
                    DeliveryLongitude = q.BuyerStore.DeliveryLongitude,
                    OwnerName         = q.BuyerStore.OwnerName,
                    OwnerPhone        = q.BuyerStore.OwnerPhone,
                    OwnerEmail        = q.BuyerStore.OwnerEmail,
                    TaxCode           = q.BuyerStore.TaxCode,
                    LegalEntity       = q.BuyerStore.LegalEntity,
                    StatusId          = q.BuyerStore.StatusId,
                } : null,
                EditedPriceStatus = filter.Selects.Contains(DirectSalesOrderSelect.EditedPriceStatus) && q.EditedPriceStatus != null ? new EditedPriceStatus
                {
                    Id   = q.EditedPriceStatus.Id,
                    Code = q.EditedPriceStatus.Code,
                    Name = q.EditedPriceStatus.Name,
                } : null,
                Organization = filter.Selects.Contains(DirectSalesOrderSelect.Organization) && q.Organization != null ? new Organization
                {
                    Id       = q.Organization.Id,
                    Code     = q.Organization.Code,
                    Name     = q.Organization.Name,
                    Address  = q.Organization.Address,
                    Phone    = q.Organization.Phone,
                    Path     = q.Organization.Path,
                    ParentId = q.Organization.ParentId,
                    Email    = q.Organization.Email,
                    StatusId = q.Organization.StatusId,
                    Level    = q.Organization.Level
                } : null,
                RequestState = filter.Selects.Contains(DirectSalesOrderSelect.RequestState) && q.RequestState != null ? new RequestState
                {
                    Id   = q.RequestState.Id,
                    Code = q.RequestState.Code,
                    Name = q.RequestState.Name,
                } : null,
                SaleEmployee = filter.Selects.Contains(DirectSalesOrderSelect.SaleEmployee) && q.SaleEmployee != null ? new AppUser
                {
                    Id          = q.SaleEmployee.Id,
                    Username    = q.SaleEmployee.Username,
                    DisplayName = q.SaleEmployee.DisplayName,
                    Address     = q.SaleEmployee.Address,
                    Email       = q.SaleEmployee.Email,
                    Phone       = q.SaleEmployee.Phone,
                } : null,
                RowId = q.RowId
            }).ToListAsync();

            return(DirectSalesOrders);
        }
        private IQueryable <DirectSalesOrderDAO> DynamicOrder(IQueryable <DirectSalesOrderDAO> query, DirectSalesOrderFilter filter)
        {
            query = query.Distinct();
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case DirectSalesOrderOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

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

                case DirectSalesOrderOrder.Organization:
                    query = query.OrderBy(q => q.OrganizationId);
                    break;

                case DirectSalesOrderOrder.BuyerStore:
                    query = query.OrderBy(q => q.BuyerStoreId);
                    break;

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

                case DirectSalesOrderOrder.StoreAddress:
                    query = query.OrderBy(q => q.StoreAddress);
                    break;

                case DirectSalesOrderOrder.DeliveryAddress:
                    query = query.OrderBy(q => q.DeliveryAddress);
                    break;

                case DirectSalesOrderOrder.SaleEmployee:
                    query = query.OrderBy(q => q.SaleEmployeeId);
                    break;

                case DirectSalesOrderOrder.OrderDate:
                    query = query.OrderBy(q => q.OrderDate);
                    break;

                case DirectSalesOrderOrder.DeliveryDate:
                    query = query.OrderBy(q => q.DeliveryDate);
                    break;

                case DirectSalesOrderOrder.EditedPriceStatus:
                    query = query.OrderBy(q => q.EditedPriceStatusId);
                    break;

                case DirectSalesOrderOrder.Note:
                    query = query.OrderBy(q => q.Note);
                    break;

                case DirectSalesOrderOrder.RequestState:
                    query = query.OrderBy(q => q.RequestStateId);
                    break;

                case DirectSalesOrderOrder.SubTotal:
                    query = query.OrderBy(q => q.SubTotal);
                    break;

                case DirectSalesOrderOrder.GeneralDiscountPercentage:
                    query = query.OrderBy(q => q.GeneralDiscountPercentage);
                    break;

                case DirectSalesOrderOrder.GeneralDiscountAmount:
                    query = query.OrderBy(q => q.GeneralDiscountAmount);
                    break;

                case DirectSalesOrderOrder.TotalTaxAmount:
                    query = query.OrderBy(q => q.TotalTaxAmount);
                    break;

                case DirectSalesOrderOrder.Total:
                    query = query.OrderBy(q => q.Total);
                    break;

                case DirectSalesOrderOrder.CreatedAt:
                    query = query.OrderBy(q => q.CreatedAt);
                    break;

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

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

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

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

                case DirectSalesOrderOrder.Organization:
                    query = query.OrderByDescending(q => q.OrganizationId);
                    break;

                case DirectSalesOrderOrder.BuyerStore:
                    query = query.OrderByDescending(q => q.BuyerStoreId);
                    break;

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

                case DirectSalesOrderOrder.StoreAddress:
                    query = query.OrderByDescending(q => q.StoreAddress);
                    break;

                case DirectSalesOrderOrder.DeliveryAddress:
                    query = query.OrderByDescending(q => q.DeliveryAddress);
                    break;

                case DirectSalesOrderOrder.SaleEmployee:
                    query = query.OrderByDescending(q => q.SaleEmployeeId);
                    break;

                case DirectSalesOrderOrder.OrderDate:
                    query = query.OrderByDescending(q => q.OrderDate);
                    break;

                case DirectSalesOrderOrder.DeliveryDate:
                    query = query.OrderByDescending(q => q.DeliveryDate);
                    break;

                case DirectSalesOrderOrder.EditedPriceStatus:
                    query = query.OrderByDescending(q => q.EditedPriceStatusId);
                    break;

                case DirectSalesOrderOrder.Note:
                    query = query.OrderByDescending(q => q.Note);
                    break;

                case DirectSalesOrderOrder.RequestState:
                    query = query.OrderByDescending(q => q.RequestStateId);
                    break;

                case DirectSalesOrderOrder.SubTotal:
                    query = query.OrderByDescending(q => q.SubTotal);
                    break;

                case DirectSalesOrderOrder.GeneralDiscountPercentage:
                    query = query.OrderByDescending(q => q.GeneralDiscountPercentage);
                    break;

                case DirectSalesOrderOrder.GeneralDiscountAmount:
                    query = query.OrderByDescending(q => q.GeneralDiscountAmount);
                    break;

                case DirectSalesOrderOrder.TotalTaxAmount:
                    query = query.OrderByDescending(q => q.TotalTaxAmount);
                    break;

                case DirectSalesOrderOrder.Total:
                    query = query.OrderByDescending(q => q.Total);
                    break;

                case DirectSalesOrderOrder.CreatedAt:
                    query = query.OrderByDescending(q => q.CreatedAt);
                    break;

                case DirectSalesOrderOrder.UpdatedAt:
                    query = query.OrderByDescending(q => q.UpdatedAt);
                    break;

                default:
                    query = query.OrderByDescending(q => q.UpdatedAt);
                    break;
                }
                break;

            default:
                query = query.OrderByDescending(q => q.UpdatedAt);
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }
 private IQueryable <DirectSalesOrderDAO> DynamicFilter(IQueryable <DirectSalesOrderDAO> query, DirectSalesOrderFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     if (filter.Id != null)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.OrganizationId != null)
     {
         if (filter.OrganizationId.Equal != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.OrganizationId.Equal.Value).FirstOrDefault();
             query = query.Where(q => q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.NotEqual != null)
         {
             OrganizationDAO OrganizationDAO = DataContext.Organization
                                               .Where(o => o.Id == filter.OrganizationId.NotEqual.Value).FirstOrDefault();
             query = query.Where(q => !q.Organization.Path.StartsWith(OrganizationDAO.Path));
         }
         if (filter.OrganizationId.In != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.OrganizationId.In.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => Ids.Contains(q.OrganizationId));
         }
         if (filter.OrganizationId.NotIn != null)
         {
             List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                       .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
             List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => filter.OrganizationId.NotIn.Contains(o.Id)).ToList();
             List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
             List <long>            Ids      = Branches.Select(o => o.Id).ToList();
             query = query.Where(q => !Ids.Contains(q.OrganizationId));
         }
     }
     if (filter.Code != null)
     {
         query = query.Where(q => q.Code, filter.Code);
     }
     if (filter.BuyerStoreId != null)
     {
         query = query.Where(q => q.BuyerStoreId, filter.BuyerStoreId);
     }
     if (filter.PhoneNumber != null)
     {
         query = query.Where(q => q.PhoneNumber, filter.PhoneNumber);
     }
     if (filter.StoreAddress != null)
     {
         query = query.Where(q => q.StoreAddress, filter.StoreAddress);
     }
     if (filter.DeliveryAddress != null)
     {
         query = query.Where(q => q.DeliveryAddress, filter.DeliveryAddress);
     }
     if (filter.AppUserId != null)
     {
         query = query.Where(q => q.SaleEmployeeId, filter.AppUserId);
     }
     if (filter.OrderDate != null)
     {
         query = query.Where(q => q.OrderDate, filter.OrderDate);
     }
     if (filter.DeliveryDate != null)
     {
         query = query.Where(q => q.DeliveryDate, filter.DeliveryDate);
     }
     if (filter.EditedPriceStatusId != null)
     {
         query = query.Where(q => q.EditedPriceStatusId, filter.EditedPriceStatusId);
     }
     if (filter.Note != null)
     {
         query = query.Where(q => q.Note, filter.Note);
     }
     if (filter.RequestStateId != null)
     {
         query = query.Where(q => q.RequestStateId, filter.RequestStateId);
     }
     if (filter.SubTotal != null)
     {
         query = query.Where(q => q.SubTotal, filter.SubTotal);
     }
     if (filter.GeneralDiscountPercentage != null)
     {
         query = query.Where(q => q.GeneralDiscountPercentage, filter.GeneralDiscountPercentage);
     }
     if (filter.GeneralDiscountAmount != null)
     {
         query = query.Where(q => q.GeneralDiscountAmount, filter.GeneralDiscountAmount);
     }
     if (filter.PromotionCode != null && filter.PromotionCode.HasValue)
     {
         query = query.Where(q => q.PromotionCode, filter.PromotionCode);
     }
     if (filter.TotalTaxAmount != null)
     {
         query = query.Where(q => q.TotalTaxAmount, filter.TotalTaxAmount);
     }
     if (filter.Total != null)
     {
         query = query.Where(q => q.Total, filter.Total);
     }
     if (filter.StoreStatusId != null)
     {
         query = query.Where(q => q.BuyerStore.StoreStatusId, filter.StoreStatusId);
     }
     if (filter.CustomerId != null && filter.CustomerId.HasValue)
     {
         var StoreIds = DataContext.Store.Where(x => x.CustomerId, filter.CustomerId).Select(x => x.Id).ToList();
         query = query.Where(x => StoreIds.Contains(x.BuyerStoreId));
     }
     if (filter.CompanyId != null && filter.CompanyId.HasValue)
     {
         var CustomerIds = DataContext.Customer.Where(x => x.CompanyId, filter.CompanyId).Select(x => x.Id).ToList();
         var StoreIds    = DataContext.Store.Where(x => x.CustomerId.HasValue && CustomerIds.Contains(x.CustomerId.Value)).Select(x => x.Id).ToList();
         query = query.Where(x => StoreIds.Contains(x.BuyerStoreId));
     }
     query = OrFilter(query, filter);
     return(query);
 }
        private IQueryable <DirectSalesOrderDAO> OrFilter(IQueryable <DirectSalesOrderDAO> query, DirectSalesOrderFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <DirectSalesOrderDAO> initQuery = query.Where(q => false);

            foreach (DirectSalesOrderFilter DirectSalesOrderFilter in filter.OrFilter)
            {
                IQueryable <DirectSalesOrderDAO> queryable = query;
                if (DirectSalesOrderFilter.UserId != null)
                {
                    if (DirectSalesOrderFilter.UserId.Equal != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == DirectSalesOrderFilter.UserId.Equal).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (DirectSalesOrderFilter.UserId.NotEqual != null)
                    {
                        AppUserDAO      AppUserDAO      = DataContext.AppUser.Where(p => p.Id == DirectSalesOrderFilter.UserId.NotEqual).FirstOrDefault();
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id != AppUserDAO.OrganizationId).FirstOrDefault();
                        queryable = queryable.Where(q => !q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                }
                if (DirectSalesOrderFilter.AppUserId != null)
                {
                    queryable = queryable.Where(q => q.CreatorId, DirectSalesOrderFilter.AppUserId);
                }

                if (DirectSalesOrderFilter.OrganizationId != null)
                {
                    if (DirectSalesOrderFilter.OrganizationId.Equal != null)
                    {
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.Equal.Value).FirstOrDefault();
                        queryable = queryable.Where(q => q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (DirectSalesOrderFilter.OrganizationId.NotEqual != null)
                    {
                        OrganizationDAO OrganizationDAO = DataContext.Organization
                                                          .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.NotEqual.Value).FirstOrDefault();
                        queryable = queryable.Where(q => !q.Creator.Organization.Path.StartsWith(OrganizationDAO.Path));
                    }
                    if (DirectSalesOrderFilter.OrganizationId.In != null)
                    {
                        List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                                  .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                        List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.In.Contains(o.Id)).ToList();
                        List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                        List <long>            Ids      = Branches.Select(o => o.Id).ToList();
                        queryable = queryable.Where(q => Ids.Contains(q.Creator.OrganizationId));
                    }
                    if (DirectSalesOrderFilter.OrganizationId.NotIn != null)
                    {
                        List <OrganizationDAO> OrganizationDAOs = DataContext.Organization
                                                                  .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                        List <OrganizationDAO> Parents  = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.NotIn.Contains(o.Id)).ToList();
                        List <OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                        List <long>            Ids      = Branches.Select(o => o.Id).ToList();
                        queryable = queryable.Where(q => !Ids.Contains(q.Creator.OrganizationId));
                    }
                }

                //if (DirectSalesOrderFilter.OrganizationId != null)
                //{
                //    if (DirectSalesOrderFilter.OrganizationId.Equal != null)
                //    {
                //        OrganizationDAO OrganizationDAO = DataContext.Organization
                //            .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.Equal.Value).FirstOrDefault();
                //        queryable = queryable.Where(q => q.Organization.Path.StartsWith(OrganizationDAO.Path));
                //    }
                //    if (DirectSalesOrderFilter.OrganizationId.NotEqual != null)
                //    {
                //        OrganizationDAO OrganizationDAO = DataContext.Organization
                //            .Where(o => o.Id == DirectSalesOrderFilter.OrganizationId.NotEqual.Value).FirstOrDefault();
                //        queryable = queryable.Where(q => !q.Organization.Path.StartsWith(OrganizationDAO.Path));
                //    }
                //    if (DirectSalesOrderFilter.OrganizationId.In != null)
                //    {
                //        List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                //            .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                //        List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.In.Contains(o.Id)).ToList();
                //        List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                //        List<long> Ids = Branches.Select(o => o.Id).ToList();
                //        queryable = queryable.Where(q => Ids.Contains(q.OrganizationId));
                //    }
                //    if (DirectSalesOrderFilter.OrganizationId.NotIn != null)
                //    {
                //        List<OrganizationDAO> OrganizationDAOs = DataContext.Organization
                //            .Where(o => o.DeletedAt == null && o.StatusId == 1).ToList();
                //        List<OrganizationDAO> Parents = OrganizationDAOs.Where(o => DirectSalesOrderFilter.OrganizationId.NotIn.Contains(o.Id)).ToList();
                //        List<OrganizationDAO> Branches = OrganizationDAOs.Where(o => Parents.Any(p => o.Path.StartsWith(p.Path))).ToList();
                //        List<long> Ids = Branches.Select(o => o.Id).ToList();
                //        queryable = queryable.Where(q => !Ids.Contains(q.OrganizationId));
                //    }
                //}

                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
示例#15
0
        public async Task <DirectSalesOrderFilter> ToFilter(DirectSalesOrderFilter filter)
        {
            if (filter.OrFilter == null)
            {
                filter.OrFilter = new List <DirectSalesOrderFilter>();
            }
            if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0)
            {
                return(filter);
            }

            List <Organization> Organizations = await OrganizationService.List(new OrganizationFilter
            {
                Skip      = 0,
                Take      = int.MaxValue,
                Selects   = OrganizationSelect.ALL,
                OrderBy   = OrganizationOrder.Id,
                OrderType = OrderType.ASC
            });

            foreach (var currentFilter in CurrentContext.Filters)
            {
                DirectSalesOrderFilter subFilter = new DirectSalesOrderFilter();
                filter.OrFilter.Add(subFilter);
                List <FilterPermissionDefinition> FilterPermissionDefinitions = currentFilter.Value;
                foreach (FilterPermissionDefinition FilterPermissionDefinition in FilterPermissionDefinitions)
                {
                    if (FilterPermissionDefinition.Name == nameof(subFilter.AppUserId))
                    {
                        subFilter.AppUserId = FilterBuilder.Merge(subFilter.AppUserId, FilterPermissionDefinition.IdFilter);
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.OrganizationId))
                    {
                        var      organizationIds = FilterOrganization(Organizations, FilterPermissionDefinition.IdFilter);
                        IdFilter IdFilter        = new IdFilter {
                            In = organizationIds
                        };
                        subFilter.OrganizationId = FilterBuilder.Merge(subFilter.OrganizationId, IdFilter);
                    }
                    if (FilterPermissionDefinition.Name == nameof(CurrentContext.UserId) && FilterPermissionDefinition.IdFilter != null)
                    {
                        if (FilterPermissionDefinition.IdFilter.Equal.HasValue && FilterPermissionDefinition.IdFilter.Equal.Value == CurrentUserEnum.IS.Id)
                        {
                            if (subFilter.UserId == null)
                            {
                                subFilter.UserId = new IdFilter {
                                }
                            }
                            ;
                            subFilter.UserId.Equal = CurrentContext.UserId;
                        }
                        if (FilterPermissionDefinition.IdFilter.Equal.HasValue && FilterPermissionDefinition.IdFilter.Equal.Value == CurrentUserEnum.ISNT.Id)
                        {
                            if (subFilter.UserId == null)
                            {
                                subFilter.UserId = new IdFilter {
                                }
                            }
                            ;
                            subFilter.UserId.NotEqual = CurrentContext.UserId;
                        }
                    }
                }
            }
            return(filter);
        }
    }
}