pr1/presence/presence_api/Controllers/AdminController.cs

106 lines
3.4 KiB
C#
Raw Normal View History

2024-12-19 17:36:57 +00:00
using Demo.domain.Models;
using Demo.Domain.UseCase;
using domain.UseCase;
using Microsoft.AspNetCore.Mvc;
using presence_api.Response;
namespace presence_api.Controllers;
[ApiController]
[Route("api/[admin]")]
public class AdminController:ControllerBase
{
private readonly AdminUseCase _adminUseCase;
public AdminController(AdminUseCase adminUseCase)
{
_adminUseCase = adminUseCase;
}
[HttpPost("~/AddStudents")]
public ActionResult AddStudents([FromBody] AddStudentsRequest request)
{
if (string.IsNullOrWhiteSpace(request.GroupName) || request.Students == null || request.Students.Count == 0)
{
return BadRequest("Некорректные данные для добавления студентов.");
}
bool result = _adminUseCase.AddStudents(request.GroupName, request.Students);
return result ? Ok("Данные группы и студентов добавлены") : StatusCode(500, "Не удалось добавить данные.");
}
[HttpDelete("~/DeleteUserFromGroup")]
public ActionResult DeleteUserFromGroup([FromQuery] int userId, [FromQuery] int groupId)
{
if (userId <= 0 || groupId <= 0)
{
return BadRequest("Некорректные идентификаторы.");
}
bool result = _adminUseCase.DeleteUserFromGroup(userId, groupId);
return result ? Ok("Юзер удален") : NotFound("Юзер не найден.");
}
[HttpDelete("~/DeleteGroup")]
public ActionResult DeleteGroup([FromQuery] int groupId)
{
if (groupId <= 0)
{
return BadRequest("Некорректный идентификатор группы.");
}
bool result = _adminUseCase.DeleteGroup(groupId);
return result ? Ok("Группа удалена") : NotFound("Группа не найдена.");
}
[HttpDelete("~/ClearPresence")]
public ActionResult ClearPresence()
{
try
{
// Вызов метода сервиса для очистки данных о присутствии
_presenceService.ClearAllPresenceData();
// Возврат успешного ответа
return NoContent(); // 204 No Content
}
catch (Exception ex)
{
// Логирование ошибки (если необходимо)
// _logger.LogError(ex, "Error clearing presence data");
// Возврат ошибки сервера
return StatusCode(500, "Internal server error");
}
}
[HttpGet("~/GetAllGroupsWithStudents")]
public ActionResult<IEnumerable<GroupResponse>> GetAllGroupsWithStudents()
{
var groups = _adminUseCase.GetAllGroupsWithStudents();
return Ok(groups);
}
[HttpGet("~/GetStudentInfo")]
public ActionResult<UserResponse?> GetStudentInfo([FromQuery] int userId)
{
if (userId <= 0)
{
return BadRequest("Некорректный идентификатор пользователя.");
}
var studentInfo = _adminUseCase.GetStudentInfo(userId);
if (studentInfo == null)
{
return NotFound("Студент не найден.");
}
return Ok(studentInfo);
}
}
public class AddStudentsRequest
{
public string GroupName { get; set; }
public List<string> Students { get; set; }
}