using ContactService.Infrastructure; using ContactService.WebApi.Application.Dtos; using ContactService.WebApi.Application.FriendRequest; using IM.ASPNETCore; using IM.Commons; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace ContactService.WebApi.Controllers { [Authorize] [Route("api/[controller]/[action]")] [ApiController] public class FriendRequestController : ControllerBase { private readonly FriendRequestService service; public FriendRequestController(FriendRequestService service) { this.service = service; } [HttpPost] [UnitOfWork(typeof(ContactDbContext))] [ProducesDefaultResponseType(typeof(Result))] public async Task Add(FriendRequestAddRequest request) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.CreateAsync(new CreateFriendRequestCommand(Guid.Parse(userId), request.TargetId, request.Description, request.RemarkName))); } [HttpPost] [UnitOfWork(typeof(ContactDbContext))] public async Task Handle(FriendRequestHandleRequest request) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.UpdateStatusAsync(new FriendRequestHandleCommand(Guid.Parse(userId), request.RequestId, request.Action,request.RemarkName))); } [HttpGet] public async Task List() { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); return Ok(await service.GetByTargetIdOrOwnerIdAsync(Guid.Parse(userId))); } } }