public async Task <TicketContractedModel> GetByIdAsync(string username, int ticketId) { var query = context.TicketContracted .Include(t => t.Ticket) .Include(t => t.OperationType) .Where(t => t.Ticket.Id == ticketId); var accountManager = accountManagerService.GetAccountManager(username); if (accountManager != null) { query = query.Where(t => t.Ticket.AccountManager.Id == accountManager.Id); } var data = await query.SingleOrDefaultAsync(); if (data == null) { throw new Exception("not-found"); } var result = mapper.Map <TicketContractedModel>(data); if (data.Ticket.WorkflowId != null) { result.MapWorkflowData(await workflowService.GetWorkflowDetailsAsync(data.Ticket.WorkflowId.Value)); } return(result); }
private IQueryable <E> GetData(string username, TicketFilter filter) { var accountManager = accountManagerService.GetAccountManager(username); if (filter.StatusId == -1) { query = query.Where(t => t.Ticket.WorkflowId == null); } else if (filter.StatusId > 0) { var status = GetWorkflowStatus(); query = query.ByWorkflows(status.Select(s => s.WorkflowId)); } return(query.ApplyFilter(filter, accountManager)); }
public async Task <IEnumerable <TicketVariableIncomeModel> > ListAsync( string username, TicketFilter filter ) { var accountManager = accountManagerService.GetAccountManager(username); var query = context.TicketVariableIncome .AsNoTracking() .ApplyFilter(filter, accountManager) .Include(t => t.LineItems) .Include(t => t.Ticket); var data = await query.ToListAsync(); if (data.Count == 0) { return(await Task.FromResult(new TicketVariableIncomeModel[] { })); } var ids = data .Where(d => d.Ticket.WorkflowId != null) .Select(d => (int)d.Ticket.WorkflowId); var workflowDetails = (await workflowService.GetWorkflowsDetailAsync(ids)).ToDictionary(kvp => kvp.WorkflowId, kvp => kvp); var result = data .Select(ticket => { var mapped = mapper.Map <TicketVariableIncomeModel>(ticket); mapped.MapWorkflowData(workflowDetails, ticket.Ticket.WorkflowId); return(mapped); }) .FilterWorkflowStatus(filter.StatusId); return(result.ToList()); }