You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RoomController.cs 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Diligent.WebAPI.Data.Entities;
  2. using Diligent.WebAPI.Host.Mediator.Rooms.Commands;
  3. using Diligent.WebAPI.Host.Mediator.Rooms.Queries;
  4. using MediatR;
  5. using Microsoft.AspNetCore.Authorization;
  6. using Microsoft.AspNetCore.Mvc;
  7. namespace Diligent.WebAPI.Host.Controllers
  8. {
  9. [ApiVersion("1.0")]
  10. [ApiController]
  11. [Route("v{version:apiVersion}/[controller]")]
  12. public class RoomController : ControllerBase
  13. {
  14. private readonly IMediator _mediator;
  15. public RoomController(IMediator mediator)
  16. {
  17. _mediator = mediator;
  18. }
  19. [Authorize(Roles = "Customer,Support")]
  20. [HttpGet("rooms-with-filtered-messages")]
  21. public async Task<ActionResult<List<Room>>> GetAllRoomsWithFilteredMessages(string customerId) =>
  22. await _mediator.Send(new GetAllRoomsWithFilteredMessagesQuery(customerId));
  23. [HttpGet("support-rooms")]
  24. [Authorize(Roles = "Support")]
  25. public async Task<ActionResult<List<Room>>> GetSupportRooms(string supportId) =>
  26. await _mediator.Send(new GetRoomsWhichSupportCreatedQuery(supportId));
  27. [HttpPost]
  28. [Authorize(Roles = "Support")]
  29. public async Task<ActionResult<Room>> CreateChat(Room room)
  30. {
  31. await _mediator.Send(new CreateRoomCommand(room));
  32. return room;
  33. }
  34. }
  35. }