Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult> GetOpenTickets(GetTicketsRequestModel model)
        {
            var result = DataTable(await SupportReader.GetTickets(model));

            return(result);
        }