pr1/presence/presence_api/Controllers/AdminController.cs
2024-12-19 20:36:57 +03:00

106 lines
3.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; }
}