diff --git a/DepannRien/.gitignore b/DepannRien/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/DepannRien/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/DepannRien/.idea/.gitignore b/DepannRien/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/DepannRien/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/DepannRien/.idea/.name b/DepannRien/.idea/.name new file mode 100644 index 0000000..317c88f --- /dev/null +++ b/DepannRien/.idea/.name @@ -0,0 +1 @@ +Depanntout \ No newline at end of file diff --git a/DepannRien/.idea/compiler.xml b/DepannRien/.idea/compiler.xml new file mode 100644 index 0000000..b86273d --- /dev/null +++ b/DepannRien/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DepannRien/.idea/deploymentTargetSelector.xml b/DepannRien/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/DepannRien/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/DepannRien/.idea/gradle.xml b/DepannRien/.idea/gradle.xml new file mode 100644 index 0000000..efacb99 --- /dev/null +++ b/DepannRien/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/DepannRien/.idea/migrations.xml b/DepannRien/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/DepannRien/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/DepannRien/.idea/misc.xml b/DepannRien/.idea/misc.xml new file mode 100644 index 0000000..d15a481 --- /dev/null +++ b/DepannRien/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/DepannRien/.idea/runConfigurations.xml b/DepannRien/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/DepannRien/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/DepannRien/.idea/vcs.xml b/DepannRien/.idea/vcs.xml new file mode 100644 index 0000000..62bd7a0 --- /dev/null +++ b/DepannRien/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/DepannRien/app/.gitignore b/DepannRien/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/DepannRien/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/DepannRien/app/build.gradle.kts b/DepannRien/app/build.gradle.kts new file mode 100644 index 0000000..9735451 --- /dev/null +++ b/DepannRien/app/build.gradle.kts @@ -0,0 +1,43 @@ +plugins { + alias(libs.plugins.android.application) +} + +android { + namespace = "com.example.depanntout" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.depanntout" + minSdk = 24 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } +} + +dependencies { + + implementation(libs.appcompat) + implementation(libs.material) + implementation(libs.activity) + implementation(libs.constraintlayout) + testImplementation(libs.junit) + androidTestImplementation(libs.ext.junit) + androidTestImplementation(libs.espresso.core) +} \ No newline at end of file diff --git a/DepannRien/app/proguard-rules.pro b/DepannRien/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/DepannRien/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/DepannRien/app/src/androidTest/java/com/example/depanntout/ExampleInstrumentedTest.java b/DepannRien/app/src/androidTest/java/com/example/depanntout/ExampleInstrumentedTest.java new file mode 100644 index 0000000..7769299 --- /dev/null +++ b/DepannRien/app/src/androidTest/java/com/example/depanntout/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.depanntout; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.depanntout", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/DepannRien/app/src/main/AndroidManifest.xml b/DepannRien/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..ae65597 --- /dev/null +++ b/DepannRien/app/src/main/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DepannRien/app/src/main/java/bdd/ClientDAO.java b/DepannRien/app/src/main/java/bdd/ClientDAO.java new file mode 100644 index 0000000..b1e5089 --- /dev/null +++ b/DepannRien/app/src/main/java/bdd/ClientDAO.java @@ -0,0 +1,75 @@ +package bdd; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.util.Log; + +import metier.Client; + +public class ClientDAO { + private DAO dao = null; + private SQLiteDatabase db = null; + + /** + * Constructeur + * @param context + */ + + public ClientDAO(Context context){ + dao = new DAO(context); + db = dao.open(); + } + + /** + * Fermeture de la base de données + */ + + public void close() { + dao.close(); + } + + public Cursor readLesClients() { + String reqSql = "Select id as '_id', nom, prenom, numTel, adrMail, adrPostale FROM " + CreateBdDepannTout.TABLE_CLIENT +";"; + // Execution de la requête + Cursor c = db.rawQuery(reqSql, null); + Log.d("bdd", "le curseur contient " + c.getCount() + " lignes"); + return c; + } + + public long create(Client c) { + ContentValues values = new ContentValues(); + values.put("nom", c.getNom()); + values.put("prenom", c.getPrenom()); + values.put("numTel", c.getNumTel()); + values.put("adrMail", c.getAdrMail()); + values.put("adrPostale", c.getAdrPostale()); + Log.d("bdd", "insert, :" + c); + return db.insert(CreateBdDepannTout.TABLE_CLIENT, null, values); + } + + public boolean delete(int id) { + int result = db.delete(CreateBdDepannTout.TABLE_CLIENT, + "id = ?", + new String[]{String.valueOf(id)}); + db.close(); + return result > 0; + } + + public boolean update(int id, String nom, String prenom, int numTel, String adrMail, String adrPostale) { + ContentValues values = new ContentValues(); + values.put("nom", nom); + values.put("prenom", prenom); + values.put("numTel", numTel); + values.put("adrMail", adrMail); + values.put("adrPostale", adrPostale); + int result = db.update(CreateBdDepannTout.TABLE_CLIENT, + values, + "id = ?", + new String[]{String.valueOf(id)}); + db.close(); + return result > 0; + } + +} diff --git a/DepannRien/app/src/main/java/bdd/CreateBdDepannTout.java b/DepannRien/app/src/main/java/bdd/CreateBdDepannTout.java new file mode 100644 index 0000000..a9e90c1 --- /dev/null +++ b/DepannRien/app/src/main/java/bdd/CreateBdDepannTout.java @@ -0,0 +1,128 @@ +package bdd; + +import android.content.ContentValues; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +import androidx.annotation.Nullable; + +public class CreateBdDepannTout extends SQLiteOpenHelper { + + public static final String TABLE_CLIENT = "client"; + public static final String TABLE_INTER = "intervention"; + private static final String CREATE_TABLE_CLIENT = + "CREATE TABLE " + TABLE_CLIENT + "(" + + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "nom TEXT NOT NULL, " + + "prenom TEXT NOT NULL, " + + "numTel TEXT NOT NULL, " + + "adrMail TEXT NOT NULL, " + + "adrPostale TEXT NOT NULL);"; + + private static final String CREATE_TABLE_INTER = + "CREATE TABLE " + TABLE_INTER + "(" + + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "idCli TEXT NOT NULL, " + + "date TEXT NOT NULL, " + + "heure TEXT NOT NULL," + + "observation TEXT NOT NULL);"; + + private static final String INSERT_INTO_INTERVENTION = + "INSERT INTO " + TABLE_INTER + " (idCli, date, heure, observation) VALUES " + + "(1, '03/01/2025', '12h30', 'dégât des eaux dans la cuisine'), " + + "(2, '03/01/2025', '13h00', 'dégât des eaux dans la salle de bain'), " + + "(3, '03/01/2025', '14h15', 'fuite d''eau dans le salon'), " + + "(4, '03/01/2025', '15h45', 'dégât des eaux dans le garage'), " + + "(5, '03/01/2025', '16h00', 'fuite d''eau dans la chambre'), " + + "(6, '03/01/2025', '17h30', 'dégât des eaux sur la terrasse'), " + + "(7, '03/01/2025', '18h10', 'fuite d''eau dans les toilettes'), " + + "(8, '03/01/2025', '19h00', 'dégât des eaux dans le bureau'), " + + "(9, '03/01/2025', '20h15', 'fuite d''eau dans l''entrée'), " + + "(10, '03/01/2025', '21h00', 'dégât des eaux dans la buanderie')"; + + private static final String INSERT_INTO_CLIENT = + "INSERT INTO " + TABLE_CLIENT + " (nom, prenom, numTel, adrMail, adrPostale) VALUES " + + "('Dupont', 'Jean', '0600000001', 'jean.dupont@example.com', '10 Rue de Paris, 75001 Paris'), " + + "('Martin', 'Sophie', '0600000002', 'sophie.martin@example.com', '15 Rue de Lyon, 69001 Lyon'), " + + "('Durand', 'Paul', '0600000003', 'paul.durand@example.com', '20 Rue de Bordeaux, 33000 Bordeaux'), " + + "('Lemoine', 'Claire', '0600000004', 'claire.lemoine@example.com', '25 Rue de Lille, 59000 Lille'), " + + "('Morel', 'Luc', '0600000005', 'luc.morel@example.com', '30 Rue de Nantes, 44000 Nantes'), " + + "('Blanc', 'Julie', '0600000006', 'julie.blanc@example.com', '35 Rue de Marseille, 13000 Marseille'), " + + "('Garcia', 'Emma', '0600000007', 'emma.garcia@example.com', '40 Rue de Toulouse, 31000 Toulouse'), " + + "('Petit', 'Hugo', '0600000008', 'hugo.petit@example.com', '45 Rue de Strasbourg, 67000 Strasbourg'), " + + "('Roux', 'Chloe', '0600000009', 'chloe.roux@example.com', '50 Rue de Nice, 06000 Nice'), " + + "('Fournier', 'Lucas', '0600000010', 'lucas.fournier@example.com', '55 Rue de Rennes, 35000 Rennes')"; + + // Constructeur, à générer automatiquement + public CreateBdDepannTout(@Nullable Context context, @Nullable String name, + @Nullable SQLiteDatabase.CursorFactory factory, int version) { + super(context, name, factory, version); + } + + /** + * Création de la base de données si elle n'existe pas + * + * @param db base + */ + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL(CREATE_TABLE_CLIENT); + Log.d("bdd", "table client créée"); + + db.execSQL(CREATE_TABLE_INTER); + Log.d("bdd", "table intervention créée"); + + db.execSQL(INSERT_INTO_INTERVENTION); + Log.d("bdd", "données table intervention inserées"); + + db.execSQL(INSERT_INTO_CLIENT); + Log.d("bdd", "données table client inserées"); + } + + /** + * Création d'une nouvelle base en cas de changement de version + * + * @param db + * @param oldVersion + * @param newVersion + */ + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + db.execSQL("DROP TABLE " + TABLE_CLIENT + ";"); + Log.d("bdd", "Table " + TABLE_CLIENT + " supprimée"); + db.execSQL("DROP TABLE " + TABLE_INTER + ";"); + Log.d("bdd", "Table " + TABLE_INTER + " supprimée"); + onCreate(db); + } + + public void insertDataInter(SQLiteDatabase db) { + // Sample data to insert + String[][] data = { + {"1", "03/01/2025", "12h30", "dégât des eaux dans la cuisine"}, + {"2", "03/01/2025", "13h00", "dégât des eaux dans la salle de bain"}, + {"3", "03/01/2025", "14h15", "fuite d'eau dans le salon"}, + {"4", "03/01/2025", "15h45", "dégât des eaux dans le garage"}, + {"5", "03/01/2025", "16h00", "fuite d'eau dans la chambre"}, + {"6", "03/01/2025", "17h30", "dégât des eaux sur la terrasse"}, + {"7", "03/01/2025", "18h10", "fuite d'eau dans les toilettes"}, + {"8", "03/01/2025", "19h00", "dégât des eaux dans le bureau"}, + {"9", "03/01/2025", "20h15", "fuite d'eau dans l'entrée"}, + {"10", "03/01/2025", "21h00", "dégât des eaux dans la buanderie"} + }; + + // Insert each row into the database + for (String[] row : data) { + ContentValues values = new ContentValues(); + values.put("idCli", row[0]); + values.put("date", row[1]); + values.put("heure", row[2]); + values.put("observation", row[3]); + + db.insert("Intervention", null, values); // Insert the row + Log.d("bdd", "Insertion intervention réussie " + values); + } + } + +} diff --git a/DepannRien/app/src/main/java/bdd/DAO.java b/DepannRien/app/src/main/java/bdd/DAO.java new file mode 100644 index 0000000..8740a09 --- /dev/null +++ b/DepannRien/app/src/main/java/bdd/DAO.java @@ -0,0 +1,34 @@ +package bdd; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.util.Log; + +public class DAO { + private static final int VERSION_BDD = 8; + private static final String NOM_BDD = "bdDepannTout"; + private CreateBdDepannTout createBd = null; + private SQLiteDatabase db = null; + + public DAO(Context context){ + 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(); + Log.d("bdd", "Base de données ouverte"); + } else { + Log.d("bdd", "base de données accessible"); + } + return db; + } + + public void close() { + if(db != null){ + db.close(); + Log.d("bdd", "Base de données fermée"); + } + } +} diff --git a/DepannRien/app/src/main/java/bdd/InterventionDAO.java b/DepannRien/app/src/main/java/bdd/InterventionDAO.java new file mode 100644 index 0000000..24df72b --- /dev/null +++ b/DepannRien/app/src/main/java/bdd/InterventionDAO.java @@ -0,0 +1,73 @@ +package bdd; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.util.Log; + +import metier.Intervention; + +public class InterventionDAO { + private DAO dao = null; + private SQLiteDatabase db = null; + + /** + * Constructeur + * @param context + */ + + public InterventionDAO(Context context){ + dao = new DAO(context); + db = dao.open(); + } + + /** + * Fermeture de la base de données + */ + + public void close() { + dao.close(); + } + + public Cursor readLesInterventions() { + String reqSql = "Select id as '_id', date, heure, observation, idCli FROM " + CreateBdDepannTout.TABLE_INTER +";"; + // Execution de la requête + Cursor c = db.rawQuery(reqSql, null); + Log.d("bdd", "le curseur contient " + c.getCount() + " lignes"); + return c; + } + + public long create(Intervention i) { + ContentValues values = new ContentValues(); + values.put("date", i.getDate()); + values.put("heure", i.getHeure()); + values.put("idCli", i.getIdCli()); + values.put("observation", i.getObservation()); + Log.d("bdd", "insert, :" + i); + return db.insert(CreateBdDepannTout.TABLE_INTER, null, values); + } + + public boolean delete(int id) { + int result = db.delete(CreateBdDepannTout.TABLE_INTER, + "id = ?", + new String[]{String.valueOf(id)}); + db.close(); + return result > 0; + } + + public boolean update(int id, String date, String heure, String observation, int idCli) { + ContentValues values = new ContentValues(); + values.put("date", date); + values.put("heure", heure); + values.put("observation", observation); + values.put("idCli", idCli); + int result = db.update(CreateBdDepannTout.TABLE_INTER, + values, + "id = ?", + new String[]{String.valueOf(id)}); + db.close(); + return result > 0; + } + +} diff --git a/DepannRien/app/src/main/java/com/example/depanntout/CreateClient.java b/DepannRien/app/src/main/java/com/example/depanntout/CreateClient.java new file mode 100644 index 0000000..4c6fbce --- /dev/null +++ b/DepannRien/app/src/main/java/com/example/depanntout/CreateClient.java @@ -0,0 +1,91 @@ +package com.example.depanntout; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import bdd.ClientDAO; +import metier.Client; + +public class CreateClient extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_create_client); + initialisation(); + gererCreateClient(); + } + + private void initialisation() { + // gestion du boutton Quitter + Button btQuitterCreate = (Button) findViewById(R.id.btQuitterCreate); + // Association d'un écouteur d'événement au clic de btQuitter + btQuitterCreate.setOnClickListener(new View.OnClickListener() { + public void onClick(View arg0) { + clientDAO.close(); + finish(); + } + }); + } + + private ClientDAO clientDAO = null; + Client cli = null; + + // Contrôle graphiques + private EditText etNom; + private EditText etPrenom; + private EditText etNumTel; + private EditText etAdrMail; + private EditText etAdrPostale; + private Button btCreateClient; + + //Valeur saisies + String nom; + String prenom; + String numTel; + String adrMail; + String adrPostale; + + private void gererCreateClient() { + // Reconnaissance des contrôles graphiques de la vue + etNom = (EditText) findViewById(R.id.ptSasirNom); + etPrenom = (EditText) findViewById(R.id.ptSaisirPrenom); + etNumTel = (EditText) findViewById(R.id.ptSaisirNumTel); + etAdrMail = (EditText) findViewById(R.id.ptSaisirMailClient); + etAdrPostale = (EditText) findViewById(R.id.ptSaisirAdrClient); + btCreateClient = (Button) findViewById(R.id.btCreateClient); + // Accès à la table client + clientDAO = new ClientDAO(this); + // Gestion de l'événement onClick sur le boutn Ajouter + btCreateClient.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View arg0) { + // Récupération des zones saisies + nom = etNom.getText().toString(); + prenom = etPrenom.getText().toString(); + numTel = etNumTel.getText().toString(); + adrMail = etAdrMail.getText().toString(); + adrPostale = etAdrPostale.getText().toString(); + // Création de l'article correspondant + cli = new Client(nom, prenom, numTel, adrMail, adrPostale); + // Insertion de l'article dans la base de données + long idClientCree = clientDAO.create(cli); + // Message à l'écran + Toast.makeText(getApplicationContext(), "Produit ajouté + " + + "(no : " + idClientCree + " )", Toast.LENGTH_SHORT).show(); + // Zones de saisies effacées + etNom.setText(""); + etNom.requestFocus(); + etPrenom.setText(""); + etNumTel.setText(""); + etAdrMail.setText(""); + etAdrPostale.setText(""); + } + }); + } +} diff --git a/DepannRien/app/src/main/java/com/example/depanntout/CreateInter.java b/DepannRien/app/src/main/java/com/example/depanntout/CreateInter.java new file mode 100644 index 0000000..c2a8b23 --- /dev/null +++ b/DepannRien/app/src/main/java/com/example/depanntout/CreateInter.java @@ -0,0 +1,89 @@ +package com.example.depanntout; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import bdd.InterventionDAO; +import metier.Intervention; + +public class CreateInter extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_create_inter); + initialisation(); + gererCreateInter(); + } + + + + private void initialisation() { + // gestion du boutton Quitter + Button btQuitterCreate = (Button) findViewById(R.id.btQuitterCreate); + // Association d'un écouteur d'événement au clic de btQuitter + btQuitterCreate.setOnClickListener(new View.OnClickListener() { + public void onClick(View arg0) { + interventionDAO.close(); + finish(); + } + }); + } + private InterventionDAO interventionDAO = null; + Intervention inter = null; + + + // Contrôle graphiques + private EditText etDate; + private EditText etHeure; + private EditText etObs; + private EditText etIdCli; + private Button btCreateInter; + + //Valeur saisies + String date; + String heure; + String observation; + int idCli; + + private void gererCreateInter() { + // Reconnaissance des contrôles graphiques de la vue + etDate = (EditText) findViewById(R.id.ptSaisiDate); + etHeure = (EditText) findViewById(R.id.ptSaisiHeure); + etObs = (EditText) findViewById(R.id.ptSaisiObserv); + etIdCli = (EditText) findViewById(R.id.ptSaisiIdClient); + btCreateInter = (Button) findViewById(R.id.btCreateInter); + // Accès à la table article + interventionDAO = new InterventionDAO(this); + // Gestion de l'événement onClick sur le boutn Ajouter + btCreateInter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View arg0) { + // Récupération des zones saisies + date = etDate.getText().toString(); + heure = etHeure.getText().toString(); + observation = etObs.getText().toString(); + idCli = Integer.parseInt(etIdCli.getText().toString()); +// // Création de l'article correspondant + inter = new Intervention(date, heure, observation, idCli); +// // Insertion de l'article dans la base de données + long idInterCree = interventionDAO.create(inter); +// // Message à l'écran + Toast.makeText(getApplicationContext(), "Intervention ajoutée + " + + "(no : " + idInterCree + " )", Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), "Intervention ajoutée + " + + date + heure + observation + idCli + " )", Toast.LENGTH_SHORT).show(); +// // Zones de saisies effacées + etDate.setText(""); + etHeure.setText(""); + etObs.requestFocus(); + etIdCli.setText(""); + } + }); + } +} \ No newline at end of file diff --git a/DepannRien/app/src/main/java/com/example/depanntout/GestionClient.java b/DepannRien/app/src/main/java/com/example/depanntout/GestionClient.java new file mode 100644 index 0000000..45d54e2 --- /dev/null +++ b/DepannRien/app/src/main/java/com/example/depanntout/GestionClient.java @@ -0,0 +1,89 @@ +package com.example.depanntout; + +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.ListView; +import android.widget.SimpleCursorAdapter; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import bdd.ClientDAO; + +public class GestionClient extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_gestion_client); + initialisation(); + afficherLesClients(); + } + + private void initialisation() { + // gestion du boutton Quitter + Button btQuitterClient = (Button) findViewById(R.id.btQuitterInter); + // Association d'un écouteur d'événement au clic de btQuitter + btQuitterClient.setOnClickListener(new View.OnClickListener() { + public void onClick(View arg0) { + finish(); + } + }); + + // gestion du boutton Gestion des clients + Button btCreerClient = (Button) findViewById(R.id.btCreerInter); + btCreerClient.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + demarrerCreerClient(); + } + }); + } + + private void demarrerCreerClient(){ + Intent intent = new Intent(GestionClient.this, CreateClient.class); + startActivity(intent); + } + + public void afficherLesClients(){ + Log.d("bdd", "Début de afficherLesClients"); + ClientDAO clientDAO = new ClientDAO(this); + Cursor c = clientDAO.readLesClients(); + Toast.makeText(getApplicationContext(), "Il y a +" + + c.getCount() + "articles", Toast.LENGTH_SHORT).show(); + String[] from = new String[]{"_id", "nom", "prenom", "numTel", "adrMail", "adrPostale"}; + int[] to = new int[] {R.id.tvIdClient, R.id.tvNomClient, R.id.tvPrenomClient, R.id.tvNumTelClient, R.id.tvAdrMailClient, R.id.tvAdrPostClient}; + SimpleCursorAdapter dataAdapter = new SimpleCursorAdapter(this, R.layout.ligne_client, c, from, to, 0); + ListView lvClients = (ListView) findViewById(R.id.lvClients); + lvClients.setAdapter(dataAdapter); + + // Set an item click listener for the ListView + lvClients.setOnItemClickListener((parent, view, position, id) -> { + // Move the Cursor to the clicked item's position + c.moveToPosition(position); + + // Extract details from the cursor + int idCli = c.getInt(c.getColumnIndexOrThrow("_id")); + String prenom = c.getString(c.getColumnIndexOrThrow("prenom")); + String nom = c.getString(c.getColumnIndexOrThrow("nom")); + int numTel = c.getInt(c.getColumnIndexOrThrow("numTel")); + String adrMail = c.getString(c.getColumnIndexOrThrow("adrMail")); + String adrPostale = c.getString(c.getColumnIndexOrThrow("adrPostale")); + + + // Pass the details to the new activity using Intent + Intent intent = new Intent(this, ModifClient.class); + intent.putExtra("_id", idCli); + intent.putExtra("prenom", prenom); + intent.putExtra("nom", nom); + intent.putExtra("numTel", numTel); + intent.putExtra("adrMail", adrMail); + intent.putExtra("adrPostale", adrPostale); + startActivity(intent); + }); + } +} \ No newline at end of file diff --git a/DepannRien/app/src/main/java/com/example/depanntout/GestionInter.java b/DepannRien/app/src/main/java/com/example/depanntout/GestionInter.java new file mode 100644 index 0000000..6a60d90 --- /dev/null +++ b/DepannRien/app/src/main/java/com/example/depanntout/GestionInter.java @@ -0,0 +1,88 @@ +package com.example.depanntout; + +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.ListView; +import android.widget.SimpleCursorAdapter; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import bdd.InterventionDAO; + +public class GestionInter extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_gestion_inter); + initialisation(); + afficherLesInterventions(); + } + + private void initialisation() { + // gestion du boutton Quitter + Button btQuitterInter = (Button) findViewById(R.id.btQuitterInter); + // Association d'un écouteur d'événement au clic de btQuitter + btQuitterInter.setOnClickListener(new View.OnClickListener() { + public void onClick(View arg0) { + finish(); + } + }); + + // gestion du boutton Gestion des interventions + Button btCreateInter = (Button) findViewById(R.id.btCreerInter); + btCreateInter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + demarrerCreerInter(); + } + }); + } + + private void demarrerCreerInter(){ + Intent intent = new Intent(GestionInter.this, CreateInter.class); + startActivity(intent); + } + + public void afficherLesInterventions(){ + Log.d("bdd", "Début de afficherLesInterventions"); + InterventionDAO clientDAO = new InterventionDAO(this); + Cursor c = clientDAO.readLesInterventions(); + Toast.makeText(getApplicationContext(), "Il y a +" + + c.getCount() + "interventions", Toast.LENGTH_SHORT).show(); + String[] from = new String[]{"date", "heure", "observation", "idCli"}; + int[] to = new int[] {R.id.tvDateLigne, R.id.tvHeureLigne, R.id.tvObsLigne, R.id.tvIdClientInterLigne}; + SimpleCursorAdapter dataAdapter = new SimpleCursorAdapter(this, R.layout.ligne_intervention, c, from, to, 0); + ListView lvInterventions = (ListView) findViewById(R.id.lvClients); + lvInterventions.setAdapter(dataAdapter); + + // Set an item click listener for the ListView + lvInterventions.setOnItemClickListener((parent, view, position, id) -> { + // Move the Cursor to the clicked item's position + c.moveToPosition(position); + + // Extract details from the cursor + int idInter = c.getInt(c.getColumnIndexOrThrow("_id")); + String date = c.getString(c.getColumnIndexOrThrow("date")); + String heure = c.getString(c.getColumnIndexOrThrow("heure")); + String observation = c.getString(c.getColumnIndexOrThrow("observation")); + int idCli = c.getInt(c.getColumnIndexOrThrow("idCli")); + + // Pass the details to the new activity using Intent + Intent intent = new Intent(this, ModifInter.class); + intent.putExtra("_id", idInter); + intent.putExtra("date", date); + intent.putExtra("heure", heure); + intent.putExtra("observation", observation); + intent.putExtra("idCli", idCli); + startActivity(intent); + }); + } + + +} \ No newline at end of file diff --git a/DepannRien/app/src/main/java/com/example/depanntout/MainActivity.java b/DepannRien/app/src/main/java/com/example/depanntout/MainActivity.java new file mode 100644 index 0000000..2d33de0 --- /dev/null +++ b/DepannRien/app/src/main/java/com/example/depanntout/MainActivity.java @@ -0,0 +1,74 @@ +package com.example.depanntout; + +import android.content.Intent; +import android.database.sqlite.SQLiteDatabase; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; + +import androidx.appcompat.app.AppCompatActivity; + +import bdd.CreateBdDepannTout; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + initialisation(); + + // Create an instance of your database helper + CreateBdDepannTout dbHelper = new CreateBdDepannTout(this, "DepannTout.db", null, 1); + + // Open the database in writable mode + SQLiteDatabase db = dbHelper.getWritableDatabase(); + + // Call the insertData function to populate your table +// dbHelper.insertDataInter(db); +// Log.d("MainActivity", "Data inserted into the intervention table"); +// +// dbHelper.insertClientData(db); +// Log.d("MainActivity", "Data inserted into the client table"); + } + + private void initialisation() { + // gestion du boutton Quitter + Button btQuitter = (Button) findViewById(R.id.btQuitter); + // Association d'un écouteur d'événement au clic de btQuitter + btQuitter.setOnClickListener(new View.OnClickListener(){ + public void onClick(View arg0){ + finish(); + } + }); + + // gestion du boutton Gestion des clients + Button btGestClient = (Button) findViewById(R.id.btGestClient); + btGestClient.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + demarrerClient(); + } + }); + + // gestion du boutton Gestion des Interventions + Button btGestInter = (Button) findViewById(R.id.btGestInter); + btGestInter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + demarrerInter(); + } + }); + } + + private void demarrerClient(){ + Intent intent = new Intent(MainActivity.this, GestionClient.class); + startActivity(intent); + } + + private void demarrerInter() { + Intent intent = new Intent(MainActivity.this, GestionInter.class); + startActivity(intent); + } +} \ No newline at end of file diff --git a/DepannRien/app/src/main/java/com/example/depanntout/ModifClient.java b/DepannRien/app/src/main/java/com/example/depanntout/ModifClient.java new file mode 100644 index 0000000..e0176d7 --- /dev/null +++ b/DepannRien/app/src/main/java/com/example/depanntout/ModifClient.java @@ -0,0 +1,109 @@ +package com.example.depanntout; + +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import bdd.ClientDAO; +import metier.Client; + +public class ModifClient extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_modif_client); + initialisation(); + } + + private void initialisation() { + + String prenom = getIntent().getStringExtra("prenom"); + String nom = getIntent().getStringExtra("nom"); + int numTel = getIntent().getIntExtra("numTel", -1); + String adrMail = getIntent().getStringExtra("adrMail"); + String adrPostale = getIntent().getStringExtra("adrPostale"); + idCli = getIntent().getIntExtra("_id", -1); + + EditText etPrenom = findViewById(R.id.ptModifPrenom); + EditText etNom = findViewById(R.id.ptModifNom); + EditText etNumTel = findViewById(R.id.ptModifNumTel); + EditText etAdrMail = findViewById(R.id.ptModifAdrMail); + EditText etAdrPostale = findViewById(R.id.ptModifAdrPostale); + + etPrenom.setText(prenom); + etNom.setText(nom); + etNumTel.setText(numTel != -1 ? String.valueOf(numTel) : ""); + etAdrMail.setText(adrMail); + etAdrPostale.setText(adrPostale); + + Button btnDeleteClient = findViewById(R.id.btnDeleteClient); + Button btnModifClient = findViewById(R.id.btnModifClient); + + // Accès à la table client + clientDAO = new ClientDAO(this); + + // Gestion de l'événement onClick sur le boutn Ajouter + btnDeleteClient.setOnClickListener(v -> { + boolean isDeleted = clientDAO.delete(idCli); + if (isDeleted) { + Toast.makeText(this, "Client deleted successfully", Toast.LENGTH_SHORT).show(); + finish(); + } else { + Toast.makeText(this, "Delete failed", Toast.LENGTH_SHORT).show(); + } + }); + + btnModifClient.setOnClickListener(v -> { + + String prenomModif = etPrenom.getText().toString(); + String nomModif = etNom.getText().toString(); + int numTelModif = Integer.parseInt(etNumTel.getText().toString()); + String adrMailModif = etAdrMail.getText().toString(); + String adrPostaleModif = etAdrPostale.getText().toString(); + + Log.d("UpdateDebug", idCli + nomModif + prenomModif + numTelModif + adrMailModif + adrPostaleModif); + boolean isUpdated = clientDAO.update(idCli, nomModif, prenomModif, numTelModif, adrMailModif, adrPostaleModif); + if (isUpdated) { + Toast.makeText(this, "Client updated successfully", Toast.LENGTH_SHORT).show(); + finish(); + } else { + Toast.makeText(this, "Update failed", Toast.LENGTH_SHORT).show(); + } + }); + + // gestion du boutton Quitter + Button btQuitterInter = (Button) findViewById(R.id.btQuitterClient); + // Association d'un écouteur d'événement au clic de btQuitter + btQuitterInter.setOnClickListener(new View.OnClickListener() { + public void onClick(View arg0) { + finish(); + } + }); + } + + private ClientDAO clientDAO = null; + Client cli = null; + + // Contrôle graphiques + private EditText etNom; + private EditText etPrenom; + private EditText etNumTel; + private EditText etAdrMail; + private EditText etAdrPostale; + private Button btnDeleteClient; + + //Valeur saisies + Integer idCli; + String nom; + String prenom; + Integer numTel; + String adrMail; + String adrPostale; +} diff --git a/DepannRien/app/src/main/java/com/example/depanntout/ModifInter.java b/DepannRien/app/src/main/java/com/example/depanntout/ModifInter.java new file mode 100644 index 0000000..119f523 --- /dev/null +++ b/DepannRien/app/src/main/java/com/example/depanntout/ModifInter.java @@ -0,0 +1,89 @@ +package com.example.depanntout; + +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import bdd.InterventionDAO; +import metier.Intervention; + +public class ModifInter extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_modif_inter); + + initialisation(); + } + + private void initialisation() { + + // Get data from Intent + String date = getIntent().getStringExtra("date"); + String heure = getIntent().getStringExtra("heure"); + String observation = getIntent().getStringExtra("observation"); + int idCli = getIntent().getIntExtra("idCli", -1); + int idInter = getIntent().getIntExtra("_id", -1); + + // Reference TextViews + TextView etDate = findViewById(R.id.ptModifDate); + TextView etHeure = findViewById(R.id.ptModifHeure); + TextView etObservation = findViewById(R.id.ptModifObserv); + TextView etIdCli = findViewById(R.id.ptModifIdClient); + + // Set data in TextViews + etDate.setText(date); + etHeure.setText(heure); + etObservation.setText(observation); + etIdCli.setText(String.valueOf(idCli)); + + // gestion du boutton Quitter + Button btQuitterInter = (Button) findViewById(R.id.btQuitterInter); + // Association d'un écouteur d'événement au clic de btQuitter + btQuitterInter.setOnClickListener(new View.OnClickListener() { + public void onClick(View arg0) { + finish(); + } + }); + + Button btnDeleteInter = findViewById(R.id.btnDeleteInter); + Button btnModifInter = findViewById(R.id.btnModifInter); + + // Accès à la table intervention + InterventionDAO interventionDAO = new InterventionDAO(this); + + // Gestion de l'événement onClick sur le boutn Ajouter + btnDeleteInter.setOnClickListener(v -> { + boolean isDeleted = interventionDAO.delete(idCli); + if (isDeleted) { + Toast.makeText(this, "Client deleted successfully", Toast.LENGTH_SHORT).show(); + finish(); + } else { + Toast.makeText(this, "Delete failed", Toast.LENGTH_SHORT).show(); + } + }); + + btnModifInter.setOnClickListener(v -> { + + String dateModif = etDate.getText().toString(); + String heureModif = etHeure.getText().toString(); + String obsModif = etObservation.getText().toString(); + int idCliModif = Integer.parseInt(etIdCli.getText().toString()); + + boolean isUpdated = interventionDAO.update(idInter, dateModif, heureModif, obsModif, idCliModif); + if (isUpdated) { + Toast.makeText(this, "Client updated successfully", Toast.LENGTH_SHORT).show(); + finish(); + } else { + Toast.makeText(this, "Update failed", Toast.LENGTH_SHORT).show(); + } + }); + } + +} diff --git a/DepannRien/app/src/main/java/metier/Client.java b/DepannRien/app/src/main/java/metier/Client.java new file mode 100644 index 0000000..85e0fe3 --- /dev/null +++ b/DepannRien/app/src/main/java/metier/Client.java @@ -0,0 +1,63 @@ +package metier; + +public class Client { + private int id = 0; + private String nom; + private String prenom; + private String numTel; + private String adrMail; + private String adrPostale; + + public int getId() { + return id; + } + + public String getNom() { + return nom; + } + + public String getPrenom() { + return prenom; + } + + public String getNumTel() { + return numTel; + } + + public String getAdrMail() { + return adrMail; + } + + public String getAdrPostale() { + return adrPostale; + } + + @Override + public String toString() { + return "Client{" + + "id=" + id + + ", nom='" + nom + '\'' + + ", prenom='" + prenom + '\'' + + ", numTel='" + numTel + '\'' + + ", adrMail='" + adrMail + '\'' + + ", adrPostale='" + adrPostale + '\'' + + '}'; + } + + public Client(int id, String nom, String prenom, String numTel, String adrMail, String adrPostale) { + this.id = id; + this.nom = nom; + this.prenom = prenom; + this.numTel = numTel; + this.adrMail = adrMail; + this.adrPostale = adrPostale; + } + + public Client(String nom, String prenom, String numTel, String adrMail, String adrPostale) { + this.nom = nom; + this.prenom = prenom; + this.numTel = numTel; + this.adrMail = adrMail; + this.adrPostale = adrPostale; + } +} diff --git a/DepannRien/app/src/main/java/metier/Intervention.java b/DepannRien/app/src/main/java/metier/Intervention.java new file mode 100644 index 0000000..52f2191 --- /dev/null +++ b/DepannRien/app/src/main/java/metier/Intervention.java @@ -0,0 +1,71 @@ +package metier; + +import java.util.Date; +import java.util.Timer; + +public class Intervention { + private int id; + private String date; + private String heure; + private String observation; + private int idCli; + + public Intervention(String date, String heure, String observation, int idCli) { + this.date = date; + this.heure = heure; + this.observation = observation; + this.idCli = idCli; + } + + @Override + public String toString() { + return "Intervention{" + + "id=" + id + + "id=" + id + + ", date='" + date + '\'' + + ", heure='" + heure + '\'' + + ", observation='" + observation + '\'' + + ", idCli=" + idCli + + '}'; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public String getHeure() { + return heure; + } + + public void setHeure(String heure) { + this.heure = heure; + } + + public String getObservation() { + return observation; + } + + public void setObservation(String observation) { + this.observation = observation; + } + + public int getIdCli() { + return idCli; + } + + public void setIdCli(int idCli) { + this.idCli = idCli; + } +} diff --git a/DepannRien/app/src/main/res/drawable/ic_launcher_background.xml b/DepannRien/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/DepannRien/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DepannRien/app/src/main/res/drawable/ic_launcher_foreground.xml b/DepannRien/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/DepannRien/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/DepannRien/app/src/main/res/drawable/logodepann.png b/DepannRien/app/src/main/res/drawable/logodepann.png new file mode 100644 index 0000000..af51276 Binary files /dev/null and b/DepannRien/app/src/main/res/drawable/logodepann.png differ diff --git a/DepannRien/app/src/main/res/layout/activity_create_client.xml b/DepannRien/app/src/main/res/layout/activity_create_client.xml new file mode 100644 index 0000000..2f906ed --- /dev/null +++ b/DepannRien/app/src/main/res/layout/activity_create_client.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +