< Summary

Information
Class: Repository.Persistency.Implementations.GraficosRepositorioImpl
Assembly: Despesas.Repository
File(s): /src/Despesas.Repository/Persistency/Implementations/GraficoRepositorioImpl.cs
Line coverage
100%
Covered lines: 46
Uncovered lines: 0
Coverable lines: 46
Total lines: 68
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
get_Context()100%11100%
.ctor(...)100%11100%
GetDadosGraficoByAno()100%11100%

File(s)

/src/Despesas.Repository/Persistency/Implementations/GraficoRepositorioImpl.cs

#LineLine coverage
 1using Domain.Entities;
 2using Microsoft.EntityFrameworkCore;
 3using Repository.Persistency.Abstractions;
 4
 5namespace Repository.Persistency.Implementations;
 6
 7public class GraficosRepositorioImpl : IGraficosRepositorio
 8{
 19    private static readonly string[] Meses = new[]
 110    {
 111        "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
 112        "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
 113    };
 14
 315    public RegisterContext Context { get; }
 16
 217    public GraficosRepositorioImpl(RegisterContext context)
 218    {
 219        Context = context;
 220    }
 21
 22    public async Task<Grafico> GetDadosGraficoByAno(Guid idUsuario, DateTime data)
 223    {
 224        int ano = data.Year;
 25
 26        try
 227        {
 228            var despesas = await Context.Despesa
 229                .Where(d => d.UsuarioId == idUsuario && d.Data.Year == ano)
 230                .GroupBy(d => d.Data.Month)
 231                .Select(g => new { Mes = g.Key, Total = g.Sum(x => x.Valor) })
 232                .ToListAsync();
 33
 134            var receitas = await Context.Receita
 135                .Where(r => r.UsuarioId == idUsuario && r.Data.Year == ano)
 136                .GroupBy(r => r.Data.Month)
 137                .Select(g => new { Mes = g.Key, Total = g.Sum(x => x.Valor) })
 138                .ToListAsync();
 39
 40
 141            var somatorioDespesas = Enumerable.Range(1, 12)
 142                .ToDictionary(
 1243                    i => Meses[i - 1],
 8044                    i => despesas.FirstOrDefault(x => x.Mes == i)?.Total ?? 0m
 145                );
 46
 147            var somatorioReceitas = Enumerable.Range(1, 12)
 148                .ToDictionary(
 1249                    i => Meses[i - 1],
 8050                    i => receitas.FirstOrDefault(x => x.Mes == i)?.Total ?? 0m
 151                );
 52
 153            return new Grafico
 154            {
 155                SomatorioDespesasPorAno = somatorioDespesas,
 156                SomatorioReceitasPorAno = somatorioReceitas
 157            };
 58        }
 159        catch
 160        {
 161            return new Grafico
 162            {
 2463                SomatorioDespesasPorAno = Meses.ToDictionary(m => m, _ => 0m),
 2464                SomatorioReceitasPorAno = Meses.ToDictionary(m => m, _ => 0m)
 165            };
 66        }
 267    }
 68}