Compare commits

...

9 Commits

Author SHA1 Message Date
Emre KARTAL 35843b4334 Update README
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL 177758cfdd Add Images 📷
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL d348da8055 Merge pull request 'Database' (#11) from Data_Persistence into master
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL 1cfdaab5b7 correct error Responsive 🐛
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL 3e3fbe2dd0 Merge pull request 'Realization of the DAO Competition and the Database 💾' (#10) from Data_Persistence into master
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL cb95747e65 Realization of the DAO Competition and the Database 💾
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL 5389b060eb Merge pull request 'Clean code ♻️' (#9) from API_NextStep into master
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL a5e07309ba Merge pull request 'API_NextStep' (#8) from API_NextStep into master
continuous-integration/drone/push Build is passing Details
2 years ago
Emre KARTAL 2438c71b96 Mise à jour de 'README.md'
continuous-integration/drone/push Build is failing Details
2 years ago

@ -216,6 +216,56 @@ StubManager --|> DataManager
@enduml
```
## Visuel de l'Application
<div align = center>
<img src="doc/Images/StartPage.jpg" width="250" >
<img src="doc/Images/HomePage.jpg" width="250" >
<img src="doc/Images/FavoritePage.jpg" width="250" >
<img src="doc/Images/DetailCompetitionPage.jpg" width="250" >
</div>
## Avancement du projet
<u>Où en sommes-nous</u>:grey_question::grey_exclamation: (:white_check_mark: réalisé, :warning: presque abouti, :x: non commencé )
```Côté vue:```
- :white_check_mark: [**Partie 1**](src) : **Réalisation de la vue Start Page**
- :white_check_mark: [**Partie 2**](src) : **Réalisation de la vue Home Page**
- :white_check_mark: [**Partie 3**](src) : **Réalisation de la vue Favorite Page**
- :white_check_mark: [**Partie 4**](src) : **Réalisation de la vue Detail Competition Page**
- :x: [**Partie 5**](src) : **Réalisation de la vue Team Detail Page**
```Côté back-end:```
- :white_check_mark: [**Partie 1**](src) : **Réalisation de la navigation entre les fragments**
- :white_check_mark: [**Partie 2**](src) : **Master Detail**
- :white_check_mark: [**Partie 3**](src) : **Appelle à l'API**
- :white_check_mark: [**Partie 4**](src) : **Gyroscope pour le ballon de foot**
- :white_check_mark: [**Partie 5**](doc) : **Conception et réalisation du Model**
- :warning: [**Partie 6**](src) : **Persistance des donnéees**
- :x: [**Partie 7**](src) : **Réalisation de la barre de recherche**
- :x: [**Partie 8**](src) : **Affichage des images SVG**
```Autre:```
- :white_check_mark: [**Partie 1**](.drone.yml) : **Mise en place de SonarQube**
## :construction_worker: Technicien en charge de l'application
- Emre KARTAL : Emre.KARTAL@etu.uca.fr
@ -224,7 +274,7 @@ StubManager --|> DataManager
<a href = "https://codefirst.iut.uca.fr/git/emre.kartal">
<img src="https://codefirst.iut.uca.fr/git/avatars/402cf312e853192f42c0135a888725c2?size=870" width="50" >
</a>
<a href = "https://codefirst.iut.uca.fr/git/david.d_almeida">
<a href = "https://codefirst.iut.uca.fr/git/baptiste.marcel">
<img src="https://codefirst.iut.uca.fr/git/avatars/6b1f2a8b8f636d8f4d315b060075578f?size=870" width="50" >
</a>

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@ -32,6 +32,7 @@ android {
}
}
apply plugin: 'kotlin-kapt'
dependencies {
// Navigation
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
@ -45,6 +46,10 @@ dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// Room
implementation 'androidx.room:room-runtime:2.5.1'
implementation 'androidx.room:room-ktx:2.5.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'

@ -0,0 +1,31 @@
package uca.iut.clermont.data
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import uca.iut.clermont.data.dao.CompetitionDao
import uca.iut.clermont.model.Competition
@Database(entities = arrayOf(Competition::class), version = 1)
abstract class BDD : RoomDatabase() {
abstract fun competitionDao(): CompetitionDao
companion object {
private var INSTANCE: BDD? = null
fun getInstance(context: Context) =
INSTANCE ?: synchronized(this) {
val db = Room.databaseBuilder(
context,
BDD::class.java,
"ScorItDB"
).build()
INSTANCE = db
}
}
}

@ -0,0 +1,22 @@
package uca.iut.clermont.data.dao
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import kotlinx.coroutines.flow.Flow
import uca.iut.clermont.model.Competition
@Dao
interface CompetitionDao {
@Delete
fun deleteCompetition(competition: Competition)
@Query("SELECT * FROM competition")
fun getAllCompetitions(): Flow<List<Competition>>
@Insert
fun insertCompetition(competition: Competition)
}

@ -1,11 +1,16 @@
package uca.iut.clermont.model
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "competitions")
class Competition(
val id: Int,
val name: String,
val code: String,
val type: String,
val emblem: String,
val currentSeason: Season,
@PrimaryKey val id: Int,
@ColumnInfo val name: String,
@ColumnInfo val code: String,
@ColumnInfo val type: String,
@ColumnInfo val emblem: String,
@ColumnInfo val currentSeason: Season,
val area: Area
)

@ -9,13 +9,21 @@ import uca.iut.clermont.model.Competition
import uca.iut.clermont.model.Match
import java.util.*
class DetailViewModel : ViewModel() {
class DetailViewModel(
//val dao: CompetitionDao
) : ViewModel() {
val manager = ApiManager()
val competition = MutableLiveData<Competition?>()
val competitionMatches = MutableLiveData<List<Match>>()
val nbCompetitionMatches = MutableLiveData<Int>()
/*fun insertCompetition(competition: Competition) =
viewModelScope.launch {
dao.insertCompetition(competition)
}
*/
fun loadCurrentCompetition(id: Int) = viewModelScope.launch {
val result = manager.competitionsMgr.getItemById(id)
competition.value = result
@ -24,10 +32,11 @@ class DetailViewModel : ViewModel() {
fun loadMatches(id: Int) = viewModelScope.launch {
val matchResults = manager.matchesMgr.getItemsByCompetition(id)
competitionMatches.value = matchResults.filter { it.status != "TIMED" && it.status != "SCHEDULED" }
.apply { forEach { it.date.add(Calendar.HOUR_OF_DAY, 2) } }
.sortedBy { it.competition.name }
.sortedByDescending { it.date }
competitionMatches.value =
matchResults.filter { it.status != "TIMED" && it.status != "SCHEDULED" && it.status != "POSTPONED" }
.apply { forEach { it.date.add(Calendar.HOUR_OF_DAY, 2) } }
.sortedBy { it.competition.name }
.sortedByDescending { it.date }
}
fun loadNumberMatches() = viewModelScope.launch {

@ -7,11 +7,16 @@ import kotlinx.coroutines.launch
import uca.iut.clermont.api.ApiManager
import uca.iut.clermont.model.Competition
class FavoriteViewModel : ViewModel() {
class FavoriteViewModel(
//val dao: CompetitionDao
) : ViewModel() {
val manager = ApiManager()
val competitions = MutableLiveData<List<Competition>>()
//fun getAllCompetitions() = dao.getAllCompetitions()
//.isLiveDate()
fun loadCompetitions() = viewModelScope.launch {
val result = manager.competitionsMgr.getItems()
competitions.value = result

@ -6,7 +6,7 @@
android:layout_marginBottom="5dp">
<LinearLayout
android:layout_width="350dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:background="@drawable/background"

@ -199,9 +199,10 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listRecentsMatches"
android:layout_width="wrap_content"
android:layout_height="500dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingHorizontal="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/latestMatch"

@ -120,7 +120,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listRecentsMatches"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:paddingBottom="200dp"

Loading…
Cancel
Save