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); }
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()); }