import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { environment } from '../../environments/environment'; export interface MacrophonyPlan { planoContrato?: string | null; gb?: string | number | null; valorIndividualComSvas?: string | number | null; franquiaGb?: string | number | null; totalLinhas?: number | string | null; valorTotal?: string | number | null; vivoTravel?: boolean | string | number | null; } export interface MacrophonyTotals { franquiaGbTotal?: string | number | null; totalLinhasTotal?: number | string | null; valorTotal?: string | number | null; } export interface VivoLineResumo { skil?: string | null; cliente?: string | null; qtdLinhas?: number | string | null; franquiaTotal?: string | number | null; valorContratoVivo?: string | number | null; franquiaLine?: string | number | null; valorContratoLine?: string | number | null; lucro?: string | number | null; } export interface VivoLineTotals { qtdLinhasTotal?: number | string | null; franquiaTotal?: string | number | null; valorContratoVivo?: string | number | null; franquiaLine?: string | number | null; valorContratoLine?: string | number | null; lucro?: string | number | null; } export interface ClienteEspecial { nome?: string | null; valor?: string | number | null; } export interface PlanoContratoResumo { planoContrato?: string | null; gb?: string | number | null; valorIndividualComSvas?: string | number | null; franquiaGb?: string | number | null; totalLinhas?: number | string | null; valorTotal?: string | number | null; } export interface PlanoContratoTotal { valorTotal?: string | number | null; } export interface LineTotal { tipo?: string | null; valorTotalLine?: string | number | null; lucroTotalLine?: string | number | null; qtdLinhas?: number | string | null; } export interface GbDistribuicao { gb?: string | number | null; qtd?: number | string | null; soma?: string | number | null; } export interface GbDistribuicaoTotal { totalLinhas?: number | string | null; somaTotal?: string | number | null; } export interface ReservaLine { ddd?: string | number | null; franquiaGb?: string | number | null; qtdLinhas?: number | string | null; total?: string | number | null; } export interface ReservaPorFranquia { franquiaGb?: string | number | null; totalLinhas?: number | string | null; } export interface ReservaPorDdd { ddd?: string | number | null; totalLinhas?: number | string | null; porFranquia?: ReservaPorFranquia[]; } export interface ReservaTotal { qtdLinhasTotal?: number | string | null; total?: string | number | null; } export interface ResumoResponse { macrophonyPlans?: MacrophonyPlan[]; macrophonyTotals?: MacrophonyTotals; vivoLineResumos?: VivoLineResumo[]; vivoLineTotals?: VivoLineTotals; clienteEspeciais?: ClienteEspecial[]; planoContratoResumos?: PlanoContratoResumo[]; planoContratoTotal?: PlanoContratoTotal; lineTotais?: LineTotal[]; gbDistribuicao?: GbDistribuicao[]; gbDistribuicaoTotal?: GbDistribuicaoTotal; reservaLines?: ReservaLine[]; reservaPorDdd?: ReservaPorDdd[]; totalGeralLinhasReserva?: number | string | null; reservaTotal?: ReservaTotal; } @Injectable({ providedIn: 'root' }) export class ResumoService { private readonly apiBase: string; constructor(private http: HttpClient) { const raw = (environment.apiUrl || '').replace(/\/+$/, ''); this.apiBase = raw.toLowerCase().endsWith('/api') ? raw : `${raw}/api`; } getResumo() { return this.http.get(`${this.apiBase}/resumo`); } }