diff --git a/data/src/main/java/one/nem/kidshift/data/TaskData.java b/data/src/main/java/one/nem/kidshift/data/TaskData.java index f872d40..5a81663 100644 --- a/data/src/main/java/one/nem/kidshift/data/TaskData.java +++ b/data/src/main/java/one/nem/kidshift/data/TaskData.java @@ -55,5 +55,5 @@ public interface TaskData { * @param taskId タスクID * @param childId 子ID */ - void recordTaskCompletion(String taskId, String childId); + CompletableFuture recordTaskCompletion(String taskId, String childId); } diff --git a/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java index 38b1792..e711e1c 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/TaskDataImpl.java @@ -8,21 +8,26 @@ import javax.inject.Inject; import one.nem.kidshift.data.KSActions; import one.nem.kidshift.data.TaskData; +import one.nem.kidshift.data.retrofit.KidShiftApiService; import one.nem.kidshift.data.room.utils.CacheWrapper; import one.nem.kidshift.model.callback.TaskItemModelCallback; import one.nem.kidshift.model.tasks.TaskItemModel; import one.nem.kidshift.utils.KSLogger; import one.nem.kidshift.utils.factory.KSLoggerFactory; +import retrofit2.Call; +import retrofit2.Response; public class TaskDataImpl implements TaskData { private final KSActions ksActions; + private final KidShiftApiService kidShiftApiService; private final CacheWrapper cacheWrapper; private final KSLogger logger; @Inject - public TaskDataImpl(KSActions ksActions, CacheWrapper cacheWrapper, KSLoggerFactory loggerFactory) { + public TaskDataImpl(KSActions ksActions, KidShiftApiService kidShiftApiService, CacheWrapper cacheWrapper, KSLoggerFactory loggerFactory) { this.ksActions = ksActions; + this.kidShiftApiService = kidShiftApiService; this.cacheWrapper = cacheWrapper; this.logger = loggerFactory.create("TaskDataImpl"); } @@ -105,7 +110,21 @@ public class TaskDataImpl implements TaskData { } @Override - public void recordTaskCompletion(String taskId, String childId) { - + public CompletableFuture recordTaskCompletion(String taskId, String childId) { + return CompletableFuture.supplyAsync(() -> { + Call call = kidShiftApiService.completeTask(taskId, childId); + try { + Response response = call.execute(); + if (response.isSuccessful()) { + logger.info("タスク完了処理成功(taskId: " + taskId + ", childId: " + childId + ")"); + return null; + } else { + logger.error("タスク完了処理失敗: HTTP Status: " + response.code()); + throw new RuntimeException("HTTP Status: " + response.code()); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + }); } } diff --git a/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java b/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java index 942ca7f..a0fd57f 100644 --- a/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java +++ b/data/src/main/java/one/nem/kidshift/data/retrofit/KidShiftApiService.java @@ -20,6 +20,7 @@ import retrofit2.http.Headers; import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Path; +import retrofit2.http.Query; public interface KidShiftApiService { @@ -96,7 +97,7 @@ public interface KidShiftApiService { */ @POST("/parent/task/{id}/complete") @Headers(AuthorizationInterceptor.HEADER_PLACEHOLDER) - Call completeTask(@Path("id") String id); // TODO-rca: OK responseをパース + Call completeTask(@Path("id") String id, @Query("childId") String childId); // Child APIs