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.

RequestController.cs 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using AutoMapper;
  2. using Diligent.WebAPI.Business.Services;
  3. using Diligent.WebAPI.Data.Entities;
  4. using Diligent.WebAPI.Host.DTOs.Customer;
  5. using Diligent.WebAPI.Host.DTOs.Request;
  6. using Diligent.WebAPI.Host.Exceptions;
  7. using Diligent.WebAPI.Host.Mediator.Request.Commands;
  8. using Diligent.WebAPI.Host.Mediator.Request.Queries;
  9. using MediatR;
  10. using Microsoft.AspNetCore.Mvc;
  11. using System.Diagnostics.CodeAnalysis;
  12. namespace Diligent.WebAPI.Host.Controllers
  13. {
  14. [ApiVersion("1.0")]
  15. [ApiController]
  16. [Route("v{version:apiVersion}/[controller]")]
  17. [ExcludeFromCodeCoverage]
  18. public class RequestController:ControllerBase
  19. {
  20. private readonly IMediator _mediator;
  21. public RequestController(IMediator mediator)
  22. {
  23. _mediator = mediator;
  24. }
  25. [HttpGet]
  26. public async Task<List<Request>> GetRequests() =>
  27. await _mediator.Send(new GetAllRequestsQuery());
  28. [HttpGet("{id}")]
  29. public async Task<Request> GetRequestById(string id) =>
  30. await _mediator.Send(new GetRequestQuery(id));
  31. // get all rooms for which exist at least one request from customer
  32. [HttpGet("request-rooms")]
  33. public async Task<ActionResult<List<RequestRoomReadDTO>>> GetRoomsForWhichRequestExist() =>
  34. await _mediator.Send(new GetRoomsForWhichRequestExistQuery());
  35. [HttpGet("room-customers")]
  36. public async Task<ActionResult<List<CustomerRequestRoomReadDTO>>> GetCustomersForSpecificRequestRoom(string id) =>
  37. await _mediator.Send(new GetSendersForSpecificRequestRoomQuery(id));
  38. //public async Task<ActionResult> AcceptCustomerRequest(AcceptCustomerRequestCommand request)
  39. [HttpPost("accept-request")]
  40. public async Task<ActionResult> AcceptCustomerRequest(AcceptCustomerDTO acceptCustomerDTO)
  41. {
  42. //var id = await _mediator.Send(request);
  43. var id = await _mediator.Send(new AcceptCustomerRequestCommand(acceptCustomerDTO.customerId, acceptCustomerDTO.roomId));
  44. return Ok(id);
  45. }
  46. [HttpPost("reject-request")]
  47. public async Task<ActionResult> RejectCustomerRequest(AcceptCustomerDTO acceptCustomerDTO)
  48. {
  49. var id = await _mediator.Send(new RejectCustomerRequestCommand(acceptCustomerDTO.customerId, acceptCustomerDTO.roomId));
  50. return Ok(id);
  51. }
  52. [HttpPost("join-request")]
  53. public async Task<IActionResult> CreateRequest(RequestCreateDTO req)
  54. {
  55. var request = await _mediator.Send(new CreateRequestCommand(req));
  56. return CreatedAtAction(nameof(RequestController.CreateRequest), new { id = request.Id }, request);
  57. }
  58. }
  59. }