8 changed files with 497 additions and 181 deletions
@ -0,0 +1,179 @@ |
|||
package com.speculos.myapplicationoc; |
|||
|
|||
import android.app.Activity; |
|||
import android.os.Bundle; |
|||
import android.os.StrictMode; |
|||
import android.util.Log; |
|||
import android.view.View; |
|||
import android.widget.Button; |
|||
import android.widget.TextView; |
|||
import android.widget.Toast; |
|||
|
|||
import androidx.annotation.Nullable; |
|||
|
|||
import org.json.JSONArray; |
|||
import org.json.JSONException; |
|||
import org.json.JSONObject; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.concurrent.TimeUnit; |
|||
|
|||
import okhttp3.MediaType; |
|||
import okhttp3.OkHttpClient; |
|||
import okhttp3.Request; |
|||
import okhttp3.RequestBody; |
|||
import okhttp3.Response; |
|||
|
|||
public class ClientAlreadyExistConfirmation extends Activity { |
|||
|
|||
String hexa_id, mail, srvURL; |
|||
float solde, idClient; |
|||
|
|||
@Override |
|||
protected void onCreate(@Nullable Bundle savedInstanceState) { |
|||
super.onCreate(savedInstanceState); |
|||
|
|||
// Tweak pour contourner l'erreur android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
|
|||
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); |
|||
StrictMode.setThreadPolicy(policy); |
|||
|
|||
// recuperation de MyApplication contenant les variables globales
|
|||
MyApplication myApplication = (MyApplication) getApplication(); |
|||
srvURL = myApplication.getServerURL(); |
|||
|
|||
setContentView(R.layout.activity_client_exist_confirmation); |
|||
|
|||
hexa_id = getIntent().getStringExtra("hexa_id"); |
|||
|
|||
if (hexa_id == null) { |
|||
// TODO: afficher une erreur manque hexa_id
|
|||
Toast.makeText(ClientAlreadyExistConfirmation.this, "Hexa_id non trouvé", Toast.LENGTH_LONG).show(); |
|||
finish(); |
|||
} |
|||
|
|||
mail = getIntent().getStringExtra("mail"); |
|||
|
|||
/* Initialisation des info client*/ |
|||
// Call API info client à partir du bracelet
|
|||
String stringAPI = ""; |
|||
|
|||
try { |
|||
|
|||
OkHttpClient client = new OkHttpClient().newBuilder() |
|||
.connectTimeout(2000, TimeUnit.MILLISECONDS) |
|||
.callTimeout(2000, TimeUnit.MILLISECONDS) |
|||
.build(); |
|||
Request request = new Request.Builder() |
|||
.url(srvURL + "/api/clients.json?email=" + mail) |
|||
.method("GET", null) |
|||
.addHeader("Content-Type", "application/json") |
|||
.build(); |
|||
Response response = client.newCall(request).execute(); |
|||
|
|||
String in = response.body().string(); |
|||
in = in.substring(1, in.length() - 1); // on retire le [] autour de notre json premier et dernier char
|
|||
Log.d("API-debug-in", in); |
|||
|
|||
JSONObject jsonObject = null; |
|||
|
|||
try { |
|||
jsonObject = new JSONObject(in); |
|||
Log.d("API-debug", "json: "+ jsonObject.toString()); |
|||
// jsonObject = new JSONObject(jsonObject.get("client").toString()); // recup client embed dans l'objet parent
|
|||
} catch (JSONException e) { |
|||
Log.d("API-debug", e.getMessage()); |
|||
} |
|||
|
|||
|
|||
String mail = null; |
|||
mail = jsonObject.getString("email"); |
|||
solde = Float.parseFloat(jsonObject.getString("solde")); |
|||
|
|||
idClient = Float.parseFloat(jsonObject.getString("id")); |
|||
|
|||
TextView value_mail = findViewById(R.id.value_mail); |
|||
value_mail.setText(mail); |
|||
|
|||
JSONArray jsonBracelets = new JSONArray(jsonObject.get("bracelets").toString()); |
|||
Log.d("API-debug", "NBBRACELETS: " + jsonBracelets.length()); |
|||
|
|||
int nbBracelets = jsonBracelets.length(); |
|||
if (nbBracelets > 0) { |
|||
TextView textNbBracelets = findViewById(R.id.textNbBracelets); |
|||
|
|||
// 1 bracelet
|
|||
textNbBracelets.setText("avec " + nbBracelets + " bracelet"); |
|||
// plusieurs bracelets
|
|||
if (nbBracelets > 1) |
|||
textNbBracelets.setText("avec " + nbBracelets + " bracelets"); |
|||
|
|||
} else { |
|||
TextView textNbBracelets = findViewById(R.id.textNbBracelets); |
|||
textNbBracelets.setText("sans bracelet"); |
|||
} |
|||
|
|||
|
|||
} catch (IOException | JSONException e) { |
|||
e.printStackTrace(); |
|||
Log.d("API-debug-exception", e.getMessage()); |
|||
Toast.makeText(ClientAlreadyExistConfirmation.this, e.getMessage(), Toast.LENGTH_LONG).show(); |
|||
finish(); |
|||
} |
|||
|
|||
TextView value_solde = findViewById(R.id.value_solde); |
|||
value_solde.setText(solde + " €"); |
|||
|
|||
// Bouton de confirmation d'enregistrement
|
|||
Button button_enregistrer = findViewById(R.id.button_enregistrer); |
|||
|
|||
button_enregistrer.setOnClickListener(new View.OnClickListener() { |
|||
@Override |
|||
public void onClick(View view) { |
|||
// Requête ajout du bracelet au compte
|
|||
|
|||
// On peut maintenant link le bracelet grace à l'hexa_id et l'idClient
|
|||
try { |
|||
|
|||
OkHttpClient client = new OkHttpClient().newBuilder() |
|||
.build(); |
|||
MediaType mediaType = MediaType.parse("application/json"); |
|||
RequestBody body = RequestBody.create(mediaType, "{\"nfcId\": \"" + hexa_id + "\",\"client\": \"/api/clients/" + idClient + "\",\"state\": 0}"); |
|||
Request request = new Request.Builder() |
|||
.url(srvURL + "/api/bracelets") |
|||
.method("POST", body) |
|||
.addHeader("Content-Type", "application/json") |
|||
.build(); |
|||
Response responseHttp = client.newCall(request).execute(); |
|||
|
|||
if (responseHttp.code() == 400) { |
|||
try { |
|||
JSONObject jsonReader = null; |
|||
jsonReader = new JSONObject(responseHttp.body().string()); |
|||
Log.d("JSON-MSG", "violations: " + jsonReader.getJSONArray("violations").getString(0)); |
|||
Toast.makeText(ClientAlreadyExistConfirmation.this, "violations: " + jsonReader.getJSONArray("violations").getString(0), Toast.LENGTH_LONG).show(); |
|||
} catch (JSONException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
} |
|||
|
|||
} catch (IOException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
|
|||
finish(); |
|||
} |
|||
}); |
|||
|
|||
// Bouton de retour
|
|||
Button button_retour = findViewById(R.id.button_non); |
|||
|
|||
button_retour.setOnClickListener(new View.OnClickListener() { |
|||
@Override |
|||
public void onClick(View view) { |
|||
finish(); |
|||
|
|||
} |
|||
}); |
|||
|
|||
} |
|||
} |
@ -0,0 +1,131 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:tools="http://schemas.android.com/tools" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" |
|||
android:orientation="vertical" > |
|||
|
|||
<TextView |
|||
android:id="@+id/textViewTitle" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="30dp" |
|||
android:gravity="center" |
|||
android:text="Un compte client existe" |
|||
android:textSize="30sp" |
|||
android:textStyle="bold"/> |
|||
|
|||
<TextView |
|||
android:id="@+id/textNbBracelets" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="30dp" |
|||
android:gravity="center" |
|||
android:text="avec ? bracelets" |
|||
android:textSize="20sp" |
|||
android:textStyle="bold"/> |
|||
|
|||
<Space |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" /> |
|||
|
|||
<LinearLayout |
|||
android:id="@+id/layout_mail" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_weight="1" |
|||
android:orientation="horizontal"> |
|||
|
|||
<TextView |
|||
android:id="@+id/label_mail" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_gravity="center" |
|||
android:layout_weight="1" |
|||
android:gravity="center" |
|||
android:text="Mail :" |
|||
android:textSize="30sp" /> |
|||
|
|||
<TextView |
|||
android:id="@+id/value_mail" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_gravity="center" |
|||
android:layout_weight="0.7" |
|||
android:gravity="center" |
|||
android:text="-" |
|||
android:textSize="18sp" /> |
|||
</LinearLayout> |
|||
|
|||
<LinearLayout |
|||
android:id="@+id/layout_solde" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_weight="1" |
|||
android:orientation="horizontal"> |
|||
|
|||
<TextView |
|||
android:id="@+id/label_solde" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_gravity="center" |
|||
android:layout_weight="1" |
|||
android:gravity="center" |
|||
android:text="Solde :" |
|||
android:textSize="30sp" /> |
|||
|
|||
<TextView |
|||
android:id="@+id/value_solde" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_gravity="center" |
|||
android:layout_weight="0.7" |
|||
android:gravity="center" |
|||
android:text="-" |
|||
android:textSize="18sp" /> |
|||
</LinearLayout> |
|||
|
|||
<LinearLayout |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_weight="5" |
|||
android:orientation="vertical" |
|||
android:paddingLeft="20dp" |
|||
android:paddingRight="20dp"> |
|||
|
|||
<Space |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_weight="1" /> |
|||
|
|||
<Button |
|||
android:id="@+id/button_enregistrer" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_gravity="center" |
|||
android:layout_weight="1" |
|||
android:gravity="center" |
|||
android:text="Ajouter ce bracelet au compte" /> |
|||
|
|||
<Space |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_weight="0.5" /> |
|||
|
|||
<Button |
|||
android:id="@+id/button_non" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_gravity="center" |
|||
android:layout_weight="1" |
|||
android:gravity="center" |
|||
android:text="retour" /> |
|||
|
|||
<Space |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_weight="1" /> |
|||
</LinearLayout> |
|||
|
|||
|
|||
</LinearLayout> |
Loading…
Reference in new issue