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.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. namespace Diligent.WebAPI.Host.Controllers
  12. {
  13. [ApiVersion("1.0")]
  14. [ApiController]
  15. [Route("v{version:apiVersion}/[controller]")]
  16. public class RequestController:ControllerBase
  17. {
  18. private readonly IMediator _mediator;
  19. public RequestController(IMediator mediator)
  20. {
  21. _mediator = mediator;
  22. }
  23. [HttpGet]
  24. public async Task<List<Request>> GetRequests() =>
  25. await _mediator.Send(new GetAllRequestsQuery());
  26. [HttpGet("{id}")]
  27. public async Task<Request> GetRequestById(string id) =>
  28. await _mediator.Send(new GetRequestQuery(id));
  29. // get all rooms for which exist at least one request from customer
  30. [HttpGet("request-rooms")]
  31. public async Task<ActionResult<List<RequestRoomReadDTO>>> GetRoomsForWhichRequestExist() =>
  32. await _mediator.Send(new GetRoomsForWhichRequestExistQuery());
  33. [HttpGet("room-customers")]
  34. public async Task<ActionResult<List<CustomerRequestRoomReadDTO>>> GetCustomersForSpecificRequestRoom(string id) =>
  35. await _mediator.Send(new GetSendersForSpecificRequestRoomQuery(id));
  36. [HttpPost("accept-request")]
  37. public async Task<ActionResult> AcceptCustomerRequest(AcceptCustomerDTO acceptCustomerDTO)
  38. {
  39. var id = await _mediator.Send(new AcceptCustomerRequestCommand(acceptCustomerDTO.customerId, acceptCustomerDTO.roomId));
  40. return Ok(id);
  41. }
  42. [HttpPost("reject-request")]
  43. public async Task<ActionResult> RejectCustomerRequest(AcceptCustomerDTO acceptCustomerDTO)
  44. {
  45. var id = await _mediator.Send(new RejectCustomerRequestCommand(acceptCustomerDTO.customerId, acceptCustomerDTO.roomId));
  46. return Ok(id);
  47. }
  48. [HttpPost("join-request")]
  49. public async Task<IActionResult> CreateRequest(RequestCreateDTO req)
  50. {
  51. var request = await _mediator.Send(new CreateRequestCommand(req));
  52. return CreatedAtAction(nameof(RequestController.CreateRequest), new { id = request.Id }, request);
  53. }
  54. }
  55. }