106 lines
3.4 KiB
C#
106 lines
3.4 KiB
C#
|
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; }
|
|||
|
}
|