diff --git a/Android/app/src/main/java/com/example/mathseduc/ConnexionPlayerActivity.kt b/Android/app/src/main/java/com/example/mathseduc/ConnexionPlayerActivity.kt index 72907b9..f6a4d91 100644 --- a/Android/app/src/main/java/com/example/mathseduc/ConnexionPlayerActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/ConnexionPlayerActivity.kt @@ -25,7 +25,7 @@ class ConnexionPlayerActivity : AppCompatActivity() { val isAuthenticated = ControllerPlayer.authenticateUser(nickname,password) if (isAuthenticated != -1) { // Save authentication status for global accessibility - val intent = Intent(this, ServerDetailsActivity::class.java) + val intent = Intent(this, MainActivity::class.java) startActivity(intent) MainActivity.idPlayerConnected = isAuthenticated diff --git a/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt b/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt index 0299161..9aa09f1 100644 --- a/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt @@ -6,6 +6,7 @@ import android.widget.* import androidx.appcompat.app.AppCompatActivity import com.example.mathseduc.controllers.ControllerChapter import com.example.mathseduc.controllers.ControllerLobby +import com.example.mathseduc.controllers.ControllerUtiliser import okhttp3.MultipartBody import org.json.JSONObject @@ -51,16 +52,25 @@ class CreateLobbyActivity : AppCompatActivity() { formDataBuilder.addFormDataPart("name", lobbyName) formDataBuilder.addFormDataPart("password", password) formDataBuilder.addFormDataPart("nbplayers", nbPlayers.toString()) - formDataBuilder.addFormDataPart("idplayercreator", "53") + formDataBuilder.addFormDataPart("idplayercreator", MainActivity.idPlayerConnected.toString()) formDataBuilder.addFormDataPart("idchapter", idChapter.toString()) formDataBuilder.addFormDataPart("difficulty", difficulty.toString()) // Appeler la fonction pour créer le lobby - val lobbyCreatedSuccessfully = ControllerLobby.createLobby(formDataBuilder) + val idLobbyCreatedSuccessfully = ControllerLobby.createLobby(formDataBuilder) // Vérifier si la création du lobby a réussi - if (lobbyCreatedSuccessfully) { + if (idLobbyCreatedSuccessfully != -1) { val intent = Intent(this, ServerDetailsActivity::class.java) + intent.putExtra("serverName", lobbyName) + intent.putExtra("lobbyId", idLobbyCreatedSuccessfully.toString()) + + val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM) + formDataBuilder.addFormDataPart("idplayer", MainActivity.idPlayerConnected.toString()) + formDataBuilder.addFormDataPart("idlobby", idLobbyCreatedSuccessfully.toString()) + formDataBuilder.addFormDataPart("playertime", "0") + + ControllerUtiliser.createUtiliserByIdLobby(formDataBuilder) startActivity(intent) } else { Toast.makeText(this, "Échec de la création du lobby. Veuillez réessayer.", Toast.LENGTH_SHORT).show() diff --git a/Android/app/src/main/java/com/example/mathseduc/MultiActivity.kt b/Android/app/src/main/java/com/example/mathseduc/MultiActivity.kt index bf37e1f..21a9dec 100644 --- a/Android/app/src/main/java/com/example/mathseduc/MultiActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/MultiActivity.kt @@ -13,7 +13,9 @@ import android.widget.ListView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import com.example.mathseduc.controllers.ControllerLobby +import com.example.mathseduc.controllers.ControllerUtiliser import com.example.mathseduc.models.Lobby +import okhttp3.MultipartBody class MultiActivity : AppCompatActivity() { @@ -36,6 +38,13 @@ class MultiActivity : AppCompatActivity() { val intent = Intent(this, ServerDetailsActivity::class.java) intent.putExtra("serverName", serverList[position].name) intent.putExtra("lobbyId", serverList[position].id) + + val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM) + formDataBuilder.addFormDataPart("idplayer", MainActivity.idPlayerConnected.toString()) + formDataBuilder.addFormDataPart("idlobby", serverList[position].id.toString()) + formDataBuilder.addFormDataPart("playertime", "0") + + ControllerUtiliser.createUtiliserByIdLobby(formDataBuilder) startActivity(intent) } } else { diff --git a/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerLobby.kt b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerLobby.kt index d76ba0b..76d1fd6 100644 --- a/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerLobby.kt +++ b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerLobby.kt @@ -5,11 +5,10 @@ import android.util.Log import com.example.mathseduc.models.Lobby import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import okhttp3.MediaType.Companion.toMediaType import okhttp3.MultipartBody import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject import java.io.IOException @@ -25,7 +24,7 @@ class ControllerLobby { // API Access val request = Request.Builder() - .url("https://trusting-panini.87-106-126-109.plesk.page/api/all/lobbies/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO/1") + .url("https://trusting-panini.87-106-126-109.plesk.page/api/all/lobbies/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") .build() // API Response @@ -41,11 +40,8 @@ class ControllerLobby { return null } - fun createLobby(lobbyData: MultipartBody.Builder): Boolean { + fun createLobby(lobbyData: MultipartBody.Builder): Int { try { - // Log avant l'appel API - Log.d("CreateLobby", "Request Data: ${lobbyData.toString()}") - val policy = StrictMode.ThreadPolicy.Builder().permitAll().build() StrictMode.setThreadPolicy(policy) @@ -60,19 +56,20 @@ class ControllerLobby { // API Response client.newCall(request).execute().use { response -> - // Log après la réponse API - Log.d("CreateLobby", "Response Code: ${response.code}") - Log.d("CreateLobby", "Response Body: ${response.body?.string()}") - - // Vérifier si la création du lobby a réussi - return response.isSuccessful + if (response.isSuccessful) { + // Si la réponse est réussie, extraire l'ID du lobby du corps de la réponse JSON + val responseBody = response.body?.string() + val jsonObject = JSONObject(responseBody) + + // Retourner l'ID du lobby + return jsonObject.optInt("lobby_id", -1) + } } } catch (e: Exception) { // Log en cas d'erreur Log.e("CreateLobby", "Error creating lobby", e) - return false } + return -1 } - } } \ No newline at end of file diff --git a/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerPlayer.kt b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerPlayer.kt index cd884dc..57c41a0 100644 --- a/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerPlayer.kt +++ b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerPlayer.kt @@ -1,10 +1,7 @@ package com.example.mathseduc.controllers import android.os.StrictMode -import com.example.mathseduc.models.Chapter -import com.example.mathseduc.models.Lobby -import com.example.mathseduc.models.LobbyInfo -import com.example.mathseduc.models.Player +import com.example.mathseduc.models.* import com.google.gson.Gson import com.google.gson.reflect.TypeToken import okhttp3.FormBody @@ -30,9 +27,9 @@ class ControllerPlayer { if (!response.isSuccessful) throw IOException("Unexpected code $response") val gson = Gson() - val typeTokenProduct = object : TypeToken>() {}.type + val typeTokenProduct = object : TypeToken>() {}.type - val playerInfoList: List = gson.fromJson(response.body!!.string(), typeTokenProduct) + val playerInfoList: List = gson.fromJson(response.body!!.string(), typeTokenProduct) // Extract player IDs from PlayerInfo list val playerIds: List = playerInfoList.map { it.idplayer } diff --git a/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerUtiliser.kt b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerUtiliser.kt new file mode 100644 index 0000000..858fa2d --- /dev/null +++ b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerUtiliser.kt @@ -0,0 +1,43 @@ +package com.example.mathseduc.controllers + +import android.os.StrictMode +import android.util.Log +import com.example.mathseduc.models.Lobby +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import okhttp3.MultipartBody +import okhttp3.OkHttpClient +import okhttp3.Request +import java.io.IOException + +class ControllerUtiliser { + companion object { + + fun createUtiliserByIdLobby(utiliserData: MultipartBody.Builder): Boolean { + try { + val policy = StrictMode.ThreadPolicy.Builder().permitAll().build() + StrictMode.setThreadPolicy(policy) + + // Client HTTP API + val client = OkHttpClient() + + // API Access + val request = Request.Builder() + .url("https://trusting-panini.87-106-126-109.plesk.page/api/add/utiliser/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") + .post(utiliserData.build()) + .build() + + // API Response + client.newCall(request).execute().use { response -> + // Vérifier si la création du lobby a réussi + return response.isSuccessful + } + } catch (e: Exception) { + // Log en cas d'erreur + Log.e("CreateLobby", "Error creating lobby", e) + return false + } + } + + } +} diff --git a/Android/app/src/main/java/com/example/mathseduc/models/LobbyInfo.kt b/Android/app/src/main/java/com/example/mathseduc/models/Utiliser.kt similarity index 82% rename from Android/app/src/main/java/com/example/mathseduc/models/LobbyInfo.kt rename to Android/app/src/main/java/com/example/mathseduc/models/Utiliser.kt index 6a60f1d..f998cb0 100644 --- a/Android/app/src/main/java/com/example/mathseduc/models/LobbyInfo.kt +++ b/Android/app/src/main/java/com/example/mathseduc/models/Utiliser.kt @@ -1,6 +1,6 @@ package com.example.mathseduc.models -data class LobbyInfo ( +data class Utiliser ( val idlobby: Int, val idplayer: Int, val playertime: Int