コード例 #1
0
        public async Task <QueryResult <SupportTicketResponse> > GetAllTicketResponsesAsync(int ticketId, SupportTicketResponseQuery queryObj)
        {
            var query = this.context.SupportTicketResponses
                        .Where(str => str.TicketId == ticketId)
                        .Include(str => str.User)
                        .ThenInclude(stru => stru.UserRoles)
                        .ThenInclude(strur => strur.Role)
                        .OrderBy(str => str.PostedAt)
                        .AsQueryable();

            var result = new QueryResult <SupportTicketResponse>();

            result.TotalItems = await query.CountAsync();

            query = query.ApplyPaging(queryObj);

            result.Items = await query.ToListAsync();

            return(result);
        }
コード例 #2
0
        public async Task <IActionResult> GetAllTicketResponses([FromRoute] int ticketId, [FromQuery] SupportTicketResponseQuery queryObj)
        {
            var loggedInUserId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var user           = await userManager.FindByIdAsync(loggedInUserId);

            var ticket = await this.ticketRepository.FindTicketByIdAsync(ticketId);

            if (await this.userManager.IsInRoleAsync(user, RolesEnum.Admin.ToString()) ||
                loggedInUserId == ticket.UserId ||
                loggedInUserId == ticket.AssigneeId)
            {
                var responsesQuery = await this.ticketRepository.GetAllTicketResponsesAsync(ticketId, queryObj);

                var result = this.mapper.Map <QueryResult <SupportTicketResponse>, QueryResultResource <SupportTicketResponseResource> >(responsesQuery);

                return(new OkObjectResult(result));
            }

            return(new ForbidResult());
        }