From d0c55b8b39398ac5d8dc36f89d8f5cf6b3a9285d Mon Sep 17 00:00:00 2001 From: enlineawork Date: Mon, 7 Sep 2026 21:25:53 -0300 Subject: [PATCH] F4 Android: align Act contracts with lock and seal --- .../korexlabs/dhinspeccion/data/MobileActs.kt | 68 +++++++++++++------ 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/MobileActs.kt b/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/MobileActs.kt index 22bb6eb..a3a40ef 100644 --- a/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/MobileActs.kt +++ b/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/MobileActs.kt @@ -37,6 +37,15 @@ data class MobileActSummary( val title: String, val summary: String, val observations: String? = null, + val urgency: String = "NON_URGENT", + val deadlineDays: Int? = null, + val deadlineDayType: String? = null, + val deadlineBasis: String? = null, + val deadlineBaseAt: String? = null, + val deadlineAt: String? = null, + val lockedAt: String? = null, + val lockedSha256: String? = null, + val sealedAt: String? = null, val currentVersion: Int = 0, val closedAt: String? = null, val closureSha256: String? = null, @@ -53,6 +62,15 @@ data class MobileActDetail( val title: String, val summary: String, val observations: String? = null, + val urgency: String = "NON_URGENT", + val deadlineDays: Int? = null, + val deadlineDayType: String? = null, + val deadlineBasis: String? = null, + val deadlineBaseAt: String? = null, + val deadlineAt: String? = null, + val lockedAt: String? = null, + val lockedSha256: String? = null, + val sealedAt: String? = null, val currentVersion: Int = 0, val closedAt: String? = null, val closureSha256: String? = null, @@ -75,6 +93,7 @@ data class MobileActListResponse( data class CreateMobileActRequest( val occurredAt: String, + val urgency: String, val title: String, val summary: String, val observations: String? = null, @@ -113,6 +132,15 @@ data class MobileActClosureHeader( val code: String, val status: String, val visitId: String, + val urgency: String = "NON_URGENT", + val deadlineDays: Int? = null, + val deadlineDayType: String? = null, + val deadlineBasis: String? = null, + val deadlineBaseAt: String? = null, + val deadlineAt: String? = null, + val lockedAt: String? = null, + val lockedSha256: String? = null, + val sealedAt: String? = null, val currentVersion: Int = 0, val closedAt: String? = null, val closureSha256: String? = null, @@ -169,7 +197,7 @@ data class MobileCompanyOutcomeRequest( val reason: String, ) -data class MobileCloseActRequest( +data class MobileSealActRequest( val clientClosedAt: String = Instant.now().toString(), val uploadMode: String = "ONLINE", ) @@ -219,14 +247,8 @@ private interface MobileActsApi { @Body request: MobileResponsibleRequest, ): MobileActClosure - @POST("inspection-acts/{actId}/ready") - suspend fun ready( - @Header("Authorization") authorization: String, - @Path("actId") actId: String, - ): MobileActClosure - - @POST("inspection-acts/{actId}/reopen") - suspend fun reopen( + @POST("inspection-acts/{actId}/lock") + suspend fun lock( @Header("Authorization") authorization: String, @Path("actId") actId: String, ): MobileActClosure @@ -268,11 +290,11 @@ private interface MobileActsApi { @Body request: MobileCompanyOutcomeRequest, ): MobileActClosure - @POST("inspection-acts/{actId}/close") - suspend fun closeAct( + @POST("inspection-acts/{actId}/seal") + suspend fun sealAct( @Header("Authorization") authorization: String, @Path("actId") actId: String, - @Body request: MobileCloseActRequest, + @Body request: MobileSealActRequest, ): MobileActClosure @POST("inspection-visits/{visitId}/close") @@ -305,14 +327,20 @@ class MobileActsRepository(context: Context) { api.act("Bearer ${session.accessToken}", actId) } - suspend fun create(visitId: String, assetId: String, visitCode: String): MobileActDetail = authorized { session -> + suspend fun create( + visitId: String, + assetId: String, + visitCode: String, + urgency: String, + ): MobileActDetail = authorized { session -> api.createAct( "Bearer ${session.accessToken}", visitId, CreateMobileActRequest( occurredAt = Instant.now().toString(), + urgency = urgency, title = "Acta de inspección $visitCode", - summary = "Acta de inspección en curso. Los Hallazgos y observaciones se incorporan de forma trazable durante la visita.", + summary = "Acta de inspección en curso. Los Hallazgos y observaciones se incorporan de forma trazable durante la inspección.", assetIds = listOf(assetId), ), ) @@ -335,12 +363,8 @@ class MobileActsRepository(context: Context) { api.responsible("Bearer ${session.accessToken}", actId, request) } - suspend fun prepare(actId: String): MobileActClosure = authorized { session -> - api.ready("Bearer ${session.accessToken}", actId) - } - - suspend fun reopen(actId: String): MobileActClosure = authorized { session -> - api.reopen("Bearer ${session.accessToken}", actId) + suspend fun lock(actId: String): MobileActClosure = authorized { session -> + api.lock("Bearer ${session.accessToken}", actId) } suspend fun signInspector( @@ -378,8 +402,8 @@ class MobileActsRepository(context: Context) { ) } - suspend fun closeAct(actId: String): MobileActClosure = authorized { session -> - api.closeAct("Bearer ${session.accessToken}", actId, MobileCloseActRequest()) + suspend fun seal(actId: String): MobileActClosure = authorized { session -> + api.sealAct("Bearer ${session.accessToken}", actId, MobileSealActRequest()) } suspend fun closeVisit(visitId: String): VisitDetail = authorized { session ->