mirror of
https://github.com/Govor-team/Govor.git
synced 2026-07-21 19:54:55 +00:00
42348c863f
Introduces FriendshipsController for admin operations, including listing and removing friendships. Updates routing for admin controllers, improves error handling in UsersController, and enhances FriendsController and related services to include requester details in friendship DTOs. Refactors friend request acceptance to use query parameters and updates console client for improved user feedback and local development configuration.
145 lines
4.6 KiB
C#
145 lines
4.6 KiB
C#
using Govor.API.Services.AdminsStuff.Interfaces;
|
|
using Govor.Contracts.DTOs;
|
|
using Govor.Contracts.Requests;
|
|
using Govor.Core.Repositories.Invaites;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Govor.API.Controllers.AdminStuff;
|
|
|
|
[Route("api/admin/[controller]")]
|
|
[ApiController]
|
|
[Authorize(Roles = "Admin")]
|
|
public class InviteUserController : Controller
|
|
{
|
|
private readonly IInvitesRepository _repository;
|
|
private readonly IInvitationGenerator _invitationGenerator;
|
|
private readonly ILogger<InviteUserController> _logger;
|
|
|
|
public InviteUserController(IInvitationGenerator invitationGenerator,
|
|
IInvitesRepository repository,
|
|
ILogger<InviteUserController> logger)
|
|
{
|
|
_invitationGenerator = invitationGenerator;
|
|
_logger = logger;
|
|
_repository = repository;
|
|
}
|
|
|
|
[HttpPost("[action]")]
|
|
public async Task<IActionResult> Invitation([FromBody] CreateInvitationRequest createInvitation)
|
|
{
|
|
try
|
|
{
|
|
var result = await _invitationGenerator.GenerateInvitationCode(createInvitation.EndDate,
|
|
createInvitation.MaxParticipants,
|
|
createInvitation.IsAdmin,
|
|
createInvitation.Description);
|
|
|
|
return Ok(result);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
_logger.LogError(e, e.Message);
|
|
return BadRequest($"An error occured: {e.Message}");
|
|
}
|
|
}
|
|
|
|
[HttpGet("[action]")]
|
|
public async Task<IActionResult> GetAllActiveInvitations()
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Getting all active invitations by administrator");
|
|
|
|
var read = await _repository.GetAllAsync();
|
|
var result = read.Where(x => x.IsActive).ToList();
|
|
|
|
List<InvitationResponses> dtos = new List<InvitationResponses>();
|
|
|
|
foreach (var inv in result)
|
|
{
|
|
dtos.Add(new InvitationResponses(){
|
|
Id = inv.Id,
|
|
Description = inv.Description,
|
|
IsAdmin = inv.IsAdmin,
|
|
MaxParticipants = inv.MaxParticipants,
|
|
Code = inv.Code,
|
|
CreatedAt = inv.DateCreated,
|
|
EndAt = inv.EndDate,
|
|
IsActive = inv.IsActive,
|
|
ParticipantCount = inv.Users.Count,
|
|
});
|
|
}
|
|
|
|
return Ok(dtos);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
_logger.LogError(e, e.Message);
|
|
return BadRequest($"An error occured: {e.Message}");
|
|
}
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<IActionResult> GetAllInvitations()
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Getting all invitations by administrator");
|
|
var read = await _repository.GetAllAsync();
|
|
|
|
List<InvitationResponses> dtos = new List<InvitationResponses>();
|
|
|
|
foreach (var inv in read)
|
|
{
|
|
dtos.Add(new InvitationResponses(){
|
|
Id = inv.Id,
|
|
Description = inv.Description,
|
|
IsAdmin = inv.IsAdmin,
|
|
MaxParticipants = inv.MaxParticipants,
|
|
Code = inv.Code,
|
|
CreatedAt = inv.DateCreated,
|
|
EndAt = inv.EndDate,
|
|
IsActive = inv.IsActive,
|
|
ParticipantCount = inv.Users.Count,
|
|
});
|
|
}
|
|
|
|
return Ok(dtos);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
_logger.LogError(e, e.Message);
|
|
return BadRequest($"An error occured: {e.Message}");
|
|
}
|
|
}
|
|
|
|
[HttpGet("{id:guid}")]
|
|
public async Task<IActionResult> GetInvitationById(Guid id)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Getting invitations {id} by administrator");
|
|
var read = await _repository.FindByIdAsync(id);
|
|
|
|
var response = new InvitationResponses(){
|
|
Id = read.Id,
|
|
Description = read.Description,
|
|
IsAdmin = read.IsAdmin,
|
|
MaxParticipants = read.MaxParticipants,
|
|
Code = read.Code,
|
|
CreatedAt = read.DateCreated,
|
|
EndAt = read.EndDate,
|
|
IsActive = read.IsActive,
|
|
ParticipantCount = read.Users.Count,
|
|
};
|
|
|
|
return Ok(response);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
_logger.LogError(e, e.Message);
|
|
return BadRequest($"An error occured: {e.Message}");
|
|
}
|
|
}
|
|
} |