Skip to content

Commit 1def822

Browse files
committed
fetch modules configurations
1 parent 27b39d0 commit 1def822

10 files changed

Lines changed: 216 additions & 14 deletions

File tree

claimManagement/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ android {
109109
resValue "string", "app_name_claims", "Claims CSU Test"
110110
resValue "string", "release_tag", "csu-test"
111111
buildConfigField "String", "API_BASE_URL", '"https://test-csuapps.minsante.cm/"'
112+
buildConfigField "String", "MASTER_DATA_URL", '"https://test-csuapps.minsante.cm/"'
112113
buildConfigField "String", "ZIP_PASSWORD", '"xc3-ed@/dfr;nJ3R"'
113114
dimension 'std'
114115
resValue "string", "sentry_dsn", '"https://882dd202826240dba0b1733d079b1191@glitchtip-csuapps.minsante.cm/5"'
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
query GetConfigs($layer: String) {
2+
moduleConfigurations(layer: $layer) {
3+
config,
4+
module
5+
}
6+
}

claimManagement/src/main/java/org/openimis/imisclaims/MainActivity.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,15 @@
4444
import org.openimis.imisclaims.domain.entity.Diagnosis;
4545
import org.openimis.imisclaims.domain.entity.HealthFacility;
4646
import org.openimis.imisclaims.domain.entity.Medication;
47+
import org.openimis.imisclaims.domain.entity.ModuleConfig;
4748
import org.openimis.imisclaims.domain.entity.PaymentList;
4849
import org.openimis.imisclaims.domain.entity.Program;
4950
import org.openimis.imisclaims.domain.entity.Service;
5051
import org.openimis.imisclaims.domain.entity.SubServiceItem;
5152
import org.openimis.imisclaims.network.exception.HttpException;
5253
import org.openimis.imisclaims.tools.Log;
5354
import org.openimis.imisclaims.usecase.FetchClaimAdmins;
55+
import org.openimis.imisclaims.usecase.FetchConfigs;
5456
import org.openimis.imisclaims.usecase.FetchControls;
5557
import org.openimis.imisclaims.usecase.FetchDiagnosesServicesItems;
5658
import org.openimis.imisclaims.usecase.FetchDiagnosis;
@@ -848,6 +850,7 @@ public void run() {
848850
runOnUiThread(() -> {
849851
progressDialog.dismiss();
850852
Toast.makeText(MainActivity.this, getResources().getString(R.string.MapSuccessful), Toast.LENGTH_LONG).show();
853+
downloadConfigs();
851854
});
852855
} catch (Exception e) {
853856
e.printStackTrace();
@@ -871,6 +874,45 @@ public void run() {
871874

872875
}
873876

877+
public void downloadConfigs (){
878+
if (global.isNetworkAvailable()){
879+
String progress_message = getResources().getString(R.string.getConfig) + "...";
880+
progressDialog = ProgressDialog.show(this, getResources().getString(R.string.download), progress_message);
881+
Thread thread = new Thread() {
882+
public void run() {
883+
try {
884+
List<ModuleConfig> configs = new FetchConfigs().execute();
885+
if(!configs.isEmpty()){
886+
sqlHandler.ClearAll("tblConfig");
887+
for (int i = 0; i < configs.size(); i++) {
888+
sqlHandler.InsertConfig(i+1,configs.get(i).getModule(), configs.get(i).getConfig());
889+
}
890+
}
891+
runOnUiThread(() -> {
892+
progressDialog.dismiss();
893+
Toast.makeText(MainActivity.this, getResources().getString(R.string.downloaded_config), Toast.LENGTH_LONG).show();
894+
});
895+
} catch (Exception e) {
896+
e.printStackTrace();
897+
Sentry.captureException(e);
898+
runOnUiThread(() -> {
899+
progressDialog.dismiss();
900+
if(!global.isNetworkAvailable()){
901+
Toast.makeText(MainActivity.this, getResources().getString(R.string.CheckConnection), Toast.LENGTH_LONG).show();
902+
}else {
903+
Toast.makeText(MainActivity.this, e.getMessage() + "-" + getResources().getString(R.string.AccessDenied), Toast.LENGTH_LONG).show();
904+
}
905+
});
906+
}
907+
};
908+
};
909+
thread.start();
910+
} else {
911+
runOnUiThread(() -> progressDialog.dismiss());
912+
ErrorDialogBox(getResources().getString(R.string.CheckInternet));
913+
}
914+
}
915+
874916
public void saveLastUpdateDate(String lastUpdateDate) {
875917
if (global.getSDCardStatus().equals(Environment.MEDIA_MOUNTED)) {
876918
String dir = global.getSubdirectory("Authentications");
@@ -928,6 +970,8 @@ public boolean checkRequirements() {
928970
}
929971

930972
return false;
973+
} else {
974+
sqlHandler.updateTables();
931975
}
932976

933977
return true;

claimManagement/src/main/java/org/openimis/imisclaims/SQLHandler.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public class SQLHandler extends SQLiteOpenHelper {
5656
private static final String createTableClaimItems = "CREATE TABLE IF NOT EXISTS tblClaimItems(ClaimUUID TEXT, ItemCode TEXT, ItemPrice TEXT, ItemQuantity TEXT);";
5757
private static final String createTableClaimServices = "CREATE TABLE IF NOT EXISTS tblClaimServices(ClaimUUID TEXT, ServiceCode TEXT, ServicePrice TEXT, ServiceQuantity TEXT, ServicePackageType TEXT, SubServicesItems TEXT);";
5858
private static final String createTableClaimUploadStatus = "CREATE TABLE IF NOT EXISTS tblClaimUploadStatus(ClaimUUID TEXT, UploadDate TEXT, UploadStatus TEXT, UploadMessage TEXT);";
59+
private static final String createTableModuleConfig = "CREATE TABLE IF NOT EXISTS tblConfig(Id INTEGER, Module TEXT, Config TEXT);";
5960

6061
public final String REFERENCE_UNKNOWN;
6162

@@ -893,7 +894,8 @@ public JSONObject getItem(String itemId) {
893894
public void createTables() {
894895
String[] commands = {CreateTableControls, CreateTableReferences, CreateTableClaimAdmins,CreateTablePrograms,CreateTableDiagnosis,
895896
createTablePolicyInquiry, createTableClaimDetails, createTableClaimItems, createTableClaimServices,CreateTableSubItems,
896-
CreateTableSubServices,CreateTableItems,CreateTableServices, createTableClaimUploadStatus, CreateTableHealthFacilities};
897+
CreateTableSubServices,CreateTableItems,CreateTableServices, createTableClaimUploadStatus, CreateTableHealthFacilities,
898+
createTableModuleConfig};
897899
for (String command : commands) {
898900
try {
899901
db.execSQL(command);
@@ -903,6 +905,10 @@ public void createTables() {
903905
}
904906
}
905907

908+
public void updateTables(){
909+
db.execSQL(createTableModuleConfig);
910+
}
911+
906912
public void createMappingTables() {
907913
String[] commandsMapping = {CreateTableMapping};
908914
for (String command : commandsMapping) {
@@ -1274,4 +1280,17 @@ public String getReferenceName(@NonNull String referenceCode) {
12741280
return REFERENCE_UNKNOWN;
12751281
}
12761282
}
1283+
1284+
public void InsertConfig(int id, String module, String config) {
1285+
try {
1286+
ContentValues cv = new ContentValues();
1287+
cv.put("Id", id);
1288+
cv.put("Module", module);
1289+
cv.put("Config", config);
1290+
1291+
db.insert("tblConfig", null, cv);
1292+
} catch (Exception e) {
1293+
e.printStackTrace();
1294+
}
1295+
}
12771296
}

claimManagement/src/main/java/org/openimis/imisclaims/SynchronizeActivity.java

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.openimis.imisclaims.domain.entity.Diagnosis;
3434
import org.openimis.imisclaims.domain.entity.HealthFacility;
3535
import org.openimis.imisclaims.domain.entity.Medication;
36+
import org.openimis.imisclaims.domain.entity.ModuleConfig;
3637
import org.openimis.imisclaims.domain.entity.PaymentList;
3738
import org.openimis.imisclaims.domain.entity.Program;
3839
import org.openimis.imisclaims.domain.entity.Service;
@@ -41,6 +42,7 @@
4142
import org.openimis.imisclaims.tools.Log;
4243
import org.openimis.imisclaims.tools.StorageManager;
4344
import org.openimis.imisclaims.usecase.FetchClaimAdmins;
45+
import org.openimis.imisclaims.usecase.FetchConfigs;
4446
import org.openimis.imisclaims.usecase.FetchControls;
4547
import org.openimis.imisclaims.usecase.FetchDiagnosesServicesItems;
4648
import org.openimis.imisclaims.usecase.FetchDiagnosis;
@@ -121,7 +123,7 @@ protected void onCreate(Bundle savedInstanceState) {
121123

122124
importMasterData.setOnClickListener(view -> requestPickDatabase());
123125
downloadMasterData.setOnClickListener(view -> DownloadMasterData()); //TODO Not yet implemented
124-
downloadMasterData.setVisibility(View.GONE);
126+
downloadMasterData.setVisibility(View.VISIBLE);
125127
checkUpdate.setOnClickListener(view -> CheckUpdate());
126128

127129
}
@@ -265,17 +267,7 @@ public void ErrorDialogBox(final String message) {
265267

266268
public void DownloadMasterData() {
267269
if (global.isNetworkAvailable()) {
268-
String progress_message = getResources().getString(R.string.application);
269-
pd = ProgressDialog.show(this, getResources().getString(R.string.initializing), progress_message);
270-
Thread thread = new Thread(() -> {
271-
if(downloadControls()){
272-
runOnUiThread(() -> {
273-
pd.dismiss();
274-
downloadAdmins();
275-
});
276-
}
277-
});
278-
thread.start();
270+
downloadControls();
279271
} else {
280272
ErrorDialogBox(getResources().getString(R.string.CheckInternet));
281273
}
@@ -396,6 +388,7 @@ public void run() {
396388
runOnUiThread(() -> {
397389
pd.dismiss();
398390
Toast.makeText(SynchronizeActivity.this, getResources().getString(R.string.installed_updates), Toast.LENGTH_LONG).show();
391+
downloadConfigs();
399392
});
400393
} catch (Exception e) {
401394
e.printStackTrace();
@@ -545,6 +538,7 @@ public void run() {
545538

546539
runOnUiThread(() -> {
547540
pd.dismiss();
541+
downloadAdmins();
548542
});
549543
} catch (Exception e) {
550544
e.printStackTrace();
@@ -592,7 +586,14 @@ public void downloadAdmins(){
592586
} catch (Exception e) {
593587
e.printStackTrace();
594588
Sentry.captureException(e);
595-
runOnUiThread(() -> pd.dismiss());
589+
runOnUiThread(() -> {
590+
pd.dismiss();
591+
if(!global.isNetworkAvailable()){
592+
Toast.makeText(SynchronizeActivity.this, getResources().getString(R.string.CheckConnection), Toast.LENGTH_LONG).show();
593+
}else {
594+
Toast.makeText(SynchronizeActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
595+
}
596+
});
596597
}
597598
});
598599
thread.start();
@@ -718,4 +719,43 @@ public void downloadUpdate(String lastVersion, String tagName) {
718719
Sentry.captureException(e);
719720
}
720721
}
722+
723+
public void downloadConfigs (){
724+
if (global.isNetworkAvailable()){
725+
String progress_message = getResources().getString(R.string.getConfig) + "...";
726+
progressDialog = ProgressDialog.show(this, getResources().getString(R.string.download), progress_message);
727+
Thread thread = new Thread() {
728+
public void run() {
729+
try {
730+
List<ModuleConfig> configs = new FetchConfigs().execute();
731+
if(!configs.isEmpty()){
732+
sqlHandler.ClearAll("tblConfig");
733+
for (int i=0; i< configs.size(); i++) {
734+
sqlHandler.InsertConfig(i+1,configs.get(i).getModule(), configs.get(i).getConfig());
735+
}
736+
}
737+
runOnUiThread(() -> {
738+
progressDialog.dismiss();
739+
Toast.makeText(SynchronizeActivity.this, getResources().getString(R.string.downloaded_config), Toast.LENGTH_LONG).show();
740+
});
741+
} catch (Exception e) {
742+
e.printStackTrace();
743+
Sentry.captureException(e);
744+
runOnUiThread(() -> {
745+
progressDialog.dismiss();
746+
if(!global.isNetworkAvailable()){
747+
Toast.makeText(SynchronizeActivity.this, getResources().getString(R.string.CheckConnection), Toast.LENGTH_LONG).show();
748+
}else {
749+
Toast.makeText(SynchronizeActivity.this, e.getMessage() + "-" + getResources().getString(R.string.AccessDenied), Toast.LENGTH_LONG).show();
750+
}
751+
});
752+
}
753+
};
754+
};
755+
thread.start();
756+
} else {
757+
runOnUiThread(() -> progressDialog.dismiss());
758+
ErrorDialogBox(getResources().getString(R.string.CheckInternet));
759+
}
760+
}
721761
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.openimis.imisclaims.domain.entity;
2+
3+
import androidx.annotation.NonNull;
4+
5+
public class ModuleConfig {
6+
7+
@NonNull
8+
private final String config;
9+
@NonNull
10+
private final String module;
11+
12+
public ModuleConfig(
13+
@NonNull String config,
14+
@NonNull String module
15+
) {
16+
this.config = config;
17+
this.module = module;
18+
}
19+
20+
@NonNull
21+
public String getConfig() {
22+
return config;
23+
}
24+
25+
@NonNull
26+
public String getModule() {
27+
return module;
28+
}
29+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.openimis.imisclaims.network.request;
2+
3+
import androidx.annotation.NonNull;
4+
import androidx.annotation.WorkerThread;
5+
6+
import com.apollographql.apollo.api.Input;
7+
8+
import org.openimis.imisclaims.BuildConfig;
9+
import org.openimis.imisclaims.GetConfigsQuery;
10+
11+
import java.util.List;
12+
13+
public class GetConfigGraphQLRequest extends BaseGraphQLRequest {
14+
15+
private static final String uri = BuildConfig.MASTER_DATA_URL + "api/graphql";
16+
17+
@NonNull
18+
@WorkerThread
19+
public List<GetConfigsQuery.ModuleConfiguration> get() throws Exception {
20+
return makeSynchronous(new GetConfigsQuery(Input.fromNullable("fe")), uri).getData().moduleConfigurations();
21+
}
22+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.openimis.imisclaims.usecase;
2+
3+
import androidx.annotation.NonNull;
4+
import androidx.annotation.WorkerThread;
5+
6+
import org.openimis.imisclaims.domain.entity.ModuleConfig;
7+
import org.openimis.imisclaims.network.request.GetConfigGraphQLRequest;
8+
import org.openimis.imisclaims.network.util.Mapper;
9+
10+
import java.util.List;
11+
12+
public class FetchConfigs {
13+
14+
@NonNull
15+
private final GetConfigGraphQLRequest request;
16+
17+
public FetchConfigs() {
18+
this(new GetConfigGraphQLRequest());
19+
}
20+
21+
public FetchConfigs(
22+
@NonNull GetConfigGraphQLRequest request
23+
) {
24+
this.request = request;
25+
}
26+
27+
@WorkerThread
28+
@NonNull
29+
public List<ModuleConfig> execute() throws Exception {
30+
return Mapper.map(request.get(), dto -> {
31+
return new ModuleConfig(
32+
/* config = */ dto.config(),
33+
/* module = */ dto.module()
34+
);
35+
});
36+
}
37+
}

claimManagement/src/main/res/values-fr/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,4 +569,6 @@
569569
<string name="InvalidProgram">Le programme saisi est invalide</string>
570570
<string name="minChfIdRequired">Le numéro d\'assuré doit contenir minimum 12 caractères</string>
571571
<string name="minChequeNumberRequired">Le numéro de chèque doit contenir minimum 6 caractères</string>
572+
<string name="getConfig">Configurations des modules</string>
573+
<string name="downloaded_config">Configurations téléchargées avec succès</string>
572574
</resources>

claimManagement/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,4 +253,6 @@
253253
<string name="InvalidProgram">Invalid program</string>
254254
<string name="minChfIdRequired">The insuree number must contain at least 12 characters</string>
255255
<string name="minChequeNumberRequired">The cheque number must contain at least 6 characters</string>
256+
<string name="getConfig">Modules configurations</string>
257+
<string name="downloaded_config">Configurations downloaded successfully</string>
256258
</resources>

0 commit comments

Comments
 (0)