< Summary

Information
Class: Despesas.Application.Implementations.CategoriaBusinessImpl<T>
Assembly: Despesas.Application
File(s): /src/Despesas.Application/Implementations/CategoriaBusinessImpl.cs
Line coverage
73%
Covered lines: 51
Uncovered lines: 18
Coverable lines: 69
Total lines: 111
Line coverage: 73.9%
Branch coverage
44%
Covered branches: 8
Total branches: 18
Branch coverage: 44.4%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Create()50%2276.92%
FindAll()100%11100%
FindById()100%11100%
Update()50%2278.57%
Delete()100%1172.72%
IsValidTipoCategoria(...)75%4480%
IsValidCategoria()50%6680%
FindByTipocategoria()100%210%

File(s)

/src/Despesas.Application/Implementations/CategoriaBusinessImpl.cs

#LineLine coverage
 1using AutoMapper;
 2using Despesas.Application.Abstractions;
 3using Despesas.GlobalException.CustomExceptions;
 4using Despesas.GlobalException.CustomExceptions.Core;
 5using Despesas.Repository.UnitOfWork.Abstractions;
 6using Domain.Core.ValueObject;
 7using Domain.Entities;
 8using MediatR;
 9using Repository.Persistency.Generic;
 10
 11namespace Despesas.Application.Implementations;
 12public class CategoriaBusinessImpl<Dto> : BusinessBase<Dto, Categoria>, ICategoriaBusiness<Dto, Categoria> where Dto : c
 13{
 14    private readonly IMediator _mediator;
 15    private readonly IRepositorio<Categoria> _repositorio;
 616    public CategoriaBusinessImpl(IMediator mediator, IMapper mapper, IUnitOfWork<Categoria> unitOfWork, IRepositorio<Cat
 617    {
 618        _mediator = mediator;
 619        _repositorio = repositorio;
 620    }
 21
 22    public override async Task<Dto> Create(Dto dto)
 123    {
 24        try
 125        {
 126            IsValidTipoCategoria(dto);
 127            var categoria = this.Mapper.Map<Categoria>(dto);
 128            await UnitOfWork.Repository.Insert(categoria);
 129            await UnitOfWork.CommitAsync();
 130            categoria = await UnitOfWork.Repository.Get(categoria.Id)
 131              ?? throw new CustomException("Não foi possível realizar o cadastro de uma nova categoria, tente mais tarde
 132            return this.Mapper.Map<Dto>(categoria);
 33        }
 034        catch
 035        {
 036            throw;
 37        }
 138    }
 39
 40    public override async Task<List<Dto>> FindAll(Guid idUsuario)
 141    {
 142        var lstCategoria = await UnitOfWork.Repository.Find(c => c.UsuarioId == idUsuario);
 143        return this.Mapper.Map<List<Dto>>(lstCategoria);
 144    }
 45
 46    public override async Task<Dto> FindById(Guid id, Guid idUsuario)
 247    {
 248        var result = await UnitOfWork.Repository.Find(c => c.Id == id && c.Usuario.Id == idUsuario);
 249        var categoria = result.FirstOrDefault();
 250        return this.Mapper.Map<Dto>(categoria);
 251    }
 52
 53    public override async Task<Dto> Update(Dto dto)
 154    {
 55        try
 156        {
 157            IsValidTipoCategoria(dto);
 158            await IsValidCategoria(dto);
 159            var categoria = this.Mapper.Map<Categoria>(dto);
 160            await UnitOfWork.Repository.Update(categoria);
 161            await UnitOfWork.CommitAsync();
 162            categoria = await UnitOfWork.Repository.Get(categoria.Id)
 163                ?? throw new CategoriaUpdateException();
 164            return this.Mapper.Map<Dto>(categoria);
 65        }
 066        catch
 067        {
 068            throw;
 69        }
 170    }
 71
 72    public override async Task<bool> Delete(Dto dto)
 173    {
 74        try
 175        {
 176            await IsValidCategoria(dto);
 177            var categoria = this.Mapper.Map<Categoria>(dto);
 178            await UnitOfWork.Repository.Delete(categoria.Id);
 179            await UnitOfWork.CommitAsync();
 180            return true;
 81        }
 082        catch
 083        {
 084            return false;
 85        }
 186    }
 87
 88    private void IsValidTipoCategoria(Dto dto)
 289    {
 290        var categoria = this.Mapper.Map<Categoria>(dto);
 291        if (categoria.TipoCategoriaId != (int)TipoCategoria.CategoriaType.Despesa && categoria.TipoCategoriaId != (int)T
 092            throw new TipoCategoriaInvalidaException();
 293    }
 94
 95    private async Task IsValidCategoria(Dto dto)
 296    {
 297        var categoria = await UnitOfWork.Repository.Get(this.Mapper.Map<Categoria>(dto).Id);
 298        if (categoria.Usuario?.Id != categoria.UsuarioId)
 099            throw new CategoriaUsuarioInvalidaException();
 2100    }
 101
 102    public async Task<List<Dto>> FindByTipocategoria(Guid idUsuario, int idTipoCategoria)
 0103    {
 0104        var result = await UnitOfWork.Repository.Find(c => c.UsuarioId == idUsuario && c.TipoCategoria.Id == idTipoCateg
 0105        var categorias = result
 0106            .Where(c => c.UsuarioId == idUsuario
 0107            && (idTipoCategoria == 0 || c.TipoCategoriaId == idTipoCategoria)).ToList();
 108
 0109        return Mapper.Map<List<Dto>>(categorias);
 0110    }
 111}