From d62ca7feb3b44f4962a6946f4a87ee4ba1309080 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Wed, 30 Jul 2025 11:14:33 -0300 Subject: [PATCH] Feat: Tipos de datos y Servicios --- .../dtos/Suscripciones/CreateSuscriptorDto.ts | 11 +++++ .../models/dtos/Suscripciones/FormaPagoDto.ts | 5 ++ .../dtos/Suscripciones/SuscriptorDto.ts | 14 ++++++ .../dtos/Suscripciones/UpdateSuscriptorDto.ts | 11 +++++ .../Suscripciones/formaPagoService.ts | 13 +++++ .../Suscripciones/suscriptorService.ts | 47 +++++++++++++++++++ 6 files changed, 101 insertions(+) create mode 100644 Frontend/src/models/dtos/Suscripciones/CreateSuscriptorDto.ts create mode 100644 Frontend/src/models/dtos/Suscripciones/FormaPagoDto.ts create mode 100644 Frontend/src/models/dtos/Suscripciones/SuscriptorDto.ts create mode 100644 Frontend/src/models/dtos/Suscripciones/UpdateSuscriptorDto.ts create mode 100644 Frontend/src/services/Suscripciones/formaPagoService.ts create mode 100644 Frontend/src/services/Suscripciones/suscriptorService.ts diff --git a/Frontend/src/models/dtos/Suscripciones/CreateSuscriptorDto.ts b/Frontend/src/models/dtos/Suscripciones/CreateSuscriptorDto.ts new file mode 100644 index 0000000..b644d99 --- /dev/null +++ b/Frontend/src/models/dtos/Suscripciones/CreateSuscriptorDto.ts @@ -0,0 +1,11 @@ +export interface CreateSuscriptorDto { + nombreCompleto: string; + email?: string | null; + telefono?: string | null; + direccion: string; + tipoDocumento: string; + nroDocumento: string; + cbu?: string | null; + idFormaPagoPreferida: number; + observaciones?: string | null; +} \ No newline at end of file diff --git a/Frontend/src/models/dtos/Suscripciones/FormaPagoDto.ts b/Frontend/src/models/dtos/Suscripciones/FormaPagoDto.ts new file mode 100644 index 0000000..22a84ff --- /dev/null +++ b/Frontend/src/models/dtos/Suscripciones/FormaPagoDto.ts @@ -0,0 +1,5 @@ +export interface FormaPagoDto { + idFormaPago: number; + nombre: string; + requiereCBU: boolean; +} \ No newline at end of file diff --git a/Frontend/src/models/dtos/Suscripciones/SuscriptorDto.ts b/Frontend/src/models/dtos/Suscripciones/SuscriptorDto.ts new file mode 100644 index 0000000..b5c00f2 --- /dev/null +++ b/Frontend/src/models/dtos/Suscripciones/SuscriptorDto.ts @@ -0,0 +1,14 @@ +export interface SuscriptorDto { + idSuscriptor: number; + nombreCompleto: string; + email?: string | null; + telefono?: string | null; + direccion: string; + tipoDocumento: string; + nroDocumento: string; + cbu?: string | null; + idFormaPagoPreferida: number; + nombreFormaPagoPreferida: string; + observaciones?: string | null; + activo: boolean; +} \ No newline at end of file diff --git a/Frontend/src/models/dtos/Suscripciones/UpdateSuscriptorDto.ts b/Frontend/src/models/dtos/Suscripciones/UpdateSuscriptorDto.ts new file mode 100644 index 0000000..6513047 --- /dev/null +++ b/Frontend/src/models/dtos/Suscripciones/UpdateSuscriptorDto.ts @@ -0,0 +1,11 @@ +export interface UpdateSuscriptorDto { + nombreCompleto: string; + email?: string | null; + telefono?: string | null; + direccion: string; + tipoDocumento: string; + nroDocumento: string; + cbu?: string | null; + idFormaPagoPreferida: number; + observaciones?: string | null; +} \ No newline at end of file diff --git a/Frontend/src/services/Suscripciones/formaPagoService.ts b/Frontend/src/services/Suscripciones/formaPagoService.ts new file mode 100644 index 0000000..0c9dbd8 --- /dev/null +++ b/Frontend/src/services/Suscripciones/formaPagoService.ts @@ -0,0 +1,13 @@ +import apiClient from '../apiClient'; +import type { FormaPagoDto } from '../../models/dtos/Suscripciones/FormaPagoDto'; + +const API_URL = '/formaspago'; + +const getAllFormasDePago = async (): Promise => { + const response = await apiClient.get(API_URL); + return response.data; +}; + +export default { + getAllFormasDePago, +}; \ No newline at end of file diff --git a/Frontend/src/services/Suscripciones/suscriptorService.ts b/Frontend/src/services/Suscripciones/suscriptorService.ts new file mode 100644 index 0000000..38006d4 --- /dev/null +++ b/Frontend/src/services/Suscripciones/suscriptorService.ts @@ -0,0 +1,47 @@ +import apiClient from '../apiClient'; +import type { SuscriptorDto } from '../../models/dtos/Suscripciones/SuscriptorDto'; +import type { CreateSuscriptorDto } from '../../models/dtos/Suscripciones/CreateSuscriptorDto'; +import type { UpdateSuscriptorDto } from '../../models/dtos/Suscripciones/UpdateSuscriptorDto'; + +const API_URL = '/suscriptores'; + +const getAllSuscriptores = async (nombre?: string, nroDoc?: string, soloActivos: boolean = true): Promise => { + const params = new URLSearchParams(); + if (nombre) params.append('nombre', nombre); + if (nroDoc) params.append('nroDoc', nroDoc); + params.append('soloActivos', String(soloActivos)); + + const response = await apiClient.get(`${API_URL}?${params.toString()}`); + return response.data; +}; + +const getSuscriptorById = async (id: number): Promise => { + const response = await apiClient.get(`${API_URL}/${id}`); + return response.data; +}; + +const createSuscriptor = async (data: CreateSuscriptorDto): Promise => { + const response = await apiClient.post(API_URL, data); + return response.data; +}; + +const updateSuscriptor = async (id: number, data: UpdateSuscriptorDto): Promise => { + await apiClient.put(`${API_URL}/${id}`, data); +}; + +const deactivateSuscriptor = async (id: number): Promise => { + await apiClient.delete(`${API_URL}/${id}`); +}; + +const activateSuscriptor = async (id: number): Promise => { + await apiClient.post(`${API_URL}/${id}/activar`); +}; + +export default { + getAllSuscriptores, + getSuscriptorById, + createSuscriptor, + updateSuscriptor, + deactivateSuscriptor, + activateSuscriptor, +}; \ No newline at end of file