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> GetAllGroupsWithStudents() { var groups = _adminUseCase.GetAllGroupsWithStudents(); return Ok(groups); } [HttpGet("~/GetStudentInfo")] public ActionResult 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 Students { get; set; } }