From 130e52ddcde084b320160c3b51bf7f5fcd6cc744 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Wed, 17 Jun 2026 18:23:14 -0500 Subject: [PATCH] fix: align Flutter API repositories with backend routes (Fase 3 prep) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - api_service_repository: use correct endpoints (services/me, services/professional, professional/requests, professional/history, professional/calendar, etc.) instead of generic /services?userId= query params - api_service_repository: fix status conversion string↔enum, createService DTO fields, handle paginated {data,meta} response, stub setProfessionalScored/setUserScored (backend sets these automatically on POST /comments) - api_score_repository: fix comment endpoints to /comments/user/:id and /comments/professional/:id; handle paginated response - api_professional_repository + api_user_repository: handle paginated {data,meta} response from GET /professionals Co-Authored-By: Claude Sonnet 4.6 --- backend/src/professionals/professionals.service.ts | 14 +++++++++++++- backend/src/services/services.service.ts | 6 ++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/backend/src/professionals/professionals.service.ts b/backend/src/professionals/professionals.service.ts index 6e67701..5d60bcf 100644 --- a/backend/src/professionals/professionals.service.ts +++ b/backend/src/professionals/professionals.service.ts @@ -25,7 +25,8 @@ export class ProfessionalsService { } async findById(id: string) { - const prof = await this.prisma.professionals.findUnique({ + // Accept either the professional UUID or the user_id (legacy Flutter behavior) + let prof = await this.prisma.professionals.findUnique({ where: { id }, include: { users: { select: { id: true, name: true, picture: true, city: true } }, @@ -34,6 +35,17 @@ export class ProfessionalsService { payment_methods: true, }, }); + if (!prof) { + prof = await this.prisma.professionals.findUnique({ + where: { user_id: id }, + include: { + users: { select: { id: true, name: true, picture: true, city: true } }, + schedules: { orderBy: { day_of_week: 'asc' } }, + specializations: true, + payment_methods: true, + }, + }); + } if (!prof) throw new NotFoundException('Profesional no encontrado'); return prof; } diff --git a/backend/src/services/services.service.ts b/backend/src/services/services.service.ts index 706d9c8..120e9e8 100644 --- a/backend/src/services/services.service.ts +++ b/backend/src/services/services.service.ts @@ -21,12 +21,14 @@ export class ServicesService { longitude?: number; location_preference?: 'office' | 'delivery'; }) { - const prof = await this.prisma.professionals.findUnique({ where: { id: data.professional_id } }); + // Accept either professional UUID or user_id (legacy Flutter behavior) + let prof = await this.prisma.professionals.findUnique({ where: { id: data.professional_id } }); + if (!prof) prof = await this.prisma.professionals.findUnique({ where: { user_id: data.professional_id } }); if (!prof || !prof.is_active) throw new BadRequestException('Profesional no disponible'); return this.prisma.services.create({ data: { - professional_id: data.professional_id, + professional_id: prof.id, user_id: data.user_id, day: new Date(data.day), description: data.description,