Commit Graph

16 Commits

Author SHA1 Message Date
javiermengual 9a06cc945e fix: arreglo bug porque dolibar devuelve un objeto anidado 2026-01-03 20:31:53 +01:00
javiermengual 283a9e7f5f Implementar autenticación JWT con caché de tokens de Dolibarr por sesión
- Añadir autenticación estándar JWT Bearer con ASP.NET Core
- Crear DolibarrTokenCacheService para la lógica de caché de tokens
- Refactorizar DolibarrApiClient para usar TokenCacheService con SRP limpio
- Actualizar Program.cs con registros de servicios y comentarios apropiados
- Añadir AuthController para el endpoint de login
- Actualizar InvoiceService para usar DolibarrApiClient
2026-01-03 19:55:04 +01:00
javiermengual a80d41feab feat: Primera parte de la implementacion de autentificacion, para obtener la DOLIAPIKEY del cliente la cual cachearemos asociada a un Id que devolveremos en el JWT de nuestro servidor. 2026-01-03 18:12:40 +01:00
javiermengual f28461ae0c refactor: extraer interfaz IDolibarrApiClient para facilitar testing
- Crear IDolibarrApiClient con métodos de la API de Dolibarr
- Implementar interfaz en DolibarrApiClient
- Modificar InvoiceService para depender de IDolibarrApiClient en lugar de la clase concreta
- Actualizar Program.cs para registrar IDolibarrApiClient en el contenedor DI

Esto sigue el Principio de Inversión de Dependencias (DIP) de SOLID,
permitiendo mockear el cliente API en tests unitarios sin conectividad externa.
2026-01-03 14:57:23 +01:00
javiermengual 2e1062cc71 feat: Implemento el subendpoint de POST para las lineas de facturas. 2026-01-02 21:05:46 +01:00
javiermengual a06ac2bdd9 feat: Implementar endpoint PUT para actualizar facturas draft, limitado a campos permitidos por Dolibarr (ref, notas, estado, fecha expiración) y unificar campo 'number' para consistencia 2026-01-02 20:20:58 +01:00
javiermengual 1fd331ac17 feat: Implemento completamente el POST de facturas , usando un objeto anonimo para la request, y devuelvo el id creado. 2026-01-02 19:01:04 +01:00
javiermengual ab80901280 refactor: sacar los metodos de cada DTO a su propio servicio porque si no se me hara un god object , y lo mantendre simple sin mucha abstraccion. 2025-12-31 15:15:00 +01:00
javiermengual 1a752c007f enchance: cambio nombres de variables para ser mas descriptivos 2025-12-30 19:14:59 +01:00
javiermengual 198fccd5bc refactor: cambio las respuestas de error para no culpar al usuario al fallar la deserializacion sino como una ApiException 2025-12-30 19:13:26 +01:00
javiermengual 7018efe279 refactor: Saco los mappers a una clase estatica, si el projecto creciera mucho podriamos usar AutoMapper 2025-12-29 19:32:38 +01:00
javiermengual 1d7182145e feat: Nuevos mappers para transformar en
InvoiceDetailDto y cada una se sus InvoiceLinesDto
2025-12-29 19:20:34 +01:00
javiermengual b2427a3276 feat: añado Dtos para el invoices{id}
para que pueda devolver todas sus lineas de factura.

Tambien las respectivas Respuestas de Dolibarr que hay que sanear.
2025-12-29 19:18:04 +01:00
javiermengual 5081d71f69 fix: arreglo bug porque dolibarr devuelve el status en numero y lo pide como parametro como palabra. 2025-12-29 18:30:23 +01:00
javiermengual b937c64e39 refactor: usar strings para status de facturas en lugar de enum
- Cambiar InvoiceDto.Status de enum a string
- Eliminar InvoiceStatus enum y mapper
- Usar directamente los status de Dolibarr (draft, unpaid, paid, cancelled)
2025-12-29 16:58:53 +01:00
javiermengual 7428eb3f8d feat: implementar cliente API de Dolibarr 2025-12-29 16:37:46 +01:00