< Summary

Information
Class: Despesas.Application.Implementations.ImagemPerfilUsuarioBusinessImpl<T1, T2>
Assembly: Despesas.Application
File(s): /src/Despesas.Application/Implementations/ImagemPerfilUsuarioBusinessImpl.cs
Line coverage
98%
Covered lines: 53
Uncovered lines: 1
Coverable lines: 54
Total lines: 89
Line coverage: 98.1%
Branch coverage
80%
Covered branches: 8
Total branches: 10
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%
Create()50%22100%
FindAll()100%11100%
FindById()100%22100%
Update()100%22100%
Delete()75%4491.66%

File(s)

/src/Despesas.Application/Implementations/ImagemPerfilUsuarioBusinessImpl.cs

#LineLine coverage
 1using AutoMapper;
 2using Despesas.Application.Abstractions;
 3using Despesas.Application.Dtos;
 4using Despesas.Infrastructure.Amazon.Abstractions;
 5using Domain.Entities;
 6using Repository.Persistency.Generic;
 7
 8namespace Despesas.Application.Implementations;
 9public class ImagemPerfilUsuarioBusinessImpl<Dto, DtoUsuario> : IImagemPerfilUsuarioBusiness<Dto, DtoUsuario> where Dto 
 10{
 11    private readonly IMapper _mapper;
 12    private readonly IRepositorio<ImagemPerfilUsuario> _repositorio;
 13    private readonly IRepositorio<Usuario> _repositorioUsuario;
 14    private readonly IAmazonS3Bucket _amazonS3Bucket;
 915    public ImagemPerfilUsuarioBusinessImpl(IMapper mapper, IRepositorio<ImagemPerfilUsuario> repositorio, IRepositorio<U
 916    {
 917        _mapper = mapper;
 918        _repositorio = repositorio;
 919        _repositorioUsuario = repositorioUsuario;
 920        _amazonS3Bucket = amazonS3Bucket;
 921    }
 22
 23    public async Task<Dto> Create(Dto dto)
 224    {
 225        ImagemPerfilUsuario? perfilFile = _mapper.Map<ImagemPerfilUsuario>(dto);
 26        try
 227        {
 228            perfilFile.Url = _amazonS3Bucket.WritingAnObjectAsync(perfilFile, dto.Arquivo).GetAwaiter().GetResult();
 129            perfilFile.Usuario = _repositorioUsuario.Get(perfilFile.UsuarioId) ?? throw new();
 130            _repositorio.Insert(perfilFile);
 131            return await Task.FromResult(_mapper.Map<Dto>(perfilFile));
 32        }
 133        catch (Exception ex)
 134        {
 135            _amazonS3Bucket.DeleteObjectNonVersionedBucketAsync(perfilFile).GetAwaiter();
 136            throw new ArgumentException(ex.Message);
 37           //throw new ArgumentException("Erro ao criar imagem de perfil.");
 38        }
 139    }
 40
 41    public async Task<List<Dto>> FindAll(Guid idUsuario)
 142    {
 143        var lstPerfilFile = _repositorio.GetAll();
 144        return await Task.FromResult(_mapper.Map<List<Dto>>(lstPerfilFile));
 145    }
 46
 47    public async Task<Dto> FindById(Guid id, Guid idUsuario)
 248    {
 249        var imagemPerfilUsuario = _mapper.Map<Dto>(_repositorio.Get(id));
 250        if (imagemPerfilUsuario.UsuarioId != idUsuario)
 151            return null;
 52
 153        return await Task.FromResult(imagemPerfilUsuario);
 254    }
 55
 56    public async Task<Dto> Update(Dto dto)
 257    {
 58        try
 259        {
 360            var validImagemPerfil = _repositorio.GetAll().Find(prop => prop.UsuarioId.Equals(dto.UsuarioId));
 261            if (validImagemPerfil == null)
 162                throw new();
 63
 164            _amazonS3Bucket.DeleteObjectNonVersionedBucketAsync(validImagemPerfil).GetAwaiter().GetResult();
 165            validImagemPerfil.Url = _amazonS3Bucket.WritingAnObjectAsync(validImagemPerfil, dto.Arquivo).GetAwaiter().Ge
 166            _repositorio.Update(validImagemPerfil);
 167            return await Task.FromResult(_mapper.Map<Dto>(validImagemPerfil));
 68        }
 169        catch
 170        {
 171            throw new ArgumentException("Erro ao atualizar iamgem do perfil!");
 72        }
 173    }
 74
 75    public async Task<bool> Delete(Guid idUsuario)
 276    {
 277        var imagemPerfilUsuario = _repositorio.Find(prop => prop.UsuarioId.Equals(idUsuario)).FirstOrDefault();
 278        if (imagemPerfilUsuario != null)
 179        {
 180            var result = _amazonS3Bucket.DeleteObjectNonVersionedBucketAsync(imagemPerfilUsuario).GetAwaiter().GetResult
 181            if (result)
 182            {
 183                _repositorio.Delete(new ImagemPerfilUsuario { Id = imagemPerfilUsuario.Id });
 184                return await Task.FromResult(true);
 85            }
 086        }
 187        return false;
 288    }
 89}