| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using AutoMapper;
- using Diligent.WebAPI.Business.Services;
- using Diligent.WebAPI.Data.Entities;
- using Diligent.WebAPI.Host.DTOs.Customer;
- using Diligent.WebAPI.Host.DTOs.Request;
- using Diligent.WebAPI.Host.Exceptions;
- using Diligent.WebAPI.Host.Mediator.Request.Commands;
- using Diligent.WebAPI.Host.Mediator.Request.Queries;
- using MediatR;
- using Microsoft.AspNetCore.Mvc;
-
- namespace Diligent.WebAPI.Host.Controllers
- {
- [ApiVersion("1.0")]
- [ApiController]
- [Route("v{version:apiVersion}/[controller]")]
- public class RequestController:ControllerBase
- {
- private readonly RequestService _requestService;
- private readonly IMapper _mapper;
- private readonly IMediator _mediator;
-
- public RequestController(RequestService requestService,IMapper mapper,IMediator mediator)
- {
- _requestService = requestService;
- _mapper = mapper;
- _mediator = mediator;
- }
-
- [HttpGet]
- public async Task<ActionResult> GetRequests()
- {
- return Ok(await _requestService.GetRequestsAsync());
- }
-
- [HttpGet("{id}")]
- public async Task<ActionResult> GetRequestById(string id)
- {
- if (id == null)
- {
- throw new BadHttpRequestException("Id cannot be null");
- }
-
- var request = await _requestService.GetRequestAsync(id);
-
- if (request == null)
- {
- throw new NotFoundException("Request not found");
- }
-
- return Ok(request);
- }
-
- // get all rooms for which exist at least one request from customer
- [HttpGet("request-rooms")]
- public async Task<ActionResult<List<RequestRoomReadDTO>>> GetRoomsForWhichRequestExist() =>
- await _mediator.Send(new GetRoomsForWhichRequestExistQuery());
-
- [HttpGet("room-customers")]
- public async Task<ActionResult<List<CustomerRequestRoomReadDTO>>> GetCustomersForSpecificRequestRoom(string id) =>
- await _mediator.Send(new GetSendersForSpecificRequestRoomQuery(id));
-
- [HttpPost("accept-request")]
- public async Task<ActionResult> AcceptCustomerRequest(AcceptCustomerDTO acceptCustomerDTO)
- {
- var id = await _mediator.Send(new AcceptCustomerRequestCommand(acceptCustomerDTO.customerId, acceptCustomerDTO.roomId));
- return Ok(id);
- }
-
- [HttpPost("reject-request")]
- public async Task<ActionResult> RejectCustomerRequest(AcceptCustomerDTO acceptCustomerDTO)
- {
- var id = await _mediator.Send(new RejectCustomerRequestCommand(acceptCustomerDTO.customerId, acceptCustomerDTO.roomId));
- return Ok(id);
- }
-
- [HttpPost("join-request")]
- public async Task<IActionResult> CreateRequest(RequestCreateDTO resource)
- {
- if (resource == null)
- throw new BadHttpRequestException("Resource object cannot be null.");
-
- var room = _mapper.Map<Request>(resource);
-
- await _requestService.CreateRequestAsync(room);
-
- return CreatedAtAction(nameof(RequestController.CreateRequest), new { id = room.Id }, room);
- }
-
- }
- }
|