From e9fab30f78e5c27518eaac6bb1474acd093f8a22 Mon Sep 17 00:00:00 2001 From: maissane Date: Mon, 12 May 2025 10:35:42 +0200 Subject: [PATCH] projet android depanntout fini --- .idea/vcs.xml | 1 - app/src/main/AndroidManifest.xml | 3 + app/src/main/java/bdd/ClientDAO.java | 1 - app/src/main/java/bdd/CreateBdDepannTout.java | 2 +- app/src/main/java/bdd/DAO.java | 2 - app/src/main/java/bdd/InterventionDAO.java | 23 +++- .../com/example/dpanntout/ListeClient.java | 55 ++++---- .../example/dpanntout/ListeIntervention.java | 37 ++++- .../dpanntout/ModifierLintervention.java | 130 ++++++++++++++++++ .../example/dpanntout/creerIntervention.java | 8 ++ .../layout/activity_creer_intervention.xml | 16 +-- .../layout/activity_liste_intervention.xml | 35 +++-- .../layout/activity_modifier_le_client.xml | 6 +- .../activity_modifier_lintervention.xml | 75 ++++++++++ .../main/res/layout/ligne_intervention.xml | 38 ++--- app/src/main/res/values/strings.xml | 8 ++ 16 files changed, 370 insertions(+), 70 deletions(-) create mode 100644 app/src/main/java/com/example/dpanntout/ModifierLintervention.java create mode 100644 app/src/main/res/layout/activity_modifier_lintervention.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 9b7528e..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,6 +2,5 @@ - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 313ad49..1e5460f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,9 @@ android:supportsRtl="true" android:theme="@style/Theme.DépannTout" tools:targetApi="31"> + diff --git a/app/src/main/java/bdd/ClientDAO.java b/app/src/main/java/bdd/ClientDAO.java index a3c6271..9f7ca5d 100644 --- a/app/src/main/java/bdd/ClientDAO.java +++ b/app/src/main/java/bdd/ClientDAO.java @@ -29,7 +29,6 @@ public class ClientDAO { /** * Fermeture de la base de données */ - public void close() { dao.close(); } diff --git a/app/src/main/java/bdd/CreateBdDepannTout.java b/app/src/main/java/bdd/CreateBdDepannTout.java index 2bbeabe..f4710ea 100644 --- a/app/src/main/java/bdd/CreateBdDepannTout.java +++ b/app/src/main/java/bdd/CreateBdDepannTout.java @@ -27,7 +27,7 @@ public class CreateBdDepannTout extends SQLiteOpenHelper { "dateTime TEXT NOT NULL, " + "observation TEXT NOT NULL);"; - // Constructeur, à générer automatiquement + // Constructeur (généré automatiquement) public CreateBdDepannTout(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); diff --git a/app/src/main/java/bdd/DAO.java b/app/src/main/java/bdd/DAO.java index 0ebdba8..0f13d8a 100644 --- a/app/src/main/java/bdd/DAO.java +++ b/app/src/main/java/bdd/DAO.java @@ -14,7 +14,6 @@ public class DAO { createBd = new CreateBdDepannTout(context, NOM_BDD, null, VERSION_BDD); Log.d("bdd", "Appel au constructeur de DAO ok, bdd créée"); } - public SQLiteDatabase open(){ if (db == null){ db = createBd.getWritableDatabase(); @@ -24,7 +23,6 @@ public class DAO { } return db; } - public void close() { if(db != null){ db.close(); diff --git a/app/src/main/java/bdd/InterventionDAO.java b/app/src/main/java/bdd/InterventionDAO.java index fffb447..a62e0cc 100644 --- a/app/src/main/java/bdd/InterventionDAO.java +++ b/app/src/main/java/bdd/InterventionDAO.java @@ -5,6 +5,9 @@ import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; +import android.widget.Toast; + +import org.w3c.dom.Text; import metier.Client; import metier.Intervention; @@ -35,7 +38,8 @@ public class InterventionDAO { public Cursor readLesInterventions() { - String reqSql = "Select id as '_id', idCli as 'idCli', dateTime, observation FROM " + CreateBdDepannTout.TABLE_INTER +";"; + String reqSql = "Select id as '_id', idCli as 'idCli', dateTime, observation FROM " + + CreateBdDepannTout.TABLE_INTER +";"; // Execution de la requête Cursor c = db.rawQuery(reqSql, null); Log.d("bdd", "le curseur contient " + c.getCount() + " lignes"); @@ -50,8 +54,25 @@ public class InterventionDAO { Log.d("bdd", "insert, :" + i); return db.insert(CreateBdDepannTout.TABLE_INTER, null, values); } + public void deleteIntervention(int id ){ +// int ligneSuppr = db.delete("intervention", "id = ?", new String[]{String.valueOf(id)}); +//// db.close(); +// Log.d("DEBUG", "Nombre de lignes supprimées : " + ligneSuppr ); + Log.d("DEBUG", "Tentative de suppression de l'intervention avec l'ID : " + id); + int ligneSuppr = db.delete("intervention", "id = ?", new String[]{String.valueOf(id)}); + Log.d("DEBUG", "Nombre de lignes supprimées : " + ligneSuppr); // Affiche le nombre de lignes supprimées + db.close(); + } + public void updateIntervention(int idInter, int idCli, String dateTime, String observation) { + ContentValues values = new ContentValues(); +// values.put("idInter", idInter); + values.put("idCli", idCli); + values.put("dateTime", dateTime); + values.put("observation", observation); + db.update("intervention", values, "id = ?", new String[]{String.valueOf(idInter)}); + } diff --git a/app/src/main/java/com/example/dpanntout/ListeClient.java b/app/src/main/java/com/example/dpanntout/ListeClient.java index 1ba99f8..5430d47 100644 --- a/app/src/main/java/com/example/dpanntout/ListeClient.java +++ b/app/src/main/java/com/example/dpanntout/ListeClient.java @@ -50,30 +50,30 @@ public class ListeClient extends AppCompatActivity { finish(); } }); - //gestion du bouton modifier un client - Button btModifP2 = (Button)findViewById(R.id.btModifP2); - btModifP2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (verifierClientSelectionne()) { - demarrerPageModification(); - } - } - }); +// //gestion du bouton modifier un client +// Button btModifP2 = (Button)findViewById(R.id.btModifP2); +// btModifP2.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// if (verifierClientSelectionne()) { +// demarrerPageModification(); +// } +// } +// }); afficherLesClients(); } - private void demarrerPageModification () { - Intent intent = new Intent(ListeClient.this, ModifierLeClient.class); - intent.putExtra("nom", clientSelectionne.getNom()); - intent.putExtra("prenom", clientSelectionne.getPrenom()); - intent.putExtra("mail", clientSelectionne.getAdrMail()); - intent.putExtra("numero", clientSelectionne.getNumTel()); - intent.putExtra("adresse", clientSelectionne.getAdrPostale()); - startActivity(intent); - - } +// private void demarrerPageModification () { +// Intent intent = new Intent(ListeClient.this, ModifierLeClient.class); +// intent.putExtra("nom", clientSelectionne.getNom()); +// intent.putExtra("prenom", clientSelectionne.getPrenom()); +// intent.putExtra("mail", clientSelectionne.getAdrMail()); +// intent.putExtra("numero", clientSelectionne.getNumTel()); +// intent.putExtra("adresse", clientSelectionne.getAdrPostale()); +// startActivity(intent); +// +// } public void afficherLesClients() { Log.d("bdd", "debut afficherLesInterventions"); @@ -133,13 +133,14 @@ public class ListeClient extends AppCompatActivity { - private boolean verifierClientSelectionne() { - if (idClientSelectionne == -1) { - Toast.makeText(this, "Sélectionnez d'abord un client à modifier ", Toast.LENGTH_SHORT).show(); - return false; - } - return true; - } + //ct une condition pour le bouton genre qd on clic sur le bouton modif sans selec un cli +// private boolean verifierClientSelectionne() { +// if (idClientSelectionne == -1) { +// Toast.makeText(this, "Sélectionnez d'abord un client à modifier ", Toast.LENGTH_SHORT).show(); +// return false; +// } +// return true; +// } diff --git a/app/src/main/java/com/example/dpanntout/ListeIntervention.java b/app/src/main/java/com/example/dpanntout/ListeIntervention.java index 33e48b5..fce2ce2 100644 --- a/app/src/main/java/com/example/dpanntout/ListeIntervention.java +++ b/app/src/main/java/com/example/dpanntout/ListeIntervention.java @@ -56,7 +56,7 @@ public class ListeIntervention extends AppCompatActivity { Cursor c = interventionDAO.readLesInterventions(); Log.d("Database", "Nombre d'interventions(s) : " + c.getCount()); Toast.makeText(getApplicationContext(), "il y a " + c.getCount() + " interventions ", Toast.LENGTH_SHORT).show(); - interventionDAO.close(); +// interventionDAO.close(); //nom des 4 attributs lus dans la bdd String[] from = new String[]{"idCli", "dateTime", "observation"}; //reference des controles graphiques qui afficheront les valeurs de la page ligne_intervention @@ -65,8 +65,43 @@ public class ListeIntervention extends AppCompatActivity { SimpleCursorAdapter dataAdapter = new SimpleCursorAdapter(this , R.layout.ligne_intervention, c, from,to,0); ListView lvInter = (ListView) findViewById(R.id.lvInter); lvInter.setAdapter(dataAdapter); + + configurerSelectioninter(); } + private void configurerSelectioninter() { + ListView lvInter = findViewById(R.id.lvInter); + lvInter.setOnItemClickListener((parent, view, position, id) -> { + // Récupération du curseur correspondant à l'élément sélectionné + Cursor c = (Cursor) parent.getItemAtPosition(position); + // On récupère l'ID de l'intervention depuis le curseur + int indexId = c.getColumnIndexOrThrow("_id"); // Assurez-vous que le nom de la colonne est "id" + int interventionId = c.getInt(indexId); + + // On récupère les indices des colonnes + int indexIdCli = c.getColumnIndexOrThrow("idCli"); + int indexDate = c.getColumnIndexOrThrow("dateTime"); + int indexObservation = c.getColumnIndexOrThrow("observation"); + + // On récupère les valeurs des colonnes + String idClient = c.getString(indexIdCli); + String date = c.getString(indexDate); + String obs = c.getString(indexObservation); + + // On affiche ces infos pour le débogage + Toast.makeText(getApplicationContext(), "Intervention sélectionné : " + idClient + " " , Toast.LENGTH_SHORT).show(); + + // Passage de toutes les données à la page de modification + Intent intent = new Intent(ListeIntervention.this, ModifierLintervention.class); + intent.putExtra("_id", interventionId); // Passer l'ID de l'intervention + intent.putExtra("id", (int) id); // Passer l'ID de l'inter + intent.putExtra("idCli", idClient); + intent.putExtra("dateTime", date); + intent.putExtra("observation", obs); + + startActivity(intent); + }); + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/dpanntout/ModifierLintervention.java b/app/src/main/java/com/example/dpanntout/ModifierLintervention.java new file mode 100644 index 0000000..453dbf6 --- /dev/null +++ b/app/src/main/java/com/example/dpanntout/ModifierLintervention.java @@ -0,0 +1,130 @@ +package com.example.dpanntout; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import bdd.ClientDAO; +import bdd.InterventionDAO; + +public class ModifierLintervention extends AppCompatActivity { + private int idInter ; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_modifier_lintervention); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + Initialisation(); + initialiserChampsIntervention(); + + idInter = getIntent().getIntExtra("id", -1); // -1 si problème + + } + + + private void Initialisation() { + //gestion du bouton quitter + Button btQuitModifInter = (Button) findViewById(R.id.btQuitModifInter); + //associer l'evenement quitter au boutton quitter + btQuitModifInter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + Button btDeleteInter = (Button) findViewById(R.id.btDeleteInter); + btDeleteInter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + supprimerIntervention(); + } + }); + Button saveModifInter = (Button) findViewById(R.id.saveModifInter); + saveModifInter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + modifierIntervention(); + } + }); + + + } + + + //methode qui permet d'afficher dans les champs les données d'une inter selectionner + private void initialiserChampsIntervention() { + // Récupérer les données envoyées par l'intent + Intent intent = getIntent(); + if (intent != null) { + String numCLient = intent.getStringExtra("idCli"); + + String date = intent.getStringExtra("dateTime"); + String observation = intent.getStringExtra("observation"); + + // Relier les EditText avec fiche id fichier xml modifier client + EditText etNumCli = findViewById(R.id.tvNumcliModif); + EditText etDateTime = findViewById(R.id.tvDateModif); + EditText etObservation = findViewById(R.id.tvObsModif); + + // Remplir les EditText + etNumCli.setText(numCLient); + etDateTime.setText(date); + etObservation.setText(observation); + } + } + public void supprimerIntervention(){ + InterventionDAO intervention = new InterventionDAO(this); + intervention.deleteIntervention(idInter); // appel de la methode presente dans ClientDAO + intervention.close(); //fermer la classe + Toast.makeText(this, "Intervention supprimé", Toast.LENGTH_SHORT).show(); + + } + + + + public void modifierIntervention(){ + // On récupère les champs de texte (les EditText) à l'écran, où l'utilisateur a tapé les infos + EditText etNumCli = findViewById(R.id.tvNumcliModif); + EditText etDateTime = findViewById(R.id.tvDateModif); + EditText etObservation = findViewById(R.id.tvObsModif); + + // On transforme le texte saisi par l'utilisateur (EditText) en vraie chaîne de caractères (String) + // C’est ce qu’on va envoyer à la base de données + String idClient = etNumCli.getText().toString(); + String date = etDateTime.getText().toString(); + String observation = etObservation.getText().toString(); + + // On crée une instance de ClientDAO pour accéder à la base de données + InterventionDAO interventionDAO = new InterventionDAO(this); + + // On appelle la méthode updateClient avec toutes les nouvelles valeurs + l'ID du client + interventionDAO.updateIntervention( idInter, Integer.parseInt(idClient), date, observation ); + + // On ferme la connexion à la base de données pour libérer les ressources + interventionDAO.close(); + + Toast.makeText(this, "intervention modifiée", Toast.LENGTH_SHORT).show(); + + // On ferme cette activité et on revient à l'écran précédent (ex : la liste des clients) + finish(); // retour à la liste + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/dpanntout/creerIntervention.java b/app/src/main/java/com/example/dpanntout/creerIntervention.java index 9df704f..8e01310 100644 --- a/app/src/main/java/com/example/dpanntout/creerIntervention.java +++ b/app/src/main/java/com/example/dpanntout/creerIntervention.java @@ -99,6 +99,14 @@ public class creerIntervention extends AppCompatActivity { } }); } + + + + + + + + } diff --git a/app/src/main/res/layout/activity_creer_intervention.xml b/app/src/main/res/layout/activity_creer_intervention.xml index f7a2900..b00e6ac 100644 --- a/app/src/main/res/layout/activity_creer_intervention.xml +++ b/app/src/main/res/layout/activity_creer_intervention.xml @@ -31,6 +31,14 @@ android:textAlignment="center" android:textSize="24sp" /> + + - -