line-gestao-api/Controllers/ResumoController.cs

130 lines
4.9 KiB
C#

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<ActionResult<ResumoResponseDto>> 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);
}
}