using GroupService.Infrastructure; using GroupService.WebApi.Application.Dtos; using GroupService.WebApi.Application.Group; using IM.ASPNETCore; using IM.Commons; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace GroupService.WebApi.Controllers.Group { [Route("api/[controller]/[action]")] [Authorize] [ApiController] public class GroupController : ControllerBase { private readonly Application.Group.GroupService service; public GroupController(Application.Group.GroupService service) { this.service = service; } [HttpGet] [ProducesDefaultResponseType(typeof(Result>))] public async Task GetAll() { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.GetAllAsync(Guid.Parse(userId))); } [HttpGet] [ProducesDefaultResponseType(typeof(Result))] public async Task GetOne(Guid groupId) { return Ok(await service.GetByIdAsync(groupId)); } [HttpPost] [UnitOfWork(typeof(GroupDbContext))] public async Task Create(GroupCreateRequest request) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.CreateAsync(new GroupCreateCommand(Guid.Parse(userId), request.Name))); } [HttpPost] [UnitOfWork(typeof(GroupDbContext))] public async Task Update(GroupUpdateRequest request) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.UpdateAsync(new GroupUpdateCommand(Guid.Parse(userId), request.GroupId, request.Avatar, request.GroupName, request.Description))); } } }