예제 #1
0
        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);
        }
예제 #2
0
        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());
        }