feat: seconde partie faite
This commit is contained in:
parent
ed84be2a46
commit
02fb881274
@ -36,7 +36,6 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
implementation(libs.androidx.core.ktx)
|
implementation(libs.androidx.core.ktx)
|
||||||
implementation(libs.androidx.appcompat)
|
implementation(libs.androidx.appcompat)
|
||||||
implementation(libs.material)
|
implementation(libs.material)
|
||||||
@ -45,4 +44,5 @@ dependencies {
|
|||||||
testImplementation(libs.junit)
|
testImplementation(libs.junit)
|
||||||
androidTestImplementation(libs.androidx.junit)
|
androidTestImplementation(libs.androidx.junit)
|
||||||
androidTestImplementation(libs.androidx.espresso.core)
|
androidTestImplementation(libs.androidx.espresso.core)
|
||||||
|
implementation("com.android.volley:volley:1.2.1")
|
||||||
}
|
}
|
@ -2,6 +2,9 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
@ -11,7 +14,9 @@
|
|||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.DepannTout"
|
android:theme="@style/Theme.DepannTout"
|
||||||
tools:targetApi="31">
|
tools:targetApi="31"
|
||||||
|
android:usesCleartextTraffic="true"
|
||||||
|
>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ClientDetails"
|
android:name=".ClientDetails"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
@ -7,6 +7,9 @@ import androidx.activity.enableEdgeToEdge
|
|||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import com.android.volley.toolbox.JsonObjectRequest
|
||||||
|
import com.android.volley.toolbox.Volley
|
||||||
|
import org.json.JSONObject
|
||||||
|
|
||||||
class Home : AppCompatActivity() {
|
class Home : AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -30,5 +33,32 @@ class Home : AppCompatActivity() {
|
|||||||
val intent = Intent(this, ListeInterventions::class.java)
|
val intent = Intent(this, ListeInterventions::class.java)
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val buttonImport = findViewById<Button>(R.id.btnImport)
|
||||||
|
buttonImport.setOnClickListener() {
|
||||||
|
val queue = Volley.newRequestQueue(this)
|
||||||
|
val url = "http://192.168.48.185:8000/intervention"
|
||||||
|
val jsonObjectRequest = object : JsonObjectRequest(
|
||||||
|
Method.POST, url, null,
|
||||||
|
{ },
|
||||||
|
{ }) {
|
||||||
|
|
||||||
|
override fun getHeaders(): Map<String, String> {
|
||||||
|
val headers = HashMap<String, String>()
|
||||||
|
headers["Content-Type"] = "application/json"
|
||||||
|
return headers
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getBody(): ByteArray {
|
||||||
|
val jsonObject = JSONObject()
|
||||||
|
jsonObject.put("date", "2022-01-05")
|
||||||
|
jsonObject.put("observation", "Ceci est un test")
|
||||||
|
jsonObject.put("idClient", 1)
|
||||||
|
return jsonObject.toString().toByteArray()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
queue.add(jsonObjectRequest)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
86
app/src/main/java/com/example/depanntout/Importation.kt
Normal file
86
app/src/main/java/com/example/depanntout/Importation.kt
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
package com.example.depanntout
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.Log
|
||||||
|
import android.widget.Toast
|
||||||
|
import com.android.volley.Request
|
||||||
|
import com.android.volley.Response
|
||||||
|
import com.android.volley.toolbox.JsonArrayRequest
|
||||||
|
import com.android.volley.toolbox.JsonObjectRequest
|
||||||
|
import com.android.volley.toolbox.Volley
|
||||||
|
import com.example.depanntout.bdd.Intervention
|
||||||
|
import org.json.JSONArray
|
||||||
|
|
||||||
|
class Importation {
|
||||||
|
fun importInterventionsFromServer(context: Context, callback: (List<Intervention>) -> Unit) {
|
||||||
|
val url = "http://192.168.48.185:8000/interventions"
|
||||||
|
val queue = Volley.newRequestQueue(context)
|
||||||
|
|
||||||
|
val interventionsList = mutableListOf<Intervention>()
|
||||||
|
|
||||||
|
val jsonObjectRequest = JsonArrayRequest(
|
||||||
|
Request.Method.GET,
|
||||||
|
url,
|
||||||
|
null,
|
||||||
|
{ response ->
|
||||||
|
val interventionsArray = response as JSONArray
|
||||||
|
for (i in 0 until interventionsArray.length()) {
|
||||||
|
val interventionJson = interventionsArray.getJSONObject(i)
|
||||||
|
val intervention = Intervention(
|
||||||
|
idIntervention = interventionJson.getInt("idIntervention"),
|
||||||
|
datetime = interventionJson.getString("date"),
|
||||||
|
observation = interventionJson.getString("observation"),
|
||||||
|
idClient = interventionJson.getInt("idClient")
|
||||||
|
)
|
||||||
|
interventionsList.add(intervention)
|
||||||
|
}
|
||||||
|
Toast.makeText(context, "Server response: ${interventionsList.size} interventions loaded", Toast.LENGTH_LONG).show()
|
||||||
|
|
||||||
|
callback(interventionsList)
|
||||||
|
},
|
||||||
|
{ error ->
|
||||||
|
Toast.makeText(context, "Server error: ${error.message}", Toast.LENGTH_SHORT).show()
|
||||||
|
callback(emptyList())
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
queue.add(jsonObjectRequest)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun importClientsFromServer(context: Context, callback: (List<Client>) -> Unit) {
|
||||||
|
val url = "http://192.168.48.185:8000/clients"
|
||||||
|
val queue = Volley.newRequestQueue(context)
|
||||||
|
|
||||||
|
val clientsList = mutableListOf<Client>()
|
||||||
|
|
||||||
|
val jsonObjectRequest = JsonArrayRequest(
|
||||||
|
Request.Method.GET,
|
||||||
|
url,
|
||||||
|
null,
|
||||||
|
{ response ->
|
||||||
|
val clientsArray = response as JSONArray
|
||||||
|
for (i in 0 until clientsArray.length()) {
|
||||||
|
val clientJson = clientsArray.getJSONObject(i)
|
||||||
|
val client = Client(
|
||||||
|
idClient = clientJson.getInt("idClient"),
|
||||||
|
fistname = clientJson.getString("nom"),
|
||||||
|
lastname = clientJson.getString("prenom"),
|
||||||
|
email = clientJson.getString("email"),
|
||||||
|
tel = clientJson.getString("telephone"),
|
||||||
|
adresse = clientJson.getString("adresse"),
|
||||||
|
)
|
||||||
|
clientsList.add(client)
|
||||||
|
}
|
||||||
|
Toast.makeText(context, "Server response: ${clientsList.size} clients loaded", Toast.LENGTH_LONG).show()
|
||||||
|
|
||||||
|
callback(clientsList)
|
||||||
|
},
|
||||||
|
{ error ->
|
||||||
|
Toast.makeText(context, "Server error: ${error.message}", Toast.LENGTH_SHORT).show()
|
||||||
|
callback(emptyList())
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
queue.add(jsonObjectRequest)
|
||||||
|
}
|
||||||
|
}
|
@ -52,11 +52,24 @@ class ListeClients : AppCompatActivity() {
|
|||||||
val createBdDepannTout: CreateBdDepannTout = CreateBdDepannTout(this)
|
val createBdDepannTout: CreateBdDepannTout = CreateBdDepannTout(this)
|
||||||
val dao: DAO = DAO(this, createBdDepannTout)
|
val dao: DAO = DAO(this, createBdDepannTout)
|
||||||
val clientDAO : ClientDAO = ClientDAO(dao)
|
val clientDAO : ClientDAO = ClientDAO(dao)
|
||||||
val clients: List<Client> = clientDAO.getClients()
|
var clients: List<Client> = clientDAO.getClients()
|
||||||
|
|
||||||
Log.d("bdd", clients.toString())
|
|
||||||
|
|
||||||
val adapter = clientAdapter(clients, this)
|
val adapter = clientAdapter(clients, this)
|
||||||
recyclerView.adapter = adapter
|
recyclerView.adapter = adapter
|
||||||
|
|
||||||
|
val buttonImport = findViewById<Button>(R.id.btnImport)
|
||||||
|
buttonImport.setOnClickListener() {
|
||||||
|
Importation().importClientsFromServer(this) { clientsServer ->
|
||||||
|
if (clientsServer.isNotEmpty()) {
|
||||||
|
for (client: Client in clientsServer) {
|
||||||
|
clientDAO.createClient(client)
|
||||||
|
Log.d("Client server importer :", client.fistname + " " + client.lastname)
|
||||||
|
}
|
||||||
|
clients = clients.plus(clientsServer)
|
||||||
|
}
|
||||||
|
val adapter = clientAdapter(clients, this)
|
||||||
|
recyclerView.adapter = adapter
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -44,11 +44,24 @@ class ListeInterventions : AppCompatActivity() {
|
|||||||
val createBdDepannTout: CreateBdDepannTout = CreateBdDepannTout(this)
|
val createBdDepannTout: CreateBdDepannTout = CreateBdDepannTout(this)
|
||||||
val dao: DAO = DAO(this, createBdDepannTout)
|
val dao: DAO = DAO(this, createBdDepannTout)
|
||||||
val interventionDAO : InterventionDAO = InterventionDAO(dao)
|
val interventionDAO : InterventionDAO = InterventionDAO(dao)
|
||||||
val interventions: List<Intervention> = interventionDAO.getInterventions()
|
var interventions: List<Intervention> = interventionDAO.getInterventions()
|
||||||
|
|
||||||
Log.d("bdd", interventions.toString())
|
|
||||||
|
|
||||||
val adapter = interventionAdapter(interventions, this)
|
val adapter = interventionAdapter(interventions, this)
|
||||||
recyclerView.adapter = adapter
|
recyclerView.adapter = adapter
|
||||||
|
|
||||||
|
val buttonImport = findViewById<Button>(R.id.btnImport)
|
||||||
|
buttonImport.setOnClickListener() {
|
||||||
|
Importation().importInterventionsFromServer(this) { interventionsServer ->
|
||||||
|
if (interventionsServer.isNotEmpty()) {
|
||||||
|
for (intervention: Intervention in interventionsServer) {
|
||||||
|
interventionDAO.createIntervention(intervention)
|
||||||
|
Log.d("Intervention server importer :", intervention.idIntervention.toString())
|
||||||
|
}
|
||||||
|
interventions = interventions.plus(interventionsServer)
|
||||||
|
}
|
||||||
|
val adapter = interventionAdapter(interventions, this)
|
||||||
|
recyclerView.adapter = adapter
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,8 @@
|
|||||||
package com.example.depanntout.bdd
|
package com.example.depanntout.bdd
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import com.android.volley.toolbox.StringRequest
|
||||||
|
import com.android.volley.toolbox.Volley
|
||||||
import com.example.depanntout.Client
|
import com.example.depanntout.Client
|
||||||
|
|
||||||
data class Intervention(
|
data class Intervention(
|
||||||
|
@ -9,9 +9,12 @@ import androidx.activity.enableEdgeToEdge
|
|||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import com.android.volley.toolbox.JsonObjectRequest
|
||||||
|
import com.android.volley.toolbox.Volley
|
||||||
import com.example.depanntout.bdd.ClientDAO
|
import com.example.depanntout.bdd.ClientDAO
|
||||||
import com.example.depanntout.bdd.CreateBdDepannTout
|
import com.example.depanntout.bdd.CreateBdDepannTout
|
||||||
import com.example.depanntout.bdd.DAO
|
import com.example.depanntout.bdd.DAO
|
||||||
|
import org.json.JSONObject
|
||||||
|
|
||||||
class createClient : AppCompatActivity() {
|
class createClient : AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -45,6 +48,32 @@ class createClient : AppCompatActivity() {
|
|||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
Toast.makeText(this, "Client ajouter", Toast.LENGTH_SHORT).show()
|
Toast.makeText(this, "Client ajouter", Toast.LENGTH_SHORT).show()
|
||||||
finish()
|
finish()
|
||||||
|
|
||||||
|
val queue = Volley.newRequestQueue(this)
|
||||||
|
val url = "http://192.168.48.185:8000/client"
|
||||||
|
val jsonObjectRequest = object : JsonObjectRequest(
|
||||||
|
Method.POST, url, null,
|
||||||
|
{ },
|
||||||
|
{ }) {
|
||||||
|
|
||||||
|
override fun getHeaders(): Map<String, String> {
|
||||||
|
val headers = HashMap<String, String>()
|
||||||
|
headers["Content-Type"] = "application/json"
|
||||||
|
return headers
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getBody(): ByteArray {
|
||||||
|
val jsonObject = JSONObject()
|
||||||
|
jsonObject.put("prenom", newClient.fistname)
|
||||||
|
jsonObject.put("nom", newClient.lastname)
|
||||||
|
jsonObject.put("email", newClient.email)
|
||||||
|
jsonObject.put("telephone", newClient.tel)
|
||||||
|
jsonObject.put("adresse", newClient.adresse)
|
||||||
|
return jsonObject.toString().toByteArray()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
queue.add(jsonObjectRequest)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,11 +9,16 @@ import androidx.activity.enableEdgeToEdge
|
|||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import com.android.volley.toolbox.JsonObjectRequest
|
||||||
|
import com.android.volley.toolbox.StringRequest
|
||||||
|
import com.android.volley.toolbox.Volley
|
||||||
import com.example.depanntout.bdd.ClientDAO
|
import com.example.depanntout.bdd.ClientDAO
|
||||||
import com.example.depanntout.bdd.CreateBdDepannTout
|
import com.example.depanntout.bdd.CreateBdDepannTout
|
||||||
import com.example.depanntout.bdd.DAO
|
import com.example.depanntout.bdd.DAO
|
||||||
import com.example.depanntout.bdd.Intervention
|
import com.example.depanntout.bdd.Intervention
|
||||||
import com.example.depanntout.bdd.InterventionDAO
|
import com.example.depanntout.bdd.InterventionDAO
|
||||||
|
import org.json.JSONObject
|
||||||
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
class createIntervention: AppCompatActivity() {
|
class createIntervention: AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -45,6 +50,30 @@ class createIntervention: AppCompatActivity() {
|
|||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
Toast.makeText(this, "Intervention ajouter", Toast.LENGTH_SHORT).show()
|
Toast.makeText(this, "Intervention ajouter", Toast.LENGTH_SHORT).show()
|
||||||
finish()
|
finish()
|
||||||
|
|
||||||
|
val queue = Volley.newRequestQueue(this)
|
||||||
|
val url = "http://192.168.48.185:8000/intervention"
|
||||||
|
val jsonObjectRequest = object : JsonObjectRequest(
|
||||||
|
Method.POST, url, null,
|
||||||
|
{ },
|
||||||
|
{ }) {
|
||||||
|
|
||||||
|
override fun getHeaders(): Map<String, String> {
|
||||||
|
val headers = HashMap<String, String>()
|
||||||
|
headers["Content-Type"] = "application/json"
|
||||||
|
return headers
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getBody(): ByteArray {
|
||||||
|
val jsonObject = JSONObject()
|
||||||
|
jsonObject.put("date", newIntervention.datetime)
|
||||||
|
jsonObject.put("observation", newIntervention.observation)
|
||||||
|
jsonObject.put("idClient", newIntervention.idClient)
|
||||||
|
return jsonObject.toString().toByteArray()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
queue.add(jsonObjectRequest)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -36,4 +36,14 @@
|
|||||||
android:textSize="30dp"
|
android:textSize="30dp"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnImport"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="152dp"
|
||||||
|
android:layout_marginTop="380dp"
|
||||||
|
android:text="Importer"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -20,7 +20,7 @@
|
|||||||
android:id="@+id/btnQuit"
|
android:id="@+id/btnQuit"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="206dp"
|
android:layout_marginStart="112dp"
|
||||||
android:layout_marginTop="680dp"
|
android:layout_marginTop="680dp"
|
||||||
android:text="Quitter"
|
android:text="Quitter"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
@ -46,4 +46,14 @@
|
|||||||
android:textSize="20dp"
|
android:textSize="20dp"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnImport"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="204dp"
|
||||||
|
android:layout_marginTop="680dp"
|
||||||
|
android:text="Importer"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -20,7 +20,7 @@
|
|||||||
android:id="@+id/btnQuit"
|
android:id="@+id/btnQuit"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="206dp"
|
android:layout_marginStart="108dp"
|
||||||
android:layout_marginTop="680dp"
|
android:layout_marginTop="680dp"
|
||||||
android:text="Quitter"
|
android:text="Quitter"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
@ -46,4 +46,14 @@
|
|||||||
android:textSize="20dp"
|
android:textSize="20dp"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnImport"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="204dp"
|
||||||
|
android:layout_marginTop="680dp"
|
||||||
|
android:text="Importer"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
x
Reference in New Issue
Block a user