using Microsoft.AspNetCore.Mvc;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.Domain.UseCase;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Demo.API.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class AdminController : ControllerBase
    {
        private readonly UserUseCase _userUseCase;
        private readonly GroupUseCase _groupUseCase;
        private readonly UseCasePresence _presenceUseCase;

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

        [HttpPost("addUser")]
        public IActionResult AddUser([FromBody] User user)
        {
            _userUseCase.UpdateUser(user);
            return Ok();
        }

        [HttpPut("updateUser")]
        public IActionResult UpdateUser([FromBody] User user)
        {
            _userUseCase.UpdateUser(user);
            return Ok();
        }

        [HttpDelete("deleteUser/{id}")]
        public IActionResult DeleteUser(Guid id)
        {
            _userUseCase.DeleteUser(id);
            return Ok();
        }

        [HttpGet("getUser/{id}")]
        public IActionResult GetUser(Guid id)
        {
            var user = _userUseCase.GetUserById(id);
            if (user == null)
            {
                return NotFound();
            }
            return Ok(user);
        }

        [HttpGet("getAllUsers")]
        public IActionResult GetAllUsers()
        {
            var users = _userUseCase.GetAllUsers();
            return Ok(users);
        }

        [HttpGet("getPresenceByUser/{userId}")]
        public IActionResult GetPresenceByUser(Guid userId)
        {
            var presence = _presenceUseCase.GetPresenceByGroup(userId);
            if (presence == null)
            {
                return NotFound();
            }
            return Ok(presence);
        }
    }
}