< Summary

Information
Class: Despesas.Backend.Controllers.CategoriaController
Assembly: Despesas.Backend
File(s): /src/Despesas.Backend/Controllers/CategoriaController.cs
Line coverage
100%
Covered lines: 43
Uncovered lines: 0
Coverable lines: 43
Total lines: 104
Line coverage: 100%
Branch coverage
100%
Covered branches: 10
Total branches: 10
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Get()100%11100%
GetById()100%11100%
GetByTipoCategoria()100%11100%
Post()100%44100%
Put()100%44100%
Delete()100%22100%

File(s)

/src/Despesas.Backend/Controllers/CategoriaController.cs

#LineLine coverage
 1using Despesas.Application.Abstractions;
 2using Despesas.Application.Dtos;
 3using Despesas.Application.Dtos.Core;
 4using Despesas.GlobalException.CustomExceptions.Core;
 5using Domain.Entities;
 6using Microsoft.AspNetCore.Authorization;
 7using Microsoft.AspNetCore.Mvc;
 8
 9namespace Despesas.Backend.Controllers;
 10
 11public class CategoriaController : AuthController
 12{
 13    private readonly ICategoriaBusiness<CategoriaDto, Categoria> _categoriaBusiness;
 2814    public CategoriaController(ICategoriaBusiness<CategoriaDto, Categoria> categoriaBusiness)
 2815    {
 2816        _categoriaBusiness = categoriaBusiness;
 2817    }
 18
 19    [HttpGet]
 20    [Authorize("Bearer", Roles = "User, Admin")]
 21    [ProducesResponseType(200, Type = typeof(List<CategoriaDto>))]
 22    [ProducesResponseType(401)]
 23    [ProducesResponseType(403)]
 24    public async Task<IActionResult> Get()
 125    {
 126        var categoria = await _categoriaBusiness.FindAll(UserIdentity);
 127        return Ok(categoria);
 128    }
 29
 30    [HttpGet("GetById/{idCategoria}")]
 31    [Authorize("Bearer", Roles = "User, Admin")]
 32    [ProducesResponseType(200, Type = typeof(CategoriaDto))]
 33    [ProducesResponseType(401)]
 34    [ProducesResponseType(403)]
 35    public async Task<IActionResult> GetById([FromRoute] Guid idCategoria)
 236    {
 237        var ccategoria = await _categoriaBusiness.FindById(idCategoria, UserIdentity);
 238        return Ok(ccategoria);
 239    }
 40
 41    [HttpGet("GetByTipoCategoria/{tipoCategoria}")]
 42    [Authorize("Bearer", Roles = "User, Admin")]
 43    [ProducesResponseType(200, Type = typeof(List<CategoriaDto>))]
 44    [ProducesResponseType(401)]
 45    [ProducesResponseType(403)]
 46    public async Task<IActionResult> GetByTipoCategoria([FromRoute] TipoCategoriaDto tipoCategoria)
 247    {
 248        var _categoria = await _categoriaBusiness.FindByTipocategoria(UserIdentity, (int)tipoCategoria);
 249        return Ok(_categoria);
 250    }
 51
 52    [HttpPost]
 53    [Authorize("Bearer", Roles = "User, Admin")]
 54    [ProducesResponseType(200, Type = typeof(CategoriaDto))]
 55    [ProducesResponseType(400, Type = typeof(string))]
 56    [ProducesResponseType(401)]
 57    [ProducesResponseType(403)] public async Task<IActionResult> Post([FromBody] CategoriaDto categoria)
 358    {
 359        if (categoria.IdTipoCategoria == (int)TipoCategoriaDto.Todas)
 160            return BadRequest("Nenhum tipo de Categoria foi selecionado!");
 61
 262        categoria.UsuarioId = UserIdentity;
 263        categoria = await _categoriaBusiness.Create(categoria)
 264            ?? throw new CustomException("Não foi possível realizar o cadastro de uma nova categoria, tente mais tarde o
 165        return Ok(categoria);
 266    }
 67
 68    [HttpPut]
 69    [Authorize("Bearer", Roles = "User, Admin")]
 70    [ProducesResponseType(200, Type = typeof(CategoriaDto))]
 71    [ProducesResponseType(400, Type = typeof(string))]
 72    [ProducesResponseType(401)]
 73    [ProducesResponseType(403)]
 74    public async Task<IActionResult> Put([FromBody] CategoriaDto categoria)
 375    {
 376        if (categoria.IdTipoCategoria == TipoCategoriaDto.Todas)
 177            return BadRequest("Nenhum tipo de Categoria foi selecionado!");
 78
 279        categoria.UsuarioId = UserIdentity;
 280        categoria = await _categoriaBusiness.Update(categoria)
 281            ?? throw new CustomException("Erro ao atualizar categoria!");
 182        return Ok(categoria);
 283    }
 84
 85    [HttpDelete("{idCategoria}")]
 86    [Authorize("Bearer", Roles = "User, Admin")]
 87    [ProducesResponseType(200, Type = typeof(bool))]
 88    [ProducesResponseType(400, Type = typeof(string))]
 89    [ProducesResponseType(401)]
 90    [ProducesResponseType(403)]
 91    public async Task<IActionResult> Delete(Guid idCategoria)
 392    {
 393        var categoria = new CategoriaDto()
 394        {
 395            Id = idCategoria,
 396            UsuarioId = UserIdentity
 397        };
 398        var result = await _categoriaBusiness.Delete(categoria);
 399        if (result)
 1100            return Ok(result);
 101        else
 2102            return BadRequest("Erro ao deletar categoria!");
 3103    }
 104}