public async Task <List <Store_StoreGroupingDTO> > SingleListStoreGrouping([FromBody] Store_StoreGroupingFilterDTO Store_StoreGroupingFilterDTO) { if (!ModelState.IsValid) { throw new BindException(ModelState); } StoreGroupingFilter StoreGroupingFilter = new StoreGroupingFilter(); StoreGroupingFilter.Skip = 0; StoreGroupingFilter.Take = int.MaxValue; StoreGroupingFilter.OrderBy = StoreGroupingOrder.Id; StoreGroupingFilter.OrderType = OrderType.ASC; StoreGroupingFilter.Selects = StoreGroupingSelect.ALL; StoreGroupingFilter.Id = Store_StoreGroupingFilterDTO.Id; StoreGroupingFilter.Code = Store_StoreGroupingFilterDTO.Code; StoreGroupingFilter.Name = Store_StoreGroupingFilterDTO.Name; StoreGroupingFilter.ParentId = Store_StoreGroupingFilterDTO.ParentId; StoreGroupingFilter.Path = Store_StoreGroupingFilterDTO.Path; StoreGroupingFilter.Level = Store_StoreGroupingFilterDTO.Level; StoreGroupingFilter.StatusId = Store_StoreGroupingFilterDTO.StatusId; if (StoreGroupingFilter.Id == null) { StoreGroupingFilter.Id = new IdFilter(); } StoreGroupingFilter.Id.In = await FilterStoreGrouping(StoreGroupingService, CurrentContext); List <StoreGrouping> StoreGroupings = await StoreGroupingService.List(StoreGroupingFilter); List <Store_StoreGroupingDTO> Store_StoreGroupingDTOs = StoreGroupings .Select(x => new Store_StoreGroupingDTO(x)).ToList(); return(Store_StoreGroupingDTOs); }
public async Task <int> Count(StoreGroupingFilter filter) { IQueryable <StoreGroupingDAO> StoreGroupings = DataContext.StoreGrouping.AsNoTracking(); StoreGroupings = DynamicFilter(StoreGroupings, filter); return(await StoreGroupings.CountAsync()); }
public StoreGroupingFilter ToFilter(StoreGroupingFilter filter) { if (filter.OrFilter == null) { filter.OrFilter = new List <StoreGroupingFilter>(); } if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0) { return(filter); } foreach (var currentFilter in CurrentContext.Filters) { StoreGroupingFilter subFilter = new StoreGroupingFilter(); 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.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; } if (FilterPermissionDefinition.Name == nameof(subFilter.StatusId)) { subFilter.StatusId = FilterPermissionDefinition.IdFilter; } } } return(filter); }
public async Task <List <StoreGrouping> > List(StoreGroupingFilter filter) { if (filter == null) { return(new List <StoreGrouping>()); } IQueryable <StoreGroupingDAO> StoreGroupingDAOs = DataContext.StoreGrouping.AsNoTracking(); StoreGroupingDAOs = DynamicFilter(StoreGroupingDAOs, filter); StoreGroupingDAOs = DynamicOrder(StoreGroupingDAOs, filter); List <StoreGrouping> StoreGroupings = await DynamicSelect(StoreGroupingDAOs, filter); return(StoreGroupings); }
public async Task <bool> ValidateId(StoreGrouping StoreGrouping) { StoreGroupingFilter StoreGroupingFilter = new StoreGroupingFilter { Skip = 0, Take = 10, Id = new IdFilter { Equal = StoreGrouping.Id }, Selects = StoreGroupingSelect.Id }; int count = await UOW.StoreGroupingRepository.Count(StoreGroupingFilter); if (count == 0) { StoreGrouping.AddError(nameof(StoreGroupingValidator), nameof(StoreGrouping.Id), ErrorCode.IdNotExisted); } return(count == 1); }
public async Task <List <StoreGrouping> > List(StoreGroupingFilter StoreGroupingFilter) { try { List <StoreGrouping> StoreGroupings = await UOW.StoreGroupingRepository.List(StoreGroupingFilter); return(StoreGroupings); } catch (Exception ex) { if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(StoreGroupingService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(StoreGroupingService)); throw new MessageException(ex.InnerException); } } }
public async Task <int> Count(StoreGroupingFilter StoreGroupingFilter) { try { int result = await UOW.StoreGroupingRepository.Count(StoreGroupingFilter); return(result); } catch (Exception ex) { if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(StoreGroupingService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(StoreGroupingService)); throw new MessageException(ex.InnerException); } } }
private IQueryable <StoreGroupingDAO> OrFilter(IQueryable <StoreGroupingDAO> query, StoreGroupingFilter filter) { if (filter.OrFilter == null || filter.OrFilter.Count == 0) { return(query); } IQueryable <StoreGroupingDAO> initQuery = query.Where(q => false); foreach (StoreGroupingFilter StoreGroupingFilter in filter.OrFilter) { IQueryable <StoreGroupingDAO> queryable = query; if (StoreGroupingFilter.Id != null) { queryable = queryable.Where(q => q.Id, StoreGroupingFilter.Id); } if (StoreGroupingFilter.Code != null) { queryable = queryable.Where(q => q.Code, StoreGroupingFilter.Code); } if (StoreGroupingFilter.Name != null) { queryable = queryable.Where(q => q.Name, StoreGroupingFilter.Name); } if (StoreGroupingFilter.ParentId != null) { queryable = queryable.Where(q => q.ParentId, StoreGroupingFilter.ParentId); } if (StoreGroupingFilter.Path != null) { queryable = queryable.Where(q => q.Path, StoreGroupingFilter.Path); } if (StoreGroupingFilter.Level != null) { queryable = queryable.Where(q => q.Level, StoreGroupingFilter.Level); } if (StoreGroupingFilter.StatusId != null) { queryable = queryable.Where(q => q.StatusId, StoreGroupingFilter.StatusId); } initQuery = initQuery.Union(queryable); } return(initQuery); }
private IQueryable <StoreGroupingDAO> DynamicFilter(IQueryable <StoreGroupingDAO> query, StoreGroupingFilter 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.ParentId != null) { query = query.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); } if (filter.StatusId != null) { query = query.Where(q => q.StatusId, filter.StatusId); } query = OrFilter(query, filter); return(query); }
private async Task <List <StoreGrouping> > DynamicSelect(IQueryable <StoreGroupingDAO> query, StoreGroupingFilter filter) { List <StoreGrouping> StoreGroupings = await query.Select(q => new StoreGrouping() { Id = filter.Selects.Contains(StoreGroupingSelect.Id) ? q.Id : default(long), Code = filter.Selects.Contains(StoreGroupingSelect.Code) ? q.Code : default(string), Name = filter.Selects.Contains(StoreGroupingSelect.Name) ? q.Name : default(string), ParentId = filter.Selects.Contains(StoreGroupingSelect.Parent) ? q.ParentId : default(long?), Path = filter.Selects.Contains(StoreGroupingSelect.Path) ? q.Path : default(string), Level = filter.Selects.Contains(StoreGroupingSelect.Level) ? q.Level : default(long), StatusId = filter.Selects.Contains(StoreGroupingSelect.Status) ? q.StatusId : default(long), Parent = filter.Selects.Contains(StoreGroupingSelect.Parent) && q.Parent != null ? new StoreGrouping { Id = q.Parent.Id, Code = q.Parent.Code, Name = q.Parent.Name, ParentId = q.Parent.ParentId, Path = q.Parent.Path, Level = q.Parent.Level, StatusId = q.Parent.StatusId, } : null, Status = filter.Selects.Contains(StoreGroupingSelect.Status) && q.Status != null ? new Status { Id = q.Status.Id, Code = q.Status.Code, Name = q.Status.Name, } : null, CreatedAt = q.CreatedAt, UpdatedAt = q.UpdatedAt, }).ToListAsync(); return(StoreGroupings); }
private IQueryable <StoreGroupingDAO> DynamicOrder(IQueryable <StoreGroupingDAO> query, StoreGroupingFilter filter) { switch (filter.OrderType) { case OrderType.ASC: switch (filter.OrderBy) { case StoreGroupingOrder.Id: query = query.OrderBy(q => q.Id); break; case StoreGroupingOrder.Code: query = query.OrderBy(q => q.Code); break; case StoreGroupingOrder.Name: query = query.OrderBy(q => q.Name); break; case StoreGroupingOrder.Parent: query = query.OrderBy(q => q.ParentId); break; case StoreGroupingOrder.Path: query = query.OrderBy(q => q.Path); break; case StoreGroupingOrder.Level: query = query.OrderBy(q => q.Level); break; case StoreGroupingOrder.Status: query = query.OrderBy(q => q.StatusId); break; } break; case OrderType.DESC: switch (filter.OrderBy) { case StoreGroupingOrder.Id: query = query.OrderByDescending(q => q.Id); break; case StoreGroupingOrder.Code: query = query.OrderByDescending(q => q.Code); break; case StoreGroupingOrder.Name: query = query.OrderByDescending(q => q.Name); break; case StoreGroupingOrder.Parent: query = query.OrderByDescending(q => q.ParentId); break; case StoreGroupingOrder.Path: query = query.OrderByDescending(q => q.Path); break; case StoreGroupingOrder.Level: query = query.OrderByDescending(q => q.Level); break; case StoreGroupingOrder.Status: query = query.OrderByDescending(q => q.StatusId); break; } break; } query = query.Skip(filter.Skip).Take(filter.Take); return(query); }