diff --git a/Android/app/src/main/java/com/example/mathseduc/MainActivity.kt b/Android/app/src/main/java/com/example/mathseduc/MainActivity.kt index 6d0ed8c..10dba31 100644 --- a/Android/app/src/main/java/com/example/mathseduc/MainActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/MainActivity.kt @@ -31,6 +31,8 @@ class MainActivity : AppCompatActivity() { } else { Toast.makeText(this, "Vous n'êtes pas connecté", Toast.LENGTH_SHORT).show() + val intent = Intent(this, ConnexionPlayerActivity::class.java) + startActivity(intent) } } diff --git a/Android/app/src/main/java/com/example/mathseduc/ServerDetailsActivity.kt b/Android/app/src/main/java/com/example/mathseduc/ServerDetailsActivity.kt index d4e6208..a42b135 100644 --- a/Android/app/src/main/java/com/example/mathseduc/ServerDetailsActivity.kt +++ b/Android/app/src/main/java/com/example/mathseduc/ServerDetailsActivity.kt @@ -9,8 +9,11 @@ import android.widget.ArrayAdapter import android.widget.ListView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import com.example.mathseduc.controllers.ControllerLobby import com.example.mathseduc.controllers.ControllerPlayer +import com.example.mathseduc.controllers.ControllerUtiliser import com.example.mathseduc.models.Player +import okhttp3.MultipartBody class ServerDetailsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -35,6 +38,29 @@ class ServerDetailsActivity : AppCompatActivity() { } } + override fun onStop() { + super.onStop() + + val lobbyId = intent.getIntExtra("lobbyId", -1) + + ControllerUtiliser.DeleteUtiliserForLobby(MainActivity.idPlayerConnected,lobbyId) + + if(ControllerLobby.PlayerCreatorIdPresentInLobby(MainActivity.idPlayerConnected,lobbyId)){ + + val idNextPlayerCreator = ControllerUtiliser.getIdNextPlayerInLobby(lobbyId) + + if (idNextPlayerCreator == -1){ + ControllerLobby.deleteLobby(lobbyId) + } else { + val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM) + + formDataBuilder.addFormDataPart("idplayercreator", idNextPlayerCreator.toString()) + + ControllerLobby.updateLobbyIdCreatorLobby(lobbyId,formDataBuilder) + } + } + } + class PlayerAdapter(context: Context, players: List) : ArrayAdapter(context, 0, players) { @@ -52,6 +78,5 @@ class ServerDetailsActivity : AppCompatActivity() { return currentPlayerView } - } } \ No newline at end of file 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 76d1fd6..06093ea 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 @@ -8,6 +8,7 @@ import com.google.gson.reflect.TypeToken import okhttp3.MultipartBody import okhttp3.OkHttpClient import okhttp3.Request +import okhttp3.Response import org.json.JSONObject import java.io.IOException @@ -71,5 +72,87 @@ class ControllerLobby { } return -1 } + + fun PlayerCreatorIdPresentInLobby(idPlayer: Int, lobbyId: Int): Boolean { + + 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/lobbies/$lobbyId/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") + .build() + + // API Response + client.newCall(request).execute().use { response -> + if (!response.isSuccessful) throw IOException("Unexpected code $response") + + // Gson deserialization + val gson = Gson() + val typeTokenProduct = object : TypeToken>() {}.type + + val lobby: ArrayList = gson.fromJson(response.body!!.string(), typeTokenProduct) + return lobby[0].idplayercreator == idPlayer + } + return false + } + + fun deleteLobby(lobbyId: Int) { + try { + val policy = StrictMode.ThreadPolicy.Builder().permitAll().build() + StrictMode.setThreadPolicy(policy) + + // Client HTTP API + val client = OkHttpClient() + + // API Access - Suppression du lobby + val deleteRequest = Request.Builder() + .url("https://trusting-panini.87-106-126-109.plesk.page/api/lobbies/$lobbyId/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") + .delete() + .build() + + // API Response + val deleteResponse: Response = client.newCall(deleteRequest).execute() + + // Vérifier si la suppression a réussi + if (!deleteResponse.isSuccessful) { + Log.e("deleteLobby", "Error deleting lobby") + } + } catch (e: Exception) { + // Log en cas d'erreur + Log.e("deleteLobby", "Error deleting lobby", e) + } + } + + fun updateLobbyIdCreatorLobby(lobbyId: Int,lobbyData: MultipartBody.Builder) { + try { + val policy = StrictMode.ThreadPolicy.Builder().permitAll().build() + StrictMode.setThreadPolicy(policy) + + // Client HTTP API + val client = OkHttpClient() + + // API Access - Mise à jour du lobby + val updateRequest = Request.Builder() + .url("https://trusting-panini.87-106-126-109.plesk.page/api/update/lobbies/idcreatorlobby/$lobbyId/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") + // Ajoutez d'autres paramètres ou données pour la mise à jour si nécessaire + .post(lobbyData.build()) //TODO attention api pb + .build() + + // API Response + val updateResponse: Response = client.newCall(updateRequest).execute() + + // Vérifier si la mise à jour a réussi + if (!updateResponse.isSuccessful) { + Log.e("updateLobby", "Error updating lobby") + } + } catch (e: Exception) { + // Log en cas d'erreur + Log.e("updateLobby", "Error updating lobby", e) + } + } } } \ No newline at end of file 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 index 858fa2d..37ed6cc 100644 --- a/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerUtiliser.kt +++ b/Android/app/src/main/java/com/example/mathseduc/controllers/ControllerUtiliser.kt @@ -3,11 +3,13 @@ package com.example.mathseduc.controllers import android.os.StrictMode import android.util.Log import com.example.mathseduc.models.Lobby +import com.example.mathseduc.models.Utiliser import com.google.gson.Gson import com.google.gson.reflect.TypeToken import okhttp3.MultipartBody import okhttp3.OkHttpClient import okhttp3.Request +import okhttp3.Response import java.io.IOException class ControllerUtiliser { @@ -39,5 +41,60 @@ class ControllerUtiliser { } } + fun DeleteUtiliserForLobby(idPlayerConnected: Int, lobbyId: Int): 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/delete/utiliser/$lobbyId/$idPlayerConnected/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") + .delete() + .build() + + // API Response + val response: Response = client.newCall(request).execute() + + // Vérifier si la suppression a réussi + return response.isSuccessful + } catch (e: Exception) { + // Log en cas d'erreur + Log.e("DeleteUtiliser", "Error deleting utiliser", e) + return false + } + } + fun getIdNextPlayerInLobby(lobbyId: Int): Int { + + 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/utiliser/$lobbyId/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO") + .build() + + // API Response + client.newCall(request).execute().use { response -> + if (!response.isSuccessful) throw IOException("Unexpected code $response") + + // Gson deserialization + val gson = Gson() + val typeTokenProduct = object : TypeToken>() {}.type + + val utiliser: ArrayList = gson.fromJson(response.body!!.string(), typeTokenProduct) + if (utiliser.isNotEmpty()){ + return utiliser[0].idplayer + } else { + return -1 + } + } + return -1 + } } }