From 51a2789bbd91098333cfac073b04d582e86b3d51 Mon Sep 17 00:00:00 2001 From: enlineawork Date: Mon, 7 Sep 2026 14:30:52 -0300 Subject: [PATCH] F3.1 Android: agregar familias y merge de Inventario --- .../korexlabs/dhinspeccion/data/DhMobile.kt | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/DhMobile.kt b/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/DhMobile.kt index 882b729..87bff44 100644 --- a/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/DhMobile.kt +++ b/android-app/app/src/main/java/com/korexlabs/dhinspeccion/data/DhMobile.kt @@ -214,11 +214,24 @@ data class FieldAttributeDefinition( val sortOrder: Int = 0, ) +data class FieldInventoryFamily( + val id: String, + val code: String, + val name: String, + val level: String, + val informationLabels: List = emptyList(), + val sourceReference: String? = null, + val isOther: Boolean = false, +) + data class FieldType( val id: String, val code: String, val name: String, val description: String? = null, + val structuralKind: String? = null, + val families: List = emptyList(), + val familyRequired: Boolean = false, val attributes: List = emptyList(), ) @@ -246,6 +259,7 @@ data class FieldAssetDetail( data class CreateFieldInventoryRequest( val typeId: String, val parentId: String? = null, + val familyId: String? = null, val code: String? = null, val name: String, val commonName: String? = null, @@ -263,6 +277,19 @@ data class FieldPhotoResponse( val capture: CaptureStatus, ) +data class MergeFieldInventoryRequest( + val canonicalAssetId: String, + val reason: String, +) + +data class FieldInventoryMergeResult( + val source: AssetSummary, + val canonical: AssetSummary, + val sourceVersionNumber: Int, + val reparentedChildIds: List = emptyList(), + val historyPolicy: String, +) + interface DhApi { @POST("auth/mobile/login") suspend fun login(@Body request: LoginRequest): MobileSessionResponse @@ -322,6 +349,14 @@ interface DhApi { @Body request: CreateFieldInventoryRequest, ): FieldAssetDetail + @POST("inspection-visits/{visitId}/field-inventory/{assetId}/merge") + suspend fun mergeFieldAsset( + @Header("Authorization") authorization: String, + @Path("visitId") visitId: String, + @Path("assetId") assetId: String, + @Body request: MergeFieldInventoryRequest, + ): FieldInventoryMergeResult + @Multipart @POST("inspection-visits/{visitId}/field-inventory/{assetId}/photos") suspend fun uploadFieldPhoto( @@ -465,6 +500,20 @@ class DhRepository(context: Context) { api.createFieldAsset("Bearer ${session.accessToken}", visitId, request) } + suspend fun mergeFieldAsset( + visitId: String, + assetId: String, + canonicalAssetId: String, + reason: String, + ): FieldInventoryMergeResult = authorized { session -> + api.mergeFieldAsset( + "Bearer ${session.accessToken}", + visitId, + assetId, + MergeFieldInventoryRequest(canonicalAssetId, reason.trim()), + ) + } + suspend fun uploadFieldPhoto( visitId: String, assetId: String,