From 9ad151d7bed1fd59670077bc714bd8fb4e668dc8 Mon Sep 17 00:00:00 2001 From: "jeremy.ducourthial" Date: Wed, 28 Feb 2024 12:24:34 +0100 Subject: [PATCH] =?UTF-8?q?feat=20:=20ajout=20cr=C3=A9ation=20d'un=20lobby?= =?UTF-8?q?=20utilisable=20(API)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/mathseduc/CreateLobbyActivity.kt | 45 +++++++++++-------- .../mathseduc/controllers/ControllerLobby.kt | 9 ++-- 2 files changed, 31 insertions(+), 23 deletions(-) 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 267e16e..0299161 100644 --- a/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/CreateLobbyActivity.kt @@ -6,7 +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.models.Lobby +import okhttp3.MultipartBody import org.json.JSONObject @@ -34,30 +34,37 @@ class CreateLobbyActivity : AppCompatActivity() { buttonCreateLobby.setOnClickListener { val lobbyName = findViewById(R.id.editTextLobbyName).text.toString() val password = findViewById(R.id.editTextPassword).text.toString() - val nbPlayers = findViewById(R.id.editTextNbPlayers).text.toString().toInt() + val nbPlayers = findViewById(R.id.editTextNbPlayers).text.toString() val difficulty = findViewById(R.id.spinnerDifficulty).selectedItemPosition + 1 val selectedChapterPosition = findViewById(R.id.spinnerChapter).selectedItemPosition - val chapterId = chaptersFromApi?.getOrNull(selectedChapterPosition)?.id?.toInt() ?: -1 + val idChapter = chaptersFromApi?.getOrNull(selectedChapterPosition)?.id?: -1 - // Créer un objet Lobby avec les valeurs du formulaire - val lobbyData = JSONObject().apply { - put("name", lobbyName) - put("password", password) - put("nbplayers", nbPlayers) - put("idplayercreator", 53) - put("idchapter", chapterId) - put("difficulty", difficulty) + if (lobbyName.isNullOrBlank() || password.isNullOrBlank() || nbPlayers.isNullOrBlank() || nbPlayers.toInt() <= 0) { + Toast.makeText(this, "Échec de la création du lobby. Veuillez réessayer.", Toast.LENGTH_SHORT).show() } + else + { + // Create form data + val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM) - // Appeler la fonction pour créer le lobby - val lobbyCreatedSuccessfully = ControllerLobby.createLobby(lobbyData) + // Add fields to form data + formDataBuilder.addFormDataPart("name", lobbyName) + formDataBuilder.addFormDataPart("password", password) + formDataBuilder.addFormDataPart("nbplayers", nbPlayers.toString()) + formDataBuilder.addFormDataPart("idplayercreator", "53") + formDataBuilder.addFormDataPart("idchapter", idChapter.toString()) + formDataBuilder.addFormDataPart("difficulty", difficulty.toString()) - // Vérifier si la création du lobby a réussi - if (lobbyCreatedSuccessfully) { - val intent = Intent(this, ServerDetailsActivity::class.java) - startActivity(intent) - } else { - Toast.makeText(this, "Échec de la création du lobby. Veuillez réessayer.", Toast.LENGTH_SHORT).show() + // Appeler la fonction pour créer le lobby + val lobbyCreatedSuccessfully = ControllerLobby.createLobby(formDataBuilder) + + // Vérifier si la création du lobby a réussi + if (lobbyCreatedSuccessfully) { + val intent = Intent(this, ServerDetailsActivity::class.java) + 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/controllers/ControllerLobby.kt b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerLobby.kt index cc2db6a..d76ba0b 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,13 +5,14 @@ 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.toMediaTypeOrNull +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 + class ControllerLobby { companion object { fun getLobbies(): ArrayList? { @@ -40,7 +41,7 @@ class ControllerLobby { return null } - fun createLobby(lobbyData: JSONObject): Boolean { + fun createLobby(lobbyData: MultipartBody.Builder): Boolean { try { // Log avant l'appel API Log.d("CreateLobby", "Request Data: ${lobbyData.toString()}") @@ -54,7 +55,7 @@ class ControllerLobby { // API Access val request = Request.Builder() .url("https://trusting-panini.87-106-126-109.plesk.page/api/add/lobbies/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") - .post(lobbyData.toString().toRequestBody("application/json".toMediaTypeOrNull())) + .post(lobbyData.build()) .build() // API Response