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