< Summary

Information
Class: CoWorkingApp.API.Infrastructure.Presentation.Controllers.UserController
Assembly: CoWorkingApp.API
File(s): H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Presentation\Controllers\UserController.cs
Line coverage
100%
Covered lines: 16
Uncovered lines: 0
Coverable lines: 16
Total lines: 53
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.ctor(...)100%1100%
GetByEmail()100%2100%

File(s)

H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Presentation\Controllers\UserController.cs

#LineLine coverage
 1using CoWorkingApp.Core.Application.Contracts.Services;
 2using CoWorkingApp.Core.Domain.DTOs;
 3using Microsoft.AspNetCore.Mvc;
 4
 5namespace CoWorkingApp.API.Infrastructure.Presentation.Controllers
 6{
 7    /// <summary>
 8    /// Controlador para las operaciones relacionadas con la entidad User.
 9    /// </summary>
 10    [ApiController]
 11    [Route("api/[controller]s")] // Se utiliza el plural "users" en la ruta para seguir convenciones RESTful
 12    public class UserController : ControllerGeneric<IUserService, UserRequest, UserResponse>
 13    {
 14        /// <summary>
 15        /// Constructor de la clase UserController.
 16        /// </summary>
 17        /// <param name="service">Instancia del servicio de usuarios.</param>
 18        /// <param name="logger">Instancia del logger.</param>
 8019        public UserController(IUserService service, ILogger<ControllerGeneric<IUserService, UserRequest, UserResponse>> 
 20
 21        /// <summary>
 22        /// Obtiene un usuario por su dirección de correo electrónico.
 23        /// </summary>
 24        /// <param name="email">Dirección de correo electrónico del usuario.</param>
 25        /// <returns>ActionResult con el usuario correspondiente al correo electrónico o NotFound si no existe.</returns
 26        [HttpGet("email/{email}")]
 27        [ResponseCache(Duration = 60)] // Se agrega caché HTTP para mejorar el rendimiento
 28        public async Task<ActionResult<UserResponse>> GetByEmail(string email)
 329        {
 30            try
 331            {
 32                // Llama al servicio para obtener un usuario por su dirección de correo electrónico
 333                var response = await _service.GetByEmailAsync(email);
 34
 235                if (!response.Success)
 136                {
 137                    response.Message = "Error occurred while retrieving the user by email.";
 138                    response.Errors.Add(response.Message);
 139                    return BadRequest(response);
 40                }
 41
 142                return Ok(response);
 43            }
 144            catch (Exception)
 145            {
 46                // Maneja cualquier otra excepción inesperada
 147                var exception = new Exception("An unexpected error occurred while getting the user by email.");
 148                _logger.LogError(exception, exception.Message);
 149                return StatusCode(500, HandleException(exception));
 50            }
 351        }
 52    }
 53}