using line_gestao_api.Data; using line_gestao_api.Dtos; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace line_gestao_api.Controllers; [ApiController] [Route("api/resumo")] [Authorize] public class ResumoController : ControllerBase { private readonly AppDbContext _db; public ResumoController(AppDbContext db) { _db = db; } [HttpGet] public async Task> GetResumo() { var response = new ResumoResponseDto { MacrophonyPlans = await _db.ResumoMacrophonyPlans.AsNoTracking() .OrderBy(x => x.PlanoContrato) .Select(x => new ResumoMacrophonyPlanDto { PlanoContrato = x.PlanoContrato, Gb = x.Gb, ValorIndividualComSvas = x.ValorIndividualComSvas, FranquiaGb = x.FranquiaGb, TotalLinhas = x.TotalLinhas, ValorTotal = x.ValorTotal, VivoTravel = x.VivoTravel }) .ToListAsync(), MacrophonyTotals = await _db.ResumoMacrophonyTotals.AsNoTracking() .Select(x => new ResumoMacrophonyTotalDto { FranquiaGbTotal = x.FranquiaGbTotal, TotalLinhasTotal = x.TotalLinhasTotal, ValorTotal = x.ValorTotal }) .FirstOrDefaultAsync(), VivoLineResumos = await _db.ResumoVivoLineResumos.AsNoTracking() .OrderBy(x => x.Cliente) .Select(x => new ResumoVivoLineResumoDto { Skil = x.Skil, Cliente = x.Cliente, QtdLinhas = x.QtdLinhas, FranquiaTotal = x.FranquiaTotal, ValorContratoVivo = x.ValorContratoVivo, FranquiaLine = x.FranquiaLine, ValorContratoLine = x.ValorContratoLine, Lucro = x.Lucro }) .ToListAsync(), VivoLineTotals = await _db.ResumoVivoLineTotals.AsNoTracking() .Select(x => new ResumoVivoLineTotalDto { QtdLinhasTotal = x.QtdLinhasTotal, FranquiaTotal = x.FranquiaTotal, ValorContratoVivo = x.ValorContratoVivo, FranquiaLine = x.FranquiaLine, ValorContratoLine = x.ValorContratoLine, Lucro = x.Lucro }) .FirstOrDefaultAsync(), ClienteEspeciais = await _db.ResumoClienteEspeciais.AsNoTracking() .OrderBy(x => x.Nome) .Select(x => new ResumoClienteEspecialDto { Nome = x.Nome, Valor = x.Valor }) .ToListAsync(), PlanoContratoResumos = await _db.ResumoPlanoContratoResumos.AsNoTracking() .OrderBy(x => x.PlanoContrato) .Select(x => new ResumoPlanoContratoResumoDto { PlanoContrato = x.PlanoContrato, Gb = x.Gb, ValorIndividualComSvas = x.ValorIndividualComSvas, FranquiaGb = x.FranquiaGb, TotalLinhas = x.TotalLinhas, ValorTotal = x.ValorTotal }) .ToListAsync(), PlanoContratoTotal = await _db.ResumoPlanoContratoTotals.AsNoTracking() .Select(x => new ResumoPlanoContratoTotalDto { ValorTotal = x.ValorTotal }) .FirstOrDefaultAsync(), LineTotais = await _db.ResumoLineTotais.AsNoTracking() .OrderBy(x => x.Tipo) .Select(x => new ResumoLineTotaisDto { Tipo = x.Tipo, ValorTotalLine = x.ValorTotalLine, LucroTotalLine = x.LucroTotalLine, QtdLinhas = x.QtdLinhas }) .ToListAsync(), ReservaLines = await _db.ResumoReservaLines.AsNoTracking() .OrderBy(x => x.Ddd) .Select(x => new ResumoReservaLineDto { Ddd = x.Ddd, FranquiaGb = x.FranquiaGb, QtdLinhas = x.QtdLinhas, Total = x.Total }) .ToListAsync(), ReservaTotal = await _db.ResumoReservaTotals.AsNoTracking() .Select(x => new ResumoReservaTotalDto { QtdLinhasTotal = x.QtdLinhasTotal, Total = x.Total }) .FirstOrDefaultAsync() }; return Ok(response); } }