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); }
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); }
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); }
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); }
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); } } }
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); }
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); } } }