< Summary

Information
Class: Despesas.Application.Implementations.ReceitaBusinessImpl<T>
Assembly: Despesas.Application
File(s): /src/Despesas.Application/Implementations/ReceitaBusinessImpl.cs
Line coverage
90%
Covered lines: 64
Uncovered lines: 7
Coverable lines: 71
Total lines: 111
Line coverage: 90.1%
Branch coverage
80%
Covered branches: 16
Total branches: 20
Branch coverage: 80%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
IsValidReceita()50%4480%
IsValidCategoria()100%1010100%
Create()50%22100%
FindAll()100%11100%
FindById()100%22100%
Update()50%2278.57%
Delete()100%1172.72%

File(s)

/src/Despesas.Application/Implementations/ReceitaBusinessImpl.cs

#LineLine coverage
 1using AutoMapper;
 2using Despesas.Application.Abstractions;
 3using Despesas.Application.Dtos;
 4using Despesas.GlobalException.CustomExceptions;
 5using Despesas.GlobalException.CustomExceptions.Core;
 6using Despesas.Repository.UnitOfWork.Abstractions;
 7using Domain.Core.ValueObject;
 8using Domain.Entities;
 9using Repository.Persistency.Generic;
 10
 11namespace Despesas.Application.Implementations;
 12public class ReceitaBusinessImpl<Dto> : BusinessBase<Dto, Receita> where Dto : ReceitaDto, new()
 13{
 14    private readonly IRepositorio<Receita> _repositorio;
 15    private readonly IUnitOfWork<Categoria> _unitOfWorkCategoria;
 16    private readonly IMapper _mapper;
 717    public ReceitaBusinessImpl(IMapper mapper, IRepositorio<Receita> repositorio, IUnitOfWork<Receita> unitOfWork, IUnit
 718    {
 719        _mapper = mapper;
 720        _repositorio = repositorio;
 721        _unitOfWorkCategoria = unitOfWorkCategoria;
 722    }
 23
 24    private async Task IsValidReceita(Receita dto)
 325    {
 326        var receita = await UnitOfWork!.Repository.Get(dto.Id);
 327        if (receita == null || receita.UsuarioId != dto.UsuarioId)
 028            throw new ReceitaUsuarioInvalidaException();
 329    }
 30
 31    private async Task IsValidCategoria(Receita dto)
 332    {
 333        var categoria = await _unitOfWorkCategoria.Repository.Get(dto.CategoriaId);
 334        if (categoria == null
 335            || categoria.UsuarioId != dto.UsuarioId
 336            || categoria == null
 337            || categoria.TipoCategoria != TipoCategoria.CategoriaType.Receita
 338            || categoria.Id != dto.CategoriaId)
 139            throw new CategoriaUsuarioInvalidaException();
 240    }
 41
 42    public override async Task<Dto> Create(Dto dto)
 243    {
 44        try
 245        {
 246            var receita = _mapper.Map<Receita>(dto);
 247            await IsValidCategoria(receita);
 148            await UnitOfWork.Repository.Insert(receita);
 149            await UnitOfWork.CommitAsync();
 150            receita = await UnitOfWork.Repository.Get(receita.Id)
 151                ?? throw new CustomException("Não foi possível realizar o cadastro da receita.");
 152            return _mapper.Map<Dto>(receita);
 53        }
 154        catch
 155        {
 156            throw;
 57        }
 158    }
 59
 60    public override async Task<List<Dto>> FindAll(Guid idUsuario)
 161    {
 162        var result = await UnitOfWork.Repository.Find(repo => repo.UsuarioId == idUsuario);
 163        var receitas = result.ToList();
 164        return _mapper.Map<List<Dto>>(receitas);
 165    }
 66
 67    public override async Task<Dto> FindById(Guid id, Guid idUsuario)
 268    {
 269        var receita = await UnitOfWork.Repository.Get(id);
 370        if (receita is null) return null;
 171        receita.UsuarioId = idUsuario;
 172        await IsValidReceita(receita);
 173        var receitaDto = _mapper.Map<Dto>(receita);
 174        return receitaDto;
 275    }
 76
 77    public override async Task<Dto> Update(Dto dto)
 178    {
 79        try
 180        {
 181            var receita = _mapper.Map<Receita>(dto);
 182            await IsValidReceita(receita);
 183            await IsValidCategoria(receita);
 184            await UnitOfWork.Repository.Update(receita);
 185            await UnitOfWork.CommitAsync();
 186            receita = await UnitOfWork.Repository.Get(dto.Id.Value)
 187                ?? throw new CustomException("Não foi possível atualizar o cadastro da receita.");
 188            return _mapper.Map<Dto>(receita);
 89        }
 090        catch
 091        {
 092            throw;
 93        }
 194    }
 95
 96    public override async Task<bool> Delete(Dto dto)
 197    {
 98        try
 199        {
 1100            Receita receita = _mapper.Map<Receita>(dto);
 1101            await IsValidReceita(receita);
 1102            await UnitOfWork.Repository.Delete(receita.Id);
 1103            await UnitOfWork.CommitAsync();
 1104            return true;
 105        }
 0106        catch
 0107        {
 0108            return false;
 109        }
 1110    }
 111}