public async Task <int> Count(TicketOfDepartmentFilter filter) { IQueryable <TicketOfDepartmentDAO> TicketOfDepartments = DataContext.TicketOfDepartment.AsNoTracking(); TicketOfDepartments = DynamicFilter(TicketOfDepartments, filter); return(await TicketOfDepartments.CountAsync()); }
public async Task <List <TicketOfDepartment> > List(TicketOfDepartmentFilter filter) { if (filter == null) { return(new List <TicketOfDepartment>()); } IQueryable <TicketOfDepartmentDAO> TicketOfDepartmentDAOs = DataContext.TicketOfDepartment.AsNoTracking(); TicketOfDepartmentDAOs = DynamicFilter(TicketOfDepartmentDAOs, filter); TicketOfDepartmentDAOs = DynamicOrder(TicketOfDepartmentDAOs, filter); List <TicketOfDepartment> TicketOfDepartments = await DynamicSelect(TicketOfDepartmentDAOs, filter); return(TicketOfDepartments); }
public TicketOfDepartmentFilter ToFilter(TicketOfDepartmentFilter filter) { if (filter.OrFilter == null) { filter.OrFilter = new List <TicketOfDepartmentFilter>(); } if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0) { return(filter); } foreach (var currentFilter in CurrentContext.Filters) { TicketOfDepartmentFilter subFilter = new TicketOfDepartmentFilter(); 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.Notes)) { subFilter.Notes = FilterPermissionDefinition.StringFilter; } if (FilterPermissionDefinition.Name == nameof(subFilter.DepartmentId)) { subFilter.DepartmentId = FilterPermissionDefinition.IdFilter; } if (FilterPermissionDefinition.Name == nameof(subFilter.TicketId)) { subFilter.TicketId = FilterPermissionDefinition.IdFilter; } if (FilterPermissionDefinition.Name == nameof(subFilter.TicketStatusId)) { subFilter.TicketStatusId = FilterPermissionDefinition.IdFilter; } } } return(filter); }
public async Task <bool> ValidateId(TicketOfDepartment TicketOfDepartment) { TicketOfDepartmentFilter TicketOfDepartmentFilter = new TicketOfDepartmentFilter { Skip = 0, Take = 10, Id = new IdFilter { Equal = TicketOfDepartment.Id }, Selects = TicketOfDepartmentSelect.Id }; int count = await UOW.TicketOfDepartmentRepository.Count(TicketOfDepartmentFilter); if (count == 0) { TicketOfDepartment.AddError(nameof(TicketOfDepartmentValidator), nameof(TicketOfDepartment.Id), ErrorCode.IdNotExisted); } return(count == 1); }
public async Task <List <TicketOfDepartment> > List(TicketOfDepartmentFilter TicketOfDepartmentFilter) { try { List <TicketOfDepartment> TicketOfDepartments = await UOW.TicketOfDepartmentRepository.List(TicketOfDepartmentFilter); return(TicketOfDepartments); } catch (Exception ex) { if (ex.InnerException == null) { await Logging.CreateSystemLog(ex, nameof(TicketOfDepartmentService)); throw new MessageException(ex); } else { await Logging.CreateSystemLog(ex.InnerException, nameof(TicketOfDepartmentService)); throw new MessageException(ex.InnerException); } } }
private IQueryable <TicketOfDepartmentDAO> OrFilter(IQueryable <TicketOfDepartmentDAO> query, TicketOfDepartmentFilter filter) { if (filter.OrFilter == null || filter.OrFilter.Count == 0) { return(query); } IQueryable <TicketOfDepartmentDAO> initQuery = query.Where(q => false); foreach (TicketOfDepartmentFilter TicketOfDepartmentFilter in filter.OrFilter) { IQueryable <TicketOfDepartmentDAO> queryable = query; if (TicketOfDepartmentFilter.Id != null) { queryable = queryable.Where(q => q.Id, TicketOfDepartmentFilter.Id); } if (TicketOfDepartmentFilter.Notes != null) { queryable = queryable.Where(q => q.Notes, TicketOfDepartmentFilter.Notes); } if (TicketOfDepartmentFilter.DepartmentId != null) { queryable = queryable.Where(q => q.DepartmentId, TicketOfDepartmentFilter.DepartmentId); } if (TicketOfDepartmentFilter.TicketId != null) { queryable = queryable.Where(q => q.TicketId, TicketOfDepartmentFilter.TicketId); } if (TicketOfDepartmentFilter.TicketStatusId != null) { queryable = queryable.Where(q => q.TicketStatusId, TicketOfDepartmentFilter.TicketStatusId); } initQuery = initQuery.Union(queryable); } return(initQuery); }
private IQueryable <TicketOfDepartmentDAO> DynamicFilter(IQueryable <TicketOfDepartmentDAO> query, TicketOfDepartmentFilter 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.Notes != null) { query = query.Where(q => q.Notes, filter.Notes); } if (filter.DepartmentId != null) { query = query.Where(q => q.DepartmentId, filter.DepartmentId); } if (filter.TicketId != null) { query = query.Where(q => q.TicketId, filter.TicketId); } if (filter.TicketStatusId != null) { query = query.Where(q => q.TicketStatusId, filter.TicketStatusId); } query = OrFilter(query, filter); return(query); }
private async Task <List <TicketOfDepartment> > DynamicSelect(IQueryable <TicketOfDepartmentDAO> query, TicketOfDepartmentFilter filter) { List <TicketOfDepartment> TicketOfDepartments = await query.Select(q => new TicketOfDepartment() { Id = filter.Selects.Contains(TicketOfDepartmentSelect.Id) ? q.Id : default(long), Notes = filter.Selects.Contains(TicketOfDepartmentSelect.Notes) ? q.Notes : default(string), DepartmentId = filter.Selects.Contains(TicketOfDepartmentSelect.Department) ? q.DepartmentId : default(long), TicketId = filter.Selects.Contains(TicketOfDepartmentSelect.Ticket) ? q.TicketId : default(long), TicketStatusId = filter.Selects.Contains(TicketOfDepartmentSelect.TicketStatus) ? q.TicketStatusId : default(long), Department = filter.Selects.Contains(TicketOfDepartmentSelect.Department) && q.Department != null ? new Organization { Id = q.Department.Id, Code = q.Department.Code, Name = q.Department.Name, ParentId = q.Department.ParentId, Path = q.Department.Path, Level = q.Department.Level, StatusId = q.Department.StatusId, Phone = q.Department.Phone, Email = q.Department.Email, Address = q.Department.Address, } : null, Ticket = filter.Selects.Contains(TicketOfDepartmentSelect.Ticket) && q.Ticket != null ? new Ticket { Id = q.Ticket.Id, Name = q.Ticket.Name, Phone = q.Ticket.Phone, CustomerId = q.Ticket.CustomerId, UserId = q.Ticket.UserId, ProductId = q.Ticket.ProductId, ReceiveDate = q.Ticket.ReceiveDate, ProcessDate = q.Ticket.ProcessDate, FinishDate = q.Ticket.FinishDate, Subject = q.Ticket.Subject, Content = q.Ticket.Content, TicketIssueLevelId = q.Ticket.TicketIssueLevelId, TicketPriorityId = q.Ticket.TicketPriorityId, TicketStatusId = q.Ticket.TicketStatusId, TicketSourceId = q.Ticket.TicketSourceId, TicketNumber = q.Ticket.TicketNumber, DepartmentId = q.Ticket.DepartmentId, RelatedTicketId = q.Ticket.RelatedTicketId, SLA = q.Ticket.SLA, RelatedCallLogId = q.Ticket.RelatedCallLogId, ResponseMethodId = q.Ticket.ResponseMethodId, StatusId = q.Ticket.StatusId, Used = q.Ticket.Used, } : null, TicketStatus = filter.Selects.Contains(TicketOfDepartmentSelect.TicketStatus) && q.TicketStatus != null ? new TicketStatus { Id = q.TicketStatus.Id, Name = q.TicketStatus.Name, OrderNumber = q.TicketStatus.OrderNumber, ColorCode = q.TicketStatus.ColorCode, StatusId = q.TicketStatus.StatusId, Used = q.TicketStatus.Used, } : null, CreatedAt = q.CreatedAt, UpdatedAt = q.UpdatedAt, }).ToListAsync(); return(TicketOfDepartments); }
private IQueryable <TicketOfDepartmentDAO> DynamicOrder(IQueryable <TicketOfDepartmentDAO> query, TicketOfDepartmentFilter filter) { switch (filter.OrderType) { case OrderType.ASC: switch (filter.OrderBy) { case TicketOfDepartmentOrder.Id: query = query.OrderBy(q => q.Id); break; case TicketOfDepartmentOrder.Notes: query = query.OrderBy(q => q.Notes); break; case TicketOfDepartmentOrder.Department: query = query.OrderBy(q => q.DepartmentId); break; case TicketOfDepartmentOrder.Ticket: query = query.OrderBy(q => q.TicketId); break; case TicketOfDepartmentOrder.TicketStatus: query = query.OrderBy(q => q.TicketStatusId); break; } break; case OrderType.DESC: switch (filter.OrderBy) { case TicketOfDepartmentOrder.Id: query = query.OrderByDescending(q => q.Id); break; case TicketOfDepartmentOrder.Notes: query = query.OrderByDescending(q => q.Notes); break; case TicketOfDepartmentOrder.Department: query = query.OrderByDescending(q => q.DepartmentId); break; case TicketOfDepartmentOrder.Ticket: query = query.OrderByDescending(q => q.TicketId); break; case TicketOfDepartmentOrder.TicketStatus: query = query.OrderByDescending(q => q.TicketStatusId); break; } break; } query = query.Skip(filter.Skip).Take(filter.Take); return(query); }