From bb9b091f223037d669d010bdcd7f4ec5e46d7716 Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Mon, 28 Mar 2022 12:40:09 +0200
Subject: [PATCH] =?UTF-8?q?Meilleure=20gestion=20des=20commandes=20re?=
 =?UTF-8?q?=C3=A7ues?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/slprojects/pizzeria/backTasks.java    | 54 ++++++++++++-------
 .../main/res/layout/activity_num_table.xml    | 13 ++---
 2 files changed, 43 insertions(+), 24 deletions(-)

diff --git a/app/src/main/java/com/slprojects/pizzeria/backTasks.java b/app/src/main/java/com/slprojects/pizzeria/backTasks.java
index 1410a79..0e8f014 100644
--- a/app/src/main/java/com/slprojects/pizzeria/backTasks.java
+++ b/app/src/main/java/com/slprojects/pizzeria/backTasks.java
@@ -41,27 +41,45 @@ public class backTasks extends AsyncTask<String, Void, Void> {
                 // Le serveur demande d'envoyer LIST pour la récupérer
                 sendMessageToServer("LIST");
 
-                // On va récupérer le nombre de commandes
-                Integer nbCommandes = Integer.parseInt(input.readLine());
-                Log.i("backTasks:", "Nombre de commandes: "+nbCommandes);
-
-                // Maintenant on va attendre ses messages
-                String receviedMsg = "";
-                Integer receivedFlag = 1;
-                String textToDisplay = "";
-                // Je ne peux pas faire receivedFlag < nbCommandes car il y a des commandes regroupées sur une seule ligne
-                while(receviedMsg != null || receivedFlag == 1){
-                    receviedMsg = input.readLine();
-                    if(receviedMsg != null){
-                        textToDisplay += receviedMsg + "\n";
-                        Log.i("backTasks", "Commande en attente: " + receviedMsg);
-                        receivedFlag++; // On incrémente le flag
-                        Log.i("backTasks", "Flag: " + receivedFlag);
+                // On va récupérer les messages du serveur
+                Integer nbMessagesRecus = 0;
+                Integer nbMessagesAttendus = 0;
+                Boolean listenMessages = true;
+                String receivedMessage = "";
+                String messageToSend = "";
+                // On va écouter un message tant que le flag est vrai
+                while(listenMessages){
+                    receivedMessage = input.readLine(); // On lit le message
+                    if(receivedMessage != null){ // Si on a bien reçu un message
+                        // On va check l'ordre du message
+                        // Le premier message contient le nombre de commandes
+                        if(nbMessagesRecus == 0){
+                            nbMessagesAttendus = Integer.parseInt(receivedMessage);
+                            nbMessagesRecus++;
+                            Log.i("backTasks:", "Nombre de commandes: "+nbMessagesAttendus);
+                        }else{
+                            // On a reçu un message
+                            // On va split les messages au cas où plusieurs auraient été envoyés en même temps
+                            String[] messages = receivedMessage.split("Table");
+                            for(int i = 0; i < messages.length; i++){
+                                if(messages[i].length() > 0){
+                                    // On ajoute le message à la liste
+                                    messageToSend += "Table" + messages[i] + "\n"; // On rajoute "Table" car le split l'a supprimé
+                                    // On va incrémenter le nombre de message reçu
+                                    nbMessagesRecus++;
+                                    Log.i("backTasks:", "Message n°"+ nbMessagesRecus +" reçu: "+messages[i]);
+                                }
+                            }
+                        }
+                        if((nbMessagesRecus-1) == nbMessagesAttendus){ // -1 car on a déjà récupéré le nombre de commandes
+                            // On a reçu tous les messages
+                            listenMessages = false;
+                        }
                     }
                 }
-                Log.i("backTasks", "Liste des commandes reçues");
+
                 // On va afficher les commandes
-                numTableActivity.setListeCommandes(textToDisplay);
+                numTableActivity.setListeCommandes(messageToSend);
 
             }else{
                 if(activity == null){
diff --git a/app/src/main/res/layout/activity_num_table.xml b/app/src/main/res/layout/activity_num_table.xml
index d688a1c..6548ba4 100644
--- a/app/src/main/res/layout/activity_num_table.xml
+++ b/app/src/main/res/layout/activity_num_table.xml
@@ -23,30 +23,31 @@
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:orientation="horizontal"
-      app:layout_constraintTop_toBottomOf="@+id/imageView"
       app:layout_constraintBottom_toTopOf="@+id/listeCommandesText"
+      app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
-      app:layout_constraintEnd_toEndOf="parent">
+      app:layout_constraintTop_toBottomOf="@+id/imageView">
 
     <TextView
         android:id="@+id/textNumTable"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Numéro de table"
-        android:textSize="16sp" />
+        android:textSize="16sp"/>
 
     <EditText
         android:id="@+id/tableNumInput"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:ems="10"
-        android:inputType="number" />
+        android:ems="9"
+        android:inputType="number"
+        android:minHeight="48dp" />
 
     <Button
         android:id="@+id/btnValider"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="@string/choose"/>
+        android:text="@string/choose" />
 
   </LinearLayout>
 
-- 
GitLab