public async Task <DataTablesResponse> GetTickets(GetTicketsRequestModel model) { var dataTablesModel = model.DataTablesModel.Map(); Expression <Func <Entity.Support.SupportTicket, bool> > isClosedExpression = ticket => (ticket.Status == SupportTicketStatus.Closed) == model.IsClosed; Expression <Func <Entity.Support.SupportTicket, bool> > queueExpression = ticket => model.QueueId.HasValue ? ticket.Queue.Id == model.QueueId : true; Expression <Func <Entity.Support.SupportTicket, bool> > tabSearchExpression = ticket => model.TabSearch == null ? true : ticket.Tags.Any(t => t.Name.Contains(model.TabSearch)); using (var context = DataContextFactory.CreateReadOnlyContext()) { var query = context.SupportTicket .AsNoTracking() .Where(isClosedExpression) .Where(queueExpression) .Where(tabSearchExpression) .Select(ticket => new { ticket.Id, ticket.User.UserName, Category = ticket.Category.ToString(), ticket.Title, Status = ticket.Status.ToString(), ticket.LastUpdate, Opened = ticket.Created, Tags = ticket.Tags.Select(x => x.Name).ToList(), QueueId = ticket.Queue.Id, QueueName = ticket.Queue.Name }); return(await query.GetDataTableResultObjectNoLockAsync(dataTablesModel).ConfigureAwait(false)); } }
public async Task <ActionResult> GetOpenTickets(GetTicketsRequestModel model) { var result = DataTable(await SupportReader.GetTickets(model)); return(result); }