Skip to content

Commit

Permalink
feat: #100 Add LetterAssessmentEvent
Browse files Browse the repository at this point in the history
- Upload assessments events
  • Loading branch information
nya-elimu committed Jan 29, 2021
1 parent 9eb8ffd commit 6300e68
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ai.elimu.analytics.rest;

import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

public interface LetterAssessmentEventService {

@Multipart
@POST("analytics/letter-assessment-events/csv")
Call<ResponseBody> uploadCsvFile(@Part MultipartBody.Part part);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ai.elimu.analytics.rest;

import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

public interface WordAssessmentEventService {

@Multipart
@POST("analytics/word-assessment-events/csv")
Call<ResponseBody> uploadCsvFile(@Part MultipartBody.Part part);
}
86 changes: 86 additions & 0 deletions app/src/main/java/ai/elimu/analytics/task/UploadEventsWorker.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@

import ai.elimu.analytics.BaseApplication;
import ai.elimu.analytics.BuildConfig;
import ai.elimu.analytics.rest.LetterAssessmentEventService;
import ai.elimu.analytics.rest.LetterLearningEventService;
import ai.elimu.analytics.rest.StoryBookLearningEventService;
import ai.elimu.analytics.rest.WordAssessmentEventService;
import ai.elimu.analytics.rest.WordLearningEventService;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
Expand All @@ -37,7 +39,9 @@ public Result doWork() {

if (!"debug".equals(BuildConfig.BUILD_TYPE)) {
uploadLetterLearningEvents();
uploadLetterAssessmentEvents();
uploadWordLearningEvents();
uploadWordAssessmentEvents();
uploadStoryBookLearningEvents();
}

Expand Down Expand Up @@ -85,6 +89,47 @@ private void uploadLetterLearningEvents() {
}
}

private void uploadLetterAssessmentEvents() {
Log.i(getClass().getName(), "uploadLetterAssessmentEvents");

// Upload CSV files to the server
File filesDir = getApplicationContext().getFilesDir();
File letterAssessmentEventsDir = new File(filesDir, "letter-assessment-events");
Log.i(getClass().getName(), "Uploading CSV files from " + letterAssessmentEventsDir);
File[] files = letterAssessmentEventsDir.listFiles();
if (files != null) {
Log.i(getClass().getName(), "files.length: " + files.length);
Arrays.sort(files);
for (int i = 0; i < files.length; i++) {
File file = files[i];
Log.i(getClass().getName(), "file.getName(): " + file.getName());

BaseApplication baseApplication = (BaseApplication) getApplicationContext();
Retrofit retrofit = baseApplication.getRetrofit();
LetterAssessmentEventService letterAssessmentEventService = retrofit.create(LetterAssessmentEventService.class);
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
Call<ResponseBody> call = letterAssessmentEventService.uploadCsvFile(part);
Log.i(getClass().getName(), "call.request(): " + call.request());
try {
Response<ResponseBody> response = call.execute();
Log.i(getClass().getName(), "response: " + response);
Log.i(getClass().getName(), "response.isSuccessful(): " + response.isSuccessful());
if (response.isSuccessful()) {
String bodyString = response.body().string();
Log.i(getClass().getName(), "bodyString: " + bodyString);
} else {
String errorBodyString = response.errorBody().string();
Log.e(getClass().getName(), "errorBodyString: " + errorBodyString);
// TODO: Handle error
}
} catch (IOException e) {
Log.e(getClass().getName(), null, e);
}
}
}
}

private void uploadWordLearningEvents() {
Log.i(getClass().getName(), "uploadWordLearningEvents");

Expand Down Expand Up @@ -125,6 +170,47 @@ private void uploadWordLearningEvents() {
}
}
}

private void uploadWordAssessmentEvents() {
Log.i(getClass().getName(), "uploadWordAssessmentEvents");

// Upload CSV files to the server
File filesDir = getApplicationContext().getFilesDir();
File wordAssessmentEventsDir = new File(filesDir, "word-assessment-events");
Log.i(getClass().getName(), "Uploading CSV files from " + wordAssessmentEventsDir);
File[] files = wordAssessmentEventsDir.listFiles();
if (files != null) {
Log.i(getClass().getName(), "files.length: " + files.length);
Arrays.sort(files);
for (int i = 0; i < files.length; i++) {
File file = files[i];
Log.i(getClass().getName(), "file.getName(): " + file.getName());

BaseApplication baseApplication = (BaseApplication) getApplicationContext();
Retrofit retrofit = baseApplication.getRetrofit();
WordAssessmentEventService wordAssessmentEventService = retrofit.create(WordAssessmentEventService.class);
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
Call<ResponseBody> call = wordAssessmentEventService.uploadCsvFile(part);
Log.i(getClass().getName(), "call.request(): " + call.request());
try {
Response<ResponseBody> response = call.execute();
Log.i(getClass().getName(), "response: " + response);
Log.i(getClass().getName(), "response.isSuccessful(): " + response.isSuccessful());
if (response.isSuccessful()) {
String bodyString = response.body().string();
Log.i(getClass().getName(), "bodyString: " + bodyString);
} else {
String errorBodyString = response.errorBody().string();
Log.e(getClass().getName(), "errorBodyString: " + errorBodyString);
// TODO: Handle error
}
} catch (IOException e) {
Log.e(getClass().getName(), null, e);
}
}
}
}

private void uploadStoryBookLearningEvents() {
Log.i(getClass().getName(), "uploadStoryBookLearningEvents");
Expand Down

0 comments on commit 6300e68

Please sign in to comment.