public async Task <int> Count(ProductGroupingFilter filter) { IQueryable <ProductGroupingDAO> ProductGroupings = DataContext.ProductGrouping.AsNoTracking(); ProductGroupings = DynamicFilter(ProductGroupings, filter); return(await ProductGroupings.CountAsync()); }
public async Task <ActionResult <List <Contract_ProductGroupingDTO> > > SingleListProductGrouping([FromBody] Contract_ProductGroupingFilterDTO Contract_ProductGroupingFilterDTO) { if (UnAuthorization) { return(Forbid()); } if (!ModelState.IsValid) { throw new BindException(ModelState); } ProductGroupingFilter ProductGroupingFilter = new ProductGroupingFilter(); ProductGroupingFilter.Skip = 0; ProductGroupingFilter.Take = int.MaxValue; ProductGroupingFilter.OrderBy = ProductGroupingOrder.Id; ProductGroupingFilter.OrderType = OrderType.ASC; ProductGroupingFilter.Selects = ProductGroupingSelect.Id | ProductGroupingSelect.Code | ProductGroupingSelect.Name | ProductGroupingSelect.Parent; if (ProductGroupingFilter.Id == null) { ProductGroupingFilter.Id = new IdFilter(); } ProductGroupingFilter.Id.In = await FilterProductGrouping(ProductGroupingService, CurrentContext); List <ProductGrouping> ProductGroupings = await ProductGroupingService.List(ProductGroupingFilter); List <Contract_ProductGroupingDTO> Contract_ProductGroupingDTOs = ProductGroupings .Select(x => new Contract_ProductGroupingDTO(x)).ToList(); return(Contract_ProductGroupingDTOs); }
public ProductGroupingFilter ToFilter(ProductGroupingFilter filter) { if (filter.OrFilter == null) { filter.OrFilter = new List <ProductGroupingFilter>(); } if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0) { return(filter); } foreach (var currentFilter in CurrentContext.Filters) { ProductGroupingFilter subFilter = new ProductGroupingFilter(); 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.Description)) { subFilter.Description = FilterPermissionDefinition.StringFilter; } if (FilterPermissionDefinition.Name == nameof(subFilter.ParentId)) { subFilter.ParentId = FilterPermissionDefinition.IdFilter; } if (FilterPermissionDefinition.Name == nameof(subFilter.Path)) { subFilter.Path = FilterPermissionDefinition.StringFilter; } if (FilterPermissionDefinition.Name == nameof(subFilter.Level)) { subFilter.Level = FilterPermissionDefinition.LongFilter; } } } return(filter); }
public async Task <List <ProductGrouping> > List(ProductGroupingFilter filter) { if (filter == null) { return(new List <ProductGrouping>()); } IQueryable <ProductGroupingDAO> ProductGroupingDAOs = DataContext.ProductGrouping.AsNoTracking(); ProductGroupingDAOs = DynamicFilter(ProductGroupingDAOs, filter); ProductGroupingDAOs = DynamicOrder(ProductGroupingDAOs, filter); List <ProductGrouping> ProductGroupings = await DynamicSelect(ProductGroupingDAOs, filter); return(ProductGroupings); }
public async Task <bool> ValidateId(ProductGrouping ProductGrouping) { ProductGroupingFilter ProductGroupingFilter = new ProductGroupingFilter { Skip = 0, Take = 10, Id = new IdFilter { Equal = ProductGrouping.Id }, Selects = ProductGroupingSelect.Id }; int count = await UOW.ProductGroupingRepository.Count(ProductGroupingFilter); if (count == 0) { ProductGrouping.AddError(nameof(ProductGroupingValidator), nameof(ProductGrouping.Id), ErrorCode.IdNotExisted); } return(count == 1); }
public async Task <List <ProductGrouping> > List(ProductGroupingFilter ProductGroupingFilter) { try { List <ProductGrouping> ProductGroupings = await UOW.ProductGroupingRepository.List(ProductGroupingFilter); return(ProductGroupings); } catch (Exception ex) { if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(ProductGroupingService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(ProductGroupingService)); throw new MessageException(ex.InnerException); } } }
public async Task <int> Count(ProductGroupingFilter ProductGroupingFilter) { try { int result = await UOW.ProductGroupingRepository.Count(ProductGroupingFilter); return(result); } catch (Exception ex) { if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(ProductGroupingService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(ProductGroupingService)); throw new MessageException(ex.InnerException); } } }
private IQueryable <ProductGroupingDAO> OrFilter(IQueryable <ProductGroupingDAO> query, ProductGroupingFilter filter) { if (filter.OrFilter == null || filter.OrFilter.Count == 0) { return(query); } IQueryable <ProductGroupingDAO> initQuery = query.Where(q => false); foreach (ProductGroupingFilter ProductGroupingFilter in filter.OrFilter) { IQueryable <ProductGroupingDAO> queryable = query; if (ProductGroupingFilter.Id != null) { queryable = queryable.Where(q => q.Id, ProductGroupingFilter.Id); } if (ProductGroupingFilter.Code != null) { queryable = queryable.Where(q => q.Code, ProductGroupingFilter.Code); } if (ProductGroupingFilter.Name != null) { queryable = queryable.Where(q => q.Name, ProductGroupingFilter.Name); } if (ProductGroupingFilter.Description != null) { queryable = queryable.Where(q => q.Description, ProductGroupingFilter.Description); } if (ProductGroupingFilter.ParentId != null) { queryable = queryable.Where(q => q.ParentId.HasValue).Where(q => q.ParentId, ProductGroupingFilter.ParentId); } if (ProductGroupingFilter.Path != null) { queryable = queryable.Where(q => q.Path, ProductGroupingFilter.Path); } if (ProductGroupingFilter.Level != null) { queryable = queryable.Where(q => q.Level, ProductGroupingFilter.Level); } initQuery = initQuery.Union(queryable); } return(initQuery); }
private IQueryable <ProductGroupingDAO> DynamicFilter(IQueryable <ProductGroupingDAO> query, ProductGroupingFilter filter) { if (filter == null) { return(query.Where(q => false)); } query = query.Where(q => !q.DeletedAt.HasValue); if (filter.CreatedAt != null) { query = query.Where(q => q.CreatedAt, filter.CreatedAt); } if (filter.UpdatedAt != null) { query = query.Where(q => q.UpdatedAt, filter.UpdatedAt); } 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.Description != null) { query = query.Where(q => q.Description, filter.Description); } if (filter.ParentId != null) { query = query.Where(q => q.ParentId.HasValue).Where(q => q.ParentId, filter.ParentId); } if (filter.Path != null) { query = query.Where(q => q.Path, filter.Path); } if (filter.Level != null) { query = query.Where(q => q.Level, filter.Level); } query = OrFilter(query, filter); return(query); }
private async Task <List <ProductGrouping> > DynamicSelect(IQueryable <ProductGroupingDAO> query, ProductGroupingFilter filter) { List <ProductGrouping> ProductGroupings = await query.Select(q => new ProductGrouping() { Id = filter.Selects.Contains(ProductGroupingSelect.Id) ? q.Id : default(long), Code = filter.Selects.Contains(ProductGroupingSelect.Code) ? q.Code : default(string), Name = filter.Selects.Contains(ProductGroupingSelect.Name) ? q.Name : default(string), Description = filter.Selects.Contains(ProductGroupingSelect.Description) ? q.Description : default(string), ParentId = filter.Selects.Contains(ProductGroupingSelect.Parent) ? q.ParentId : default(long?), Path = filter.Selects.Contains(ProductGroupingSelect.Path) ? q.Path : default(string), Level = filter.Selects.Contains(ProductGroupingSelect.Level) ? q.Level : default(long), Parent = filter.Selects.Contains(ProductGroupingSelect.Parent) && q.Parent != null ? new ProductGrouping { Id = q.Parent.Id, Code = q.Parent.Code, Name = q.Parent.Name, Description = q.Parent.Description, ParentId = q.Parent.ParentId, Path = q.Parent.Path, Level = q.Parent.Level, } : null, CreatedAt = q.CreatedAt, UpdatedAt = q.UpdatedAt, }).ToListAsync(); return(ProductGroupings); }
private IQueryable <ProductGroupingDAO> DynamicOrder(IQueryable <ProductGroupingDAO> query, ProductGroupingFilter filter) { switch (filter.OrderType) { case OrderType.ASC: switch (filter.OrderBy) { case ProductGroupingOrder.Id: query = query.OrderBy(q => q.Id); break; case ProductGroupingOrder.Code: query = query.OrderBy(q => q.Code); break; case ProductGroupingOrder.Name: query = query.OrderBy(q => q.Name); break; case ProductGroupingOrder.Description: query = query.OrderBy(q => q.Description); break; case ProductGroupingOrder.Parent: query = query.OrderBy(q => q.ParentId); break; case ProductGroupingOrder.Path: query = query.OrderBy(q => q.Path); break; case ProductGroupingOrder.Level: query = query.OrderBy(q => q.Level); break; } break; case OrderType.DESC: switch (filter.OrderBy) { case ProductGroupingOrder.Id: query = query.OrderByDescending(q => q.Id); break; case ProductGroupingOrder.Code: query = query.OrderByDescending(q => q.Code); break; case ProductGroupingOrder.Name: query = query.OrderByDescending(q => q.Name); break; case ProductGroupingOrder.Description: query = query.OrderByDescending(q => q.Description); break; case ProductGroupingOrder.Parent: query = query.OrderByDescending(q => q.ParentId); break; case ProductGroupingOrder.Path: query = query.OrderByDescending(q => q.Path); break; case ProductGroupingOrder.Level: query = query.OrderByDescending(q => q.Level); break; } break; } query = query.Skip(filter.Skip).Take(filter.Take); return(query); }