using domain.Models;
using domain.UseCase;
using Microsoft.AspNetCore.Mvc;


namespace presence_api.Controllers;

[ApiController]
[Route("api/admin")]

public class AdminPanelController : ControllerBase
{
    private readonly GroupUseCase _groupUseCase;
    private readonly UserUseCase _userUseCase;
    private readonly UseCaseGeneratePresence _presenceUseCase;

    public AdminPanelController(GroupUseCase groupUseCase, UserUseCase userUseCase, UseCaseGeneratePresence presenceUseCase)
    {
        _groupUseCase = groupUseCase;
        _userUseCase = userUseCase;
        _presenceUseCase = presenceUseCase;
    }

    [HttpGet("student/{userGuid}")]
    public ActionResult GetStudentInfo(Guid userGuid)
    {
        // Получаем информацию о студенте
        var user = _userUseCase.GetUserInfo(userGuid); // Используем UserUseCase для получения данных о студенте

        if (user == null)
        {
            return NotFound("Студент не найден");
        }

        

        // Формируем результат
        var result = new
        {
            FIO = user.FIO,
            Guid = user.Guid,
            GroupName = user.Group?.Name ?? "Не указана",
            
        };

        return Ok(result);
    }

    [HttpGet("groups")]
    public ActionResult<List<GroupWithUsersDto>> GetAllGroupsWithUsers()
    {
        try
        {
            // Получаем группы с пользователями
            var groupsWithUsers = _groupUseCase.GetAllGroupWithStident().Select(group => new GroupWithUsersDto
            {
                GroupName = group.Name, // Название группы
                Students = group.Users.Select(u => u.FIO).ToList() // Список студентов
            }).ToList();

            return Ok(groupsWithUsers); // Возвращаем результат
        }
        catch (Exception ex)
        {
            // Логируем ошибку и возвращаем ошибку
            return BadRequest(new { message = ex.Message });
        }
    }

}