using GroupService.Infrastructure; using GroupService.WebApi.Application.GroupRequest; using IM.ASPNETCore; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace GroupService.WebApi.Controllers.GroupRequest { [Authorize] [Route("api/[controller]/[action]")] [ApiController] public class GroupRequestController : ControllerBase { private readonly GroupRequestService service; public GroupRequestController(GroupRequestService service) { this.service = service; } [HttpPost] [UnitOfWork(typeof(GroupDbContext))] public async Task Send([FromBody] GroupRequestRequest request) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.CreateAsync(request.GroupId, Guid.Parse(userId), request.Desc)); } [HttpPost] [UnitOfWork(typeof(GroupDbContext))] public async Task Handle([FromQuery] Guid requestId, [FromQuery] RequestHandleAction action) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.HandleAsync(new RequestHandleCommand(requestId, Guid.Parse(userId), action))); } [HttpGet] public async Task Find([FromQuery] Guid id) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.GetByIdAsync(id, Guid.Parse(userId))); } [HttpGet] public async Task List() { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.GetListAsync(Guid.Parse(userId))); } } }