presence/presence_api/Controllers/AdminController.cs

170 lines
5.1 KiB
C#
Raw Normal View History

2024-11-08 17:42:34 +00:00
using Demo.Domain.Models;
using Demo.Domain.UseCase;
using Microsoft.AspNetCore.Mvc;
using Npgsql.TypeMapping;
namespace presence_api.Controllers;
[ApiController]
[Route("api/[controller]")]
public class AdminController: ControllerBase{
private readonly GroupUseCase _groupUseCase;
private readonly UserUseCase _userUseCase;
private readonly PresenceUseCase _presenceUseCase;
2024-11-14 13:33:46 +00:00
private readonly ILogger<AdminController> _logger;
public AdminController(GroupUseCase groupUseCase, UserUseCase userUseCase, PresenceUseCase presenceUseCase, ILogger<AdminController> logger){
2024-11-08 17:42:34 +00:00
_groupUseCase = groupUseCase;
_userUseCase = userUseCase;
_presenceUseCase = presenceUseCase;
2024-11-14 13:33:46 +00:00
_logger = logger;
2024-11-08 17:42:34 +00:00
}
//post
2025-04-30 01:13:44 +00:00
// +
2024-11-08 17:42:34 +00:00
[HttpPost]
public ActionResult<bool> CreateGroup([FromBody] GroupWithUsers request)
{
if (request == null || string.IsNullOrEmpty(request.GroupName))
{
2024-11-29 07:41:36 +00:00
_logger.LogWarning("CreateGroup: Invalid request");
2024-11-08 17:42:34 +00:00
return BadRequest("Invalid request");
}
bool isCreated = _groupUseCase.CreateGroup(request.GroupName);
2025-04-30 01:13:44 +00:00
return Ok(isCreated);
}
2024-11-08 17:42:34 +00:00
2025-04-30 01:13:44 +00:00
[HttpPost("usercreate")]
public ActionResult<bool> CreateUser([FromBody] CreateUserRequest request)
{
if (request == null || string.IsNullOrEmpty(request.GroupName))
{
_logger.LogWarning("CreateUser: Invalid request");
return BadRequest("Invalid request");
2024-11-08 17:42:34 +00:00
}
2025-04-30 01:13:44 +00:00
bool isCreated = _userUseCase.CreateUser(request.Fio, request.GroupName);
2024-11-08 17:42:34 +00:00
return Ok(isCreated);
}
//delete
[HttpDelete("user")]
public ActionResult<bool> DeleteUser(Guid userGuid){
if (userGuid == Guid.Empty){
2024-11-29 07:41:36 +00:00
_logger.LogWarning("DeleteUser: userGuid empty");
2024-11-08 17:42:34 +00:00
return BadRequest("Invalid request");
}
bool isDeleted = _userUseCase.RemoveUserByGuid(userGuid);
if (isDeleted == false){
2024-11-29 07:41:36 +00:00
_logger.LogWarning("DeleteUser: User not found");
2024-11-08 17:42:34 +00:00
return NotFound("User not found");
}
return Ok(true);
}
[HttpDelete("users")]
public ActionResult<bool> DeleteUsers([FromBody] DeleteUsersRequest request){
if (request == null){
2024-11-29 07:41:36 +00:00
_logger.LogWarning("DeleteUsers null request");
2024-11-08 17:42:34 +00:00
return BadRequest("Invalid request");
}
foreach (Guid userGuid in request.UsersGuid)
{
bool isDeleted = _userUseCase.RemoveUserByGuid(userGuid);
if (isDeleted == false){
2024-11-14 13:33:46 +00:00
_logger.LogWarning("User not found");
2024-11-08 17:42:34 +00:00
return NotFound("User not found");
}
}
return Ok(true);
}
2025-04-30 01:13:44 +00:00
[HttpDelete("usersbygroupid/{groupId}")]
public ActionResult<bool> DeleteUsersByGroupId(int groupId)
{
bool isDeleted = _userUseCase.RemoveUsersByGroupID(groupId);
if (!isDeleted)
{
_logger.LogWarning($"Group {groupId} not found or has no users");
return NotFound("Group not found or has no users");
}
return Ok(true);
}
// +
2024-11-08 17:42:34 +00:00
[HttpDelete("group")]
public ActionResult<bool> DeleteGroup(int GroupID){
bool isDeleted = _groupUseCase.RemoveGroupByID(GroupID);
if (isDeleted == false){
2024-11-14 13:33:46 +00:00
_logger.LogWarning("Group not found");
2024-11-08 17:42:34 +00:00
return NotFound("Group not found");
}
return Ok(true);
}
2025-04-30 01:13:44 +00:00
// +
2024-11-08 17:42:34 +00:00
[HttpDelete("groups")]
public ActionResult<bool> DeleteGroups([FromBody] DeleteGroupsRequest request){
if (request == null){
2024-11-14 13:33:46 +00:00
_logger.LogWarning("Invalid request");
2024-11-08 17:42:34 +00:00
return BadRequest("Invalid request");
}
foreach (int GroupID in request.GroupIDs)
{
bool isDeleted = _groupUseCase.RemoveGroupByID(GroupID);
if (isDeleted == false){
2024-11-14 13:33:46 +00:00
_logger.LogWarning("Group not found");
2024-11-08 17:42:34 +00:00
return NotFound("Group not found");
}
}
return Ok(true);
}
2025-04-30 01:13:44 +00:00
// +
2024-11-08 17:42:34 +00:00
[HttpDelete("presence")]
public ActionResult<bool> DeletePresence(){
return Ok(_presenceUseCase.DeletePresence());
}
//get
2025-04-30 01:13:44 +00:00
// +
2024-11-08 17:42:34 +00:00
[HttpGet]
public ActionResult<IEnumerable<GroupU>> getGroupsWithUsers()
{
return Ok(_groupUseCase.GetAllGroupsWithUsers());
}
2025-04-30 01:13:44 +00:00
// +
2024-11-08 17:42:34 +00:00
[HttpGet("user/{userGuid}")]
public ActionResult<User> GetUserByGuid(Guid userGuid)
{
var user = _userUseCase.GetUserByGuid(userGuid);
if (user != null){
return Ok(user);
} else{
2024-11-14 13:33:46 +00:00
_logger.LogWarning("User not found");
2024-11-08 17:42:34 +00:00
return NotFound("User not found");
}
}
2025-04-30 01:13:44 +00:00
//Patch
[HttpPatch("updatefio/user/{userGuid}")]
public ActionResult<bool> UpdateUserFio(Guid userGuid, [FromBody] UpdateFioRequest request)
{
if (string.IsNullOrWhiteSpace(request?.Fio))
{
return BadRequest("FIO cannot be empty");
}
var isUpdated = _userUseCase.UpdateFioUser(userGuid, request.Fio);
if (!isUpdated)
{
_logger.LogWarning("User not found");
return NotFound("User not found");
}
return Ok(true);
}
2024-11-08 17:42:34 +00:00
}