diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 0000000..654a0ab
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7e40091..00b8d47 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -2,6 +2,7 @@ plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.google.android.libraries.mapsplatform.secrets.gradle.plugin)
id("com.google.dagger.hilt.android")
+ alias(libs.plugins.kotlin.android)
}
android {
@@ -34,13 +35,18 @@ android {
buildFeatures {
viewBinding = true
}
+ kotlinOptions {
+ jvmTarget = "11"
+ }
}
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
- implementation("com.squareup.retrofit2:converter-gson:2.11.0")
- implementation("com.squareup.retrofit2:retrofit:2.11.0")
+ implementation(libs.retrofit)
+ implementation(libs.okhttp)
+ implementation(libs.logging.interceptor)
+ implementation(libs.kotlinx.coroutines.android)
+ implementation(libs.converter.gson)
implementation(libs.hilt.android)
annotationProcessor(libs.hilt.compiler)
implementation(libs.rxjava)
diff --git a/app/src/main/java/com/example/quiz/AppModule.java b/app/src/main/java/com/example/quiz/AppModule.java
index a2dd9f7..e69de29 100644
--- a/app/src/main/java/com/example/quiz/AppModule.java
+++ b/app/src/main/java/com/example/quiz/AppModule.java
@@ -1,27 +0,0 @@
-package com.example.quiz;
-
-import com.example.quiz.data.BetsBank;
-import com.example.quiz.data.repository.BetRepository;
-
-import javax.inject.Singleton;
-
-import dagger.Module;
-import dagger.Provides;
-import dagger.hilt.InstallIn;
-import dagger.hilt.components.SingletonComponent;
-
-@Module
-@InstallIn(SingletonComponent.class)
-public class AppModule {
- @Provides
- @Singleton
- public BetsBank provideApiService(){
- return BetsBank.getInstance();
- }
-
- @Provides
- @Singleton
- public BetRepository provideBetRepository() {
- return new BetRepository();
- }
-}
diff --git a/app/src/main/java/com/example/quiz/BetValidation.java b/app/src/main/java/com/example/quiz/BetValidation.java
index c60d3e2..6a803de 100644
--- a/app/src/main/java/com/example/quiz/BetValidation.java
+++ b/app/src/main/java/com/example/quiz/BetValidation.java
@@ -17,24 +17,14 @@ import android.widget.GridLayout;
import android.widget.TextView;
import android.widget.Toast;
-import com.example.quiz.data.model.Horse;
+import com.example.quiz.data.model.Course;
import com.example.quiz.data.model.Reunion;
-import com.example.quiz.data.model.TypeOfBet;
import com.example.quiz.databinding.FragmentBetValidationBinding;
-
import com.example.quiz.utils.HPRTPrinterUtil;
-import com.example.quiz.viewModel.BetViewModel;
import com.example.quiz.viewModel.SharedViewModel;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.stream.Collectors;
-
import dagger.hilt.android.AndroidEntryPoint;
/**
@@ -50,18 +40,18 @@ public class BetValidation extends Fragment {
SharedViewModel shared;
- BetViewModel viewModel;
private HPRTPrinterUtil printer;
- private TypeOfBet typeOfBet;
+ private String typeOfBet;
private Reunion reunion;
- private List selectedHorses = new ArrayList();
+ private Course course;
+
+ private List selectedHorses = new ArrayList();
- private List totalHorses;
@@ -92,27 +82,28 @@ public class BetValidation extends Fragment {
private void setupNumberGrid(GridLayout grid) {
binding.gridNumbers.removeAllViews();
- int columns = 4;
-
+ int columns = 7;
grid.setColumnCount(columns);
-
- if(totalHorses != null){
- totalHorses.stream()
- .map(this::createNumberItem)
- .forEach(grid::addView);
+ if(shared.selectedCourse.getValue() != null){
+ for (int i = 1; i <= shared.selectedCourse.getValue().getNombreChevauxInscrits(); i++) {
+ createNumberItem(String.valueOf(i));
+ grid.addView(createNumberItem(String.valueOf(i)));
+ }
}
+ createNumberItem("X");
+ grid.addView(createNumberItem("X"));
}
- private TextView createNumberItem(Horse horse) {
+ private TextView createNumberItem(String horse) {
TextView textView = new TextView(requireContext());
- textView.setText(String.valueOf(horse.getNumber()));
+ textView.setText(horse);
textView.setTextColor(getResources().getColor(R.color.white));
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
- params.setMargins(10, 10, 10, 10);
+ params.setMargins(1, 1, 1, 1);
textView.setLayoutParams(params);
- textView.setTextSize(21);
- textView.setWidth(130);
- textView.setHeight(130);
+ textView.setTextSize(10);
+ textView.setWidth(80);
+ textView.setHeight(100);
textView.setGravity(Gravity.CENTER);
textView.setBackgroundResource(R.drawable.number_background);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
@@ -128,7 +119,7 @@ public class BetValidation extends Fragment {
v.setBackgroundResource(R.drawable.number_selected_background);
}
String combinationText = selectedHorses.stream()
- .map(h -> String.valueOf(h.getNumber()))
+ .map(h -> h)
.collect(Collectors.joining("-"));
binding.combination.setText(getString(R.string.combination, combinationText));
});
@@ -140,21 +131,17 @@ public class BetValidation extends Fragment {
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
shared = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
- viewModel = new ViewModelProvider(this).get(BetViewModel.class);
+ /*viewModel = new ViewModelProvider(this).get(BetViewModel.class);
viewModel.getBetNameById(shared.betId.getValue() - 1);
viewModel.betName.observe(getViewLifecycleOwner(), name ->{
binding.horseName.setText(name);
});
viewModel.loadHorses(shared.betId.getValue() - 1);
- viewModel.horses.observe(getViewLifecycleOwner(), h->{
- this.totalHorses = h;
- setupNumberGrid(binding.gridNumbers);
- });
- shared.typeOfBet.observe(getViewLifecycleOwner(), type ->{
- this.typeOfBet = type;
- });
- viewModel.loadReunionById(shared.betId.getValue() - 1);
- reunion = viewModel.reunion.getValue();
+ if(viewModel.partant.getValue() != null){
+ this.totalHorses = viewModel.partant.getValue();
+ }*/
+
+ setupNumberGrid(binding.gridNumbers);
binding.paymentType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
@@ -180,13 +167,34 @@ public class BetValidation extends Fragment {
Toast.makeText(getContext(), "Veuillez entrer un numéro de téléphone", Toast.LENGTH_SHORT).show();
return;
}
- Integer required = Integer.parseInt(typeOfBet.getNumberOfHorse());
- if(required == null){
+
+ if(shared.typeOfBet == null || shared.selectedReunion.getValue() == null || shared.selectedCourse == null){
+ return;
+ }
+ typeOfBet = shared.typeOfBet.getValue();
+ reunion = shared.selectedReunion.getValue();
+ course = shared.selectedCourse.getValue();
+
+ int required = 0;
+ if(typeOfBet.toLowerCase().contains("couple")){
+ required = 2;
+ }
+ if(typeOfBet.toLowerCase().contains("tierce")){
+ required = 3;
+ }
+ if(typeOfBet.toLowerCase().contains("quarte")){
+ required = 4;
+ }
+ if(typeOfBet.toLowerCase().contains("quinte")){
+ required = 5;
+ }
+
+ if(required == 0){
Toast.makeText(getContext(), "Erreur de type de pari", Toast.LENGTH_SHORT).show();
return;
}
- if(selectedHorses.size() != required){
- Toast.makeText(getContext(), "Veuillez sélectionner "+required+" chevaux", Toast.LENGTH_SHORT).show();
+ if(selectedHorses.size() < required){
+ Toast.makeText(getContext(), "Veuillez sélectionner au moins"+required+" chevaux", Toast.LENGTH_SHORT).show();
return;
}
printer = new HPRTPrinterUtil(getContext());
@@ -195,16 +203,16 @@ public class BetValidation extends Fragment {
StringBuilder tspl = new StringBuilder();
tspl.append("PARIS HIPPIQUE (PMU MALI)\n");
- tspl.append(typeOfBet.getName()+"\n");
+ tspl.append(typeOfBet).append("\n");
tspl.append("Tel: 555-1234\n");
tspl.append("----------------------------\n");
- tspl.append(reunion.getName()+"/"+reunion.getAddress());
+ tspl.append(reunion.getNom()).append("/").append(course.getLieu());
tspl.append("----------------------------\n");
String combinationText = selectedHorses.stream()
- .map(h -> String.valueOf(h.getNumber()))
+ .map(String::valueOf)
.collect(Collectors.joining("-"));
- tspl.append("COMBINAISON : "+combinationText);
+ tspl.append("COMBINAISON : ").append(combinationText);
tspl.append("\n----------------------------\n");
@@ -216,7 +224,9 @@ public class BetValidation extends Fragment {
printer.printText(tspl);
}
-
+ selectedHorses = List.of();
+ binding.combination.setText(getString(R.string.combination,""));
+ setupNumberGrid(binding.gridNumbers);
});
binding.backBtn.setOnClickListener(v->{
diff --git a/app/src/main/java/com/example/quiz/ListOFBets.java b/app/src/main/java/com/example/quiz/ListOFBets.java
index b1ad722..4ab997a 100644
--- a/app/src/main/java/com/example/quiz/ListOFBets.java
+++ b/app/src/main/java/com/example/quiz/ListOFBets.java
@@ -6,31 +6,29 @@ import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import androidx.core.app.ActivityCompat;
-import androidx.core.app.ComponentActivity;
import androidx.fragment.app.Fragment;
+
import androidx.fragment.app.FragmentManager;
+import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import android.service.controls.Control;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.view.animation.LayoutAnimationController;
import android.widget.Toast;
import com.example.quiz.data.adapter.BetsAdapter;
+import com.example.quiz.data.model.Course;
import com.example.quiz.databinding.FragmentListOFBettingBinding;
-import com.example.quiz.viewModel.BetViewModel;
+import com.example.quiz.utils.Result;
+import com.example.quiz.viewModel.CourseViewModel;
import com.example.quiz.viewModel.SharedViewModel;
+import com.google.android.material.appbar.MaterialToolbar;
+
+import java.util.List;
import dagger.hilt.android.AndroidEntryPoint;
-import dagger.hilt.android.internal.lifecycle.HiltViewModelFactory;
/**
* A simple {@link Fragment} subclass.
@@ -40,25 +38,21 @@ import dagger.hilt.android.internal.lifecycle.HiltViewModelFactory;
@AndroidEntryPoint
public class ListOFBets extends Fragment {
- private String username;
-
- private View view;
FragmentListOFBettingBinding binding;
- private BetViewModel viewModel;
-
private SharedViewModel shared;
+ private CourseViewModel viewModel;
+
private BetsAdapter adapter;
private AppCompatActivity activity;
- public static ListOFBets newInstance(String username) {
+ public static ListOFBets newInstance() {
ListOFBets fragment = new ListOFBets();
Bundle args = new Bundle();
- args.putString("ARG_USERNAME", username);
fragment.setArguments(args);
return fragment;
}
@@ -66,8 +60,13 @@ public class ListOFBets extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if(getArguments() != null){
- username = getArguments().getString("ARG_USERNAME");
+ AppCompatActivity activity = (AppCompatActivity) getActivity();
+ if(activity != null){
+ MaterialToolbar toolbar = activity.findViewById(R.id.toolbar);
+ activity.setSupportActionBar(toolbar);
+ if(activity.getSupportActionBar() != null){
+ activity.getSupportActionBar().setTitle("Liste des courses");
+ }
}
}
@@ -75,24 +74,15 @@ public class ListOFBets extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentListOFBettingBinding.inflate(inflater, container, false);
- activity = (AppCompatActivity) getActivity();
- if(activity != null){
- if(activity.getSupportActionBar() != null){
- activity.getSupportActionBar().show();
- activity.getSupportActionBar().setTitle("Liste des paris");
- }
- }
adapter = new BetsAdapter();
binding.recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 2));
binding.recyclerView.setAdapter(adapter);
- LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(getContext(), R.anim.layout_fad_in);
- binding.recyclerView.setLayoutAnimation(controller);
- viewModel = new ViewModelProvider(this).get(BetViewModel.class);
+ viewModel = new ViewModelProvider(this).get(CourseViewModel.class);
shared = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
- viewModel.bets.observe(getViewLifecycleOwner(), bets -> {
+ /*viewModel.bets.observe(getViewLifecycleOwner(), bets -> {
adapter.setBets(bets);
adapter.setOnItemClickListener(position -> {
shared.setBetId(position);
@@ -103,25 +93,42 @@ public class ListOFBets extends Fragment {
.addToBackStack(null)
.commit();
});
- });
+ });*/
- viewModel.loadBets();
+ //viewModel.loadBets();
+ observe();
return binding.getRoot();
}
+ public void observe(){
+ viewModel.getCourses().observe(getViewLifecycleOwner(), new Observer>>() {
+ @Override
+ public void onChanged(Result> result) {
+ switch (result.status){
+ case LOADING:
+ Toast.makeText(getContext(), "Loading", Toast.LENGTH_SHORT).show();
+ break;
+ case SUCCESS:
+ adapter.setBets(result.data);
+ adapter.setOnItemClickListener(course ->{
+ shared.setSelectedCourse(course);
+ FragmentManager fragmentManager = getParentFragmentManager();
+ ListOfTypeOfBets typeOfBets = ListOfTypeOfBets.newInstance();
+ fragmentManager.beginTransaction()
+ .replace(R.id.nav_host_fragment_content_main, typeOfBets)
+ .addToBackStack(null)
+ .commit();
+ });
+ case ERROR:
+ break;
+ }
+ }
+ });
+ }
+
@SuppressLint("UseSupportActionBar")
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- AppCompatActivity activity = (AppCompatActivity) getActivity();
- if(activity!=null){
- Toolbar toolbar = activity.findViewById(R.id.toolbar);
- toolbar.setBackgroundColor(getResources().getColor(R.color.primary_green));
- toolbar.setTitleTextColor(getResources().getColor(R.color.text_light_grey));
- activity.setSupportActionBar(toolbar);
- if(activity.getSupportActionBar() != null){
- activity.getSupportActionBar().setTitle(username);
- }
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/quiz/ListOfReunions.java b/app/src/main/java/com/example/quiz/ListOfReunions.java
new file mode 100644
index 0000000..7703c8b
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/ListOfReunions.java
@@ -0,0 +1,126 @@
+package com.example.quiz;
+
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+import android.widget.Toolbar;
+
+import com.example.quiz.data.adapter.ReunionAdapter;
+import com.example.quiz.data.model.Reunion;
+import com.example.quiz.databinding.FragmentListOfReunionsBinding;
+import com.example.quiz.utils.Result;
+import com.example.quiz.viewModel.ReunionViewModel;
+import com.example.quiz.viewModel.SharedViewModel;
+import com.google.android.material.appbar.MaterialToolbar;
+
+import java.util.List;
+
+import dagger.hilt.android.AndroidEntryPoint;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link ListOfReunions#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+@AndroidEntryPoint
+public class ListOfReunions extends Fragment {
+
+ FragmentListOfReunionsBinding binding;
+
+ SharedViewModel shared;
+
+ ReunionAdapter adapter;
+
+ ReunionViewModel reunionViewModel;
+
+
+ public ListOfReunions() {
+ // Required empty public constructor
+ }
+
+ public static ListOfReunions newInstance(String username) {
+ ListOfReunions fragment = new ListOfReunions();
+ Bundle args = new Bundle();
+ args.putString("USER_NAME", username);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ binding = FragmentListOfReunionsBinding.inflate(inflater, container, false);
+ adapter = new ReunionAdapter();
+ binding.reunionsList.setLayoutManager(new LinearLayoutManager(getContext()));
+ binding.reunionsList.setAdapter(adapter);
+ reunionViewModel = new ViewModelProvider(this).get(ReunionViewModel.class);
+ shared = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
+ observeReunions();
+ return binding.getRoot();
+ }
+
+ public void observeReunions(){
+ reunionViewModel.getReunions().observe(getViewLifecycleOwner(), new Observer>>() {
+ @Override
+ public void onChanged(Result> result) {
+ switch (result.status) {
+ case LOADING:
+ Toast.makeText(getContext(), "Loading", Toast.LENGTH_SHORT).show();
+ break;
+ case SUCCESS:
+ adapter.setReunions(result.data);
+ adapter.setOnItemClickListener(reunion->{
+ shared.setSelectedReunion(reunion);
+ FragmentManager fragmentManager = getParentFragmentManager();
+ ListOFBets bets = ListOFBets.newInstance();
+ fragmentManager.beginTransaction()
+ .replace(R.id.nav_host_fragment_content_main, bets)
+ .addToBackStack(null)
+ .commit();
+ });
+ break;
+ case ERROR:
+ Toast.makeText(getContext(), result.message, Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ AppCompatActivity activity = (AppCompatActivity) getActivity();
+ if (activity != null) {
+ MaterialToolbar toolbar = activity.findViewById(R.id.toolbar);
+ activity.setSupportActionBar(toolbar);
+
+ if (activity.getSupportActionBar() != null) {
+ activity.getSupportActionBar().show();
+ activity.getSupportActionBar().setTitle("Liste des réunions");
+ }
+
+ toolbar.setBackgroundColor(getResources().getColor(R.color.primary_green, null));
+ toolbar.setTitleTextColor(getResources().getColor(R.color.white, null));
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/quiz/ListOfTypeOfBets.java b/app/src/main/java/com/example/quiz/ListOfTypeOfBets.java
index e376703..3cd090f 100644
--- a/app/src/main/java/com/example/quiz/ListOfTypeOfBets.java
+++ b/app/src/main/java/com/example/quiz/ListOfTypeOfBets.java
@@ -4,6 +4,7 @@ import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.ViewModel;
@@ -14,21 +15,16 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.animation.AnimationUtils;
-import android.view.animation.LayoutAnimationController;
-import android.widget.Adapter;
import android.widget.Button;
-import android.widget.LinearLayout;
-import android.widget.RadioButton;
-import android.widget.RadioGroup;
import android.widget.Toast;
import com.example.quiz.data.adapter.TypeOfBetAdapter;
import com.example.quiz.databinding.FragmentListOfTypeOfBetsBinding;
-import com.example.quiz.viewModel.BetViewModel;
import com.example.quiz.viewModel.SharedViewModel;
+import com.google.android.material.appbar.MaterialToolbar;
import java.util.ArrayList;
+import java.util.List;
import dagger.hilt.android.AndroidEntryPoint;
@@ -45,8 +41,6 @@ public class ListOfTypeOfBets extends Fragment {
private SharedViewModel shared;
- private BetViewModel viewModel;
-
private TypeOfBetAdapter adapter;
public ListOfTypeOfBets() {
@@ -62,6 +56,14 @@ public class ListOfTypeOfBets extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ AppCompatActivity activity = (AppCompatActivity) getActivity();
+ if(activity != null){
+ MaterialToolbar toolbar = activity.findViewById(R.id.toolbar);
+ activity.setSupportActionBar(toolbar);
+ if(activity.getSupportActionBar() != null){
+ activity.getSupportActionBar().setTitle("Liste des jeux");
+ }
+ }
}
@Override
@@ -73,33 +75,45 @@ public class ListOfTypeOfBets extends Fragment {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(
- getContext(),
- R.anim.layout_fad_in
- );
- binding.typeOfBetRecyclerView.setLayoutAnimation(controller);
- binding.typeOfBetRecyclerView.scheduleLayoutAnimation();
+ super.onViewCreated(view, savedInstanceState);
binding.typeOfBetRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
// ViewModels
- viewModel = new ViewModelProvider(this).get(BetViewModel.class);
+ //viewModel = new ViewModelProvider(this).get(BetViewModel.class);
shared = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
// ⚡ Initialiser l’adapter UNE SEULE FOIS
adapter = new TypeOfBetAdapter(new ArrayList<>());
adapter.setOnItemClickListener(type -> shared.setTypeOfBet(type));
binding.typeOfBetRecyclerView.setAdapter(adapter);
-
- // Charger les données
- viewModel.loadTypes(shared.betId.getValue()-1);
+ List types = List.of("Couple Gagnant", "Couple Place", "Tierce", "Quinte");
// Observer les résultats
- viewModel.types.observe(getViewLifecycleOwner(), types -> {
- if (types != null) {
- adapter.setTypes(types);
+ /*viewModel.types.observe(getViewLifecycleOwner(), type -> {
+ List types = List.of();
+ if(type == null){
+ return;
}
+ switch (type){
+ case TIERCE:
+ types = List.of("Couple Gagnant", "Couple Place", "Tierce");
+ case QUARTE:
+ types = List.of("Couple Gagnant", "Couple Place", "Tierce", "Quarte");
+ case QUINTE:
+ types = List.of("Couple Gagnant", "Couple Place", "Tierce", "Quinte");
+ break;
+ }
+ adapter.setTypes(types);
+ });*/
+ adapter.setTypes(types);
+ adapter.setOnItemClickListener(type -> {
+ shared.setTypeOfBet(type);
});
Button btnValidate = binding.btnValidate;
btnValidate.setOnClickListener(v->{
+ if(shared.typeOfBet == null){
+ Toast.makeText(getContext(),"Aucun Type de jeu choisi", Toast.LENGTH_SHORT).show();
+ return;
+ }
FragmentManager fragmentManager = getParentFragmentManager();
BetValidation betValidation = BetValidation.newInstance();
fragmentManager.beginTransaction()
@@ -107,6 +121,5 @@ public class ListOfTypeOfBets extends Fragment {
.addToBackStack(null)
.commit();
});
-
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/quiz/Login.java b/app/src/main/java/com/example/quiz/Login.java
index 698bc24..836b055 100644
--- a/app/src/main/java/com/example/quiz/Login.java
+++ b/app/src/main/java/com/example/quiz/Login.java
@@ -89,9 +89,9 @@ public class Login extends Fragment {
prefsHelper = SharedPrefsHelper.getInstance(getContext());
prefsHelper.save("username", binding.userNameInput.getText().toString());
FragmentManager fragmentManager = getParentFragmentManager();
- ListOFBets bets = ListOFBets.newInstance(binding.userNameInput.getText().toString());
+ ListOfReunions reunions = ListOfReunions.newInstance(binding.userNameInput.getText().toString());
fragmentManager.beginTransaction()
- .replace(R.id.nav_host_fragment_content_main, bets)
+ .replace(R.id.nav_host_fragment_content_main, reunions)
.commit();
}
});
diff --git a/app/src/main/java/com/example/quiz/PageQuiz.java b/app/src/main/java/com/example/quiz/PageQuiz.java
index 6a8efa9..83c9fc2 100644
--- a/app/src/main/java/com/example/quiz/PageQuiz.java
+++ b/app/src/main/java/com/example/quiz/PageQuiz.java
@@ -48,10 +48,10 @@ public class PageQuiz extends AppCompatActivity {
FragmentManager fragmentManager = getSupportFragmentManager();
if(prefsHelper.get("username") != null){
- ListOFBets bets = ListOFBets.newInstance(prefsHelper.get("username"));
+ ListOfReunions reunions = ListOfReunions.newInstance(prefsHelper.get("username"));
fragmentManager
.beginTransaction()
- .replace(R.id.nav_host_fragment_content_main, bets)
+ .replace(R.id.nav_host_fragment_content_main, reunions)
.commit();
}else{
Login login = Login.newInstance();
diff --git a/app/src/main/java/com/example/quiz/Questions.java b/app/src/main/java/com/example/quiz/Questions.java
deleted file mode 100644
index 975c6e0..0000000
--- a/app/src/main/java/com/example/quiz/Questions.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.example.quiz;
-
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.example.quiz.data.model.Question;
-import com.example.quiz.databinding.FragmentQuestionsBinding;
-import com.example.quiz.injection.QuestionViewModelFactory;
-import com.example.quiz.viewModel.QuestionViewModel;
-
-public class Questions extends Fragment {
-
- private FragmentQuestionsBinding binding;
-
- private QuestionViewModel viewModel;
-
- public Questions() {
- // Required empty public constructor
- }
-
- public static Questions newInstance(String username) {
- Questions fragment = new Questions();
- Bundle args = new Bundle();
- args.putString("ARG_USERNAME", username);
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- viewModel = new ViewModelProvider(this, QuestionViewModelFactory.getInstance()).get(QuestionViewModel.class);
- }
-
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- binding = FragmentQuestionsBinding.inflate(inflater, container, false);
- // Inflate the layout for this fragment
- return binding.getRoot();
- }
-
-
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- viewModel.startQuiz();
- viewModel.currentQuestion.observe(getViewLifecycleOwner(), new Observer() {
- @Override
- public void onChanged(Question question) {
- binding.questionText.setText(question.getQuestion());
- binding.answer1.setText(question.getAnswers().get(0));
- binding.answer2.setText(question.getAnswers().get(1));
- binding.answer3.setText(question.getAnswers().get(2));
- binding.answer4.setText(question.getAnswers().get(3));
- }
- });
- }
-
- @Override
- public void onStart() {
- super.onStart();
- binding.nextButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- viewModel.nextQuestion();
- }
- });
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/quiz/Second2Fragment.java b/app/src/main/java/com/example/quiz/Second2Fragment.java
deleted file mode 100644
index eceb1f8..0000000
--- a/app/src/main/java/com/example/quiz/Second2Fragment.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.example.quiz;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
-import androidx.navigation.fragment.NavHostFragment;
-
-import com.example.quiz.databinding.FragmentSecond2Binding;
-
-public class Second2Fragment extends Fragment {
-
- private FragmentSecond2Binding binding;
-
- @Override
- public View onCreateView(
- @NonNull LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState
- ) {
-
- binding = FragmentSecond2Binding.inflate(inflater, container, false);
- return binding.getRoot();
-
- }
-
- public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
- binding.buttonSecond.setOnClickListener(v ->
- NavHostFragment.findNavController(Second2Fragment.this)
- .navigate(R.id.action_Second2Fragment_to_First2Fragment)
- );
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- binding = null;
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/quiz/SecondFragment.java b/app/src/main/java/com/example/quiz/SecondFragment.java
deleted file mode 100644
index 918b95c..0000000
--- a/app/src/main/java/com/example/quiz/SecondFragment.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.example.quiz;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
-import androidx.navigation.fragment.NavHostFragment;
-
-import com.example.quiz.databinding.FragmentSecondBinding;
-
-public class SecondFragment extends Fragment {
-
- private FragmentSecondBinding binding;
-
- @Override
- public View onCreateView(
- @NonNull LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState
- ) {
-
- binding = FragmentSecondBinding.inflate(inflater, container, false);
- return binding.getRoot();
-
- }
-
- public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
- binding.buttonSecond.setOnClickListener(v ->
- NavHostFragment.findNavController(SecondFragment.this)
- .navigate(R.id.action_SecondFragment_to_FirstFragment)
- );
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- binding = null;
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/quiz/data/BetsBank.java b/app/src/main/java/com/example/quiz/data/BetsBank.java
deleted file mode 100644
index b9c223d..0000000
--- a/app/src/main/java/com/example/quiz/data/BetsBank.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.example.quiz.data;
-
-import com.example.quiz.data.model.Bet;
-import com.example.quiz.data.model.Horse;
-import com.example.quiz.data.model.Reunion;
-import com.example.quiz.data.model.TypeOfBet;
-
-import java.time.LocalDate;
-import java.util.Arrays;
-import java.util.List;
-
-public class BetsBank {
- public List getBet() {
- return Arrays.asList(
- new Bet(
- 1,
- "Course de chevaux",
- new Reunion(1,
- "Réunion ",
- LocalDate.of(2025,10,1),
- "Hippodrome Verssaille"
- ),
- Arrays.asList(
- new TypeOfBet(1, "Couplet", "2"),
- new TypeOfBet(2, "Tierce", "3"),
- new TypeOfBet(3, "Place", "1")
- ),
- LocalDate.of(2025,10,1),
- Arrays.asList(
- new Horse(1),
- new Horse(2),
- new Horse(3),
- new Horse(4)
- )
- ),
-
- new Bet(
- 2,
- "Course de chevaux 2",
- new Reunion(2,
- "Réunion 2",
- LocalDate.of(2025,10,1),
- "Hippodrome Bordeaux"
- ),
- Arrays.asList(
- new TypeOfBet(1, "Quarte", "4"),
- new TypeOfBet(2, "Quinte", "5"),
- new TypeOfBet(3, "Placé", "1")
- ),
- LocalDate.of(2025,10,1),
- Arrays.asList(
- new Horse(4),
- new Horse(5),
- new Horse(7),
- new Horse(6),
- new Horse(8),
- new Horse(9),
- new Horse(10),
- new Horse(11)
- )
- ),
- new Bet(
- 3,
- "Course de chevaux 3",
- new Reunion(2,
- "Réunion 2",
- LocalDate.of(2025,10,1),
- "Hippodrome Bordeaux"
- ),
- Arrays.asList(
- new TypeOfBet(1, "Quarte", "4"),
- new TypeOfBet(2, "Quinte", "5"),
- new TypeOfBet(3, "Placé", "1")
- ),
- LocalDate.of(2025,10,1),
- Arrays.asList(
- new Horse(10),
- new Horse(90),
- new Horse(45),
- new Horse(9)
- )
- ),
- new Bet(
- 4,
- "Course de chevaux 4",
- new Reunion(2,
- "Réunion 2",
- LocalDate.of(2025,10,1),
- "Hippodrome Bordeaux"
- ),
- Arrays.asList(
- new TypeOfBet(1, "Couple", "2"),
- new TypeOfBet(2, "Tierce", "3"),
- new TypeOfBet(3, "Quarte", "4")
- ),
- LocalDate.of(2025,10,1),
- Arrays.asList(
- new Horse(5),
- new Horse(33),
- new Horse(26),
- new Horse(99),
- new Horse(100),
- new Horse(101),
- new Horse(102),
- new Horse(103),
- new Horse(104),
- new Horse(105)
- )
- )
- );
- }
- public static BetsBank instance;
- public static BetsBank getInstance(){
- if(instance == null){
- instance = new BetsBank();
- }
- return instance;
- }
-}
diff --git a/app/src/main/java/com/example/quiz/data/QuestionsBank.java b/app/src/main/java/com/example/quiz/data/QuestionsBank.java
deleted file mode 100644
index 3384f21..0000000
--- a/app/src/main/java/com/example/quiz/data/QuestionsBank.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.example.quiz.data;
-import com.example.quiz.data.model.Question;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class QuestionsBank {
- public List getQuestions() {
- return Arrays.asList(
- new Question(
- "Who is the creator of Android?",
- Arrays.asList(
- "Andy Rubin",
- "Steve Wozniak",
- "Jake Wharton",
- "Paul Smith"
- ),
- 0
- ),
- new Question(
- "When did the first man land on the moon?",
- Arrays.asList(
- "1958",
- "1962",
- "1967",
- "1969"
- ),
- 3
- ),
- new Question(
- "What is the house number of The Simpsons?",
- Arrays.asList(
- "42",
- "101",
- "666",
- "742"
- ),
- 3
- ),
- new Question(
- "Who painteddid the Mona Lisa paint?",
- Arrays.asList(
- "Michelangelo",
- "Leonardo Da Vinci",
- "Raphael",
- "Caravaggio"
- ),
- 1
- ),
- new Question(
- "What is the country top-level domain of Belgium?",
- Arrays.asList(
- ".bg",
- ".bm",
- ".bl",
- ".be"
- ),
- 3
- )
- );
- }
- private static QuestionsBank instance;
- public static QuestionsBank getInstance() {
- if (instance == null) {
- instance = new QuestionsBank();
- }
- return instance;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/quiz/data/adapter/BetsAdapter.java b/app/src/main/java/com/example/quiz/data/adapter/BetsAdapter.java
index 13c5c0e..8f5252c 100644
--- a/app/src/main/java/com/example/quiz/data/adapter/BetsAdapter.java
+++ b/app/src/main/java/com/example/quiz/data/adapter/BetsAdapter.java
@@ -10,18 +10,19 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.quiz.R;
-import com.example.quiz.data.model.Bet;
+import com.example.quiz.data.model.Course;
+import com.example.quiz.viewModel.SharedViewModel;
import java.util.ArrayList;
import java.util.List;
public class BetsAdapter extends RecyclerView.Adapter {
- private List bets = new ArrayList<>();
+ private List bets = new ArrayList<>();
private onItemClickListener listener;
public interface onItemClickListener {
- void onItemClick(int position);
+ void onItemClick(Course bet);
}
public void setOnItemClickListener(onItemClickListener listener){
@@ -30,7 +31,7 @@ public class BetsAdapter extends RecyclerView.Adapter
- public void setBets(List bets){
+ public void setBets(List bets){
this.bets = bets;
notifyDataSetChanged();
}
@@ -44,12 +45,13 @@ public class BetsAdapter extends RecyclerView.Adapter
@Override
public void onBindViewHolder(@NonNull BetViewHolder holder, int position) {
- Bet bet = bets.get(position);
- holder.tvDate.setText(String.valueOf(bet.getDate()));
- holder.tvName.setText(String.valueOf(bet.getName()));
+ Course bet = bets.get(position);
+ holder.tvDate.setText(String.valueOf(bet.getDateDepartCourse()));
+ holder.tvName.setText(String.valueOf(bet.getLieu()));
+ holder.tvReunion.setText("Nom de la réunion");
holder.itemView.setOnClickListener(v->{
if(listener != null){
- listener.onItemClick(bet.getId());
+ listener.onItemClick(bet);
}
});
}
@@ -63,11 +65,12 @@ public class BetsAdapter extends RecyclerView.Adapter
}
static class BetViewHolder extends RecyclerView.ViewHolder{
- TextView tvName, tvDate;
+ TextView tvName, tvDate, tvReunion;
public BetViewHolder(@NonNull View itemView) {
super(itemView);
tvName = itemView.findViewById(R.id.tvName);
tvDate = itemView.findViewById(R.id.tvDate);
+ tvReunion = itemView.findViewById(R.id.tvReunion);
}
}
diff --git a/app/src/main/java/com/example/quiz/data/adapter/ReunionAdapter.java b/app/src/main/java/com/example/quiz/data/adapter/ReunionAdapter.java
new file mode 100644
index 0000000..113debc
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/adapter/ReunionAdapter.java
@@ -0,0 +1,72 @@
+package com.example.quiz.data.adapter;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.quiz.R;
+import com.example.quiz.data.model.Reunion;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ReunionAdapter extends RecyclerView.Adapter {
+
+ private List reunions = List.of();
+
+ private onItemClickListener listener;
+
+ public interface onItemClickListener {
+ void onItemClick(Reunion reunion);
+ }
+
+ public void setOnItemClickListener(onItemClickListener listener){
+ this.listener = listener;
+ }
+
+ public void setReunions(List reunions){
+ this.reunions = reunions;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public ReunionViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.item_reunion, parent, false);
+ return new ReunionViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ReunionViewHolder holder, int position){
+ Reunion reunion = reunions.get(position);
+
+ holder.reunionName.setText(String.valueOf(reunion.getNom()));
+ holder.reunionDate.setText(String.valueOf(reunion.getDate()));
+
+ holder.itemView.setOnClickListener(v -> {
+ if(listener != null){
+ listener.onItemClick(reunion);
+ }
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return reunions.size();
+ }
+
+ static class ReunionViewHolder extends RecyclerView.ViewHolder {
+ TextView reunionName, reunionDate;
+
+ public ReunionViewHolder(View itemView){
+ super(itemView);
+ reunionName = itemView.findViewById(R.id.reunionName);
+ reunionDate = itemView.findViewById(R.id.reunionDate);
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/data/adapter/TypeOfBetAdapter.java b/app/src/main/java/com/example/quiz/data/adapter/TypeOfBetAdapter.java
index f9106f4..e3cc766 100644
--- a/app/src/main/java/com/example/quiz/data/adapter/TypeOfBetAdapter.java
+++ b/app/src/main/java/com/example/quiz/data/adapter/TypeOfBetAdapter.java
@@ -14,24 +14,24 @@ import com.example.quiz.data.model.TypeOfBet;
import java.util.List;
public class TypeOfBetAdapter extends RecyclerView.Adapter {
- private List types;
+ private List types;
private onItemClickListener listener;
private int selectedPosition = -1;
public interface onItemClickListener{
- void onItemClick(TypeOfBet type);
+ void onItemClick(String type);
}
public void setOnItemClickListener(TypeOfBetAdapter.onItemClickListener listener){
this.listener = listener;
}
- public TypeOfBetAdapter(List types){
+ public TypeOfBetAdapter(List types){
this.types = types;
}
- public void setTypes(List types){
+ public void setTypes(List types){
this.types = types;
notifyDataSetChanged();
}
@@ -46,8 +46,8 @@ public class TypeOfBetAdapter extends RecyclerView.Adapter types;
-
- private List horses;
-
- public Reunion getReunion() {
- return reunion;
- }
-
- public void setReunion(Reunion reunion) {
- this.reunion = reunion;
- }
-
- public List getTypes() {
- return types;
- }
-
- public void setTypes(List types) {
- this.types = types;
- }
-
- public List getHorses() {
- return horses;
- }
-
- public void setHorses(List horses) {
- this.horses = horses;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public LocalDate getDate() {
- return date;
- }
-
- public void setDate(LocalDate date) {
- this.date = date;
- }
-
-
- public Bet(int id, String name, Reunion reunion, List types, LocalDate date, List horses) {
- this.id = id;
- this.name = name;
- this.reunion = reunion;
- this.types = types;
- this.date = date;
- this.horses = horses;
- }
-}
diff --git a/app/src/main/java/com/example/quiz/data/model/Cheval.java b/app/src/main/java/com/example/quiz/data/model/Cheval.java
new file mode 100644
index 0000000..d9f9ef6
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/model/Cheval.java
@@ -0,0 +1,57 @@
+package com.example.quiz.data.model;
+
+public class Cheval {
+ private int number;
+ private String nom;
+ private String numero;
+ private boolean nonPartant;
+ private boolean nonEcurie;
+
+ public Cheval(int number, String nom, String numero, boolean nonPartant, boolean nonEcurie) {
+ this.number = number;
+ this.nom = nom;
+ this.numero = numero;
+ this.nonPartant = nonPartant;
+ this.nonEcurie = nonEcurie;
+ }
+
+ public int getNumber() {
+ return number;
+ }
+
+ public void setNumber(int number) {
+ this.number = number;
+ }
+
+ public String getNom() {
+ return nom;
+ }
+
+ public void setNom(String nom) {
+ this.nom = nom;
+ }
+
+ public String getNumero() {
+ return numero;
+ }
+
+ public void setNumero(String numero) {
+ this.numero = numero;
+ }
+
+ public boolean isNonPartant() {
+ return nonPartant;
+ }
+
+ public void setNonPartant(boolean nonPartant) {
+ this.nonPartant = nonPartant;
+ }
+
+ public boolean isNonEcurie() {
+ return nonEcurie;
+ }
+
+ public void setNonEcurie(boolean nonEcurie) {
+ this.nonEcurie = nonEcurie;
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/data/model/Course.java b/app/src/main/java/com/example/quiz/data/model/Course.java
new file mode 100644
index 0000000..9292596
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/model/Course.java
@@ -0,0 +1,95 @@
+package com.example.quiz.data.model;
+
+import com.example.quiz.data.model.enums.CourseType;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+
+public class Course {
+ private int id;
+ private String numero;
+ private String nom;
+ private String lieu;
+ private LocalDateTime dateDepartCourse;
+ private String reunion;
+ private int nombreChevauxInscrits;
+
+ private List chevaux;
+
+ public Course(int id, String numero, String nom, String lieu, LocalDateTime dateDepartCourse, String reunion, int nombreChevauxInscrits, List chevaux) {
+ this.id = id;
+ this.numero = numero;
+ this.nom = nom;
+ this.lieu = lieu;
+ this.dateDepartCourse = dateDepartCourse;
+ this.reunion = reunion;
+ this.nombreChevauxInscrits = nombreChevauxInscrits;
+ this.chevaux = chevaux;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getNumero() {
+ return numero;
+ }
+
+ public void setNumero(String numero) {
+ this.numero = numero;
+ }
+
+ public String getNom() {
+ return nom;
+ }
+
+ public void setNom(String nom) {
+ this.nom = nom;
+ }
+
+ public String getLieu() {
+ return lieu;
+ }
+
+ public void setLieu(String lieu) {
+ this.lieu = lieu;
+ }
+
+ public LocalDateTime getDateDepartCourse() {
+ return dateDepartCourse;
+ }
+
+ public void setDateDepartCourse(LocalDateTime dateDepartCourse) {
+ this.dateDepartCourse = dateDepartCourse;
+ }
+
+ public String getReunion() {
+ return reunion;
+ }
+
+ public void setReunion(String reunion) {
+ this.reunion = reunion;
+ }
+
+ public int getNombreChevauxInscrits() {
+ return nombreChevauxInscrits;
+ }
+
+ public void setNombreChevauxInscrits(int nombreChevauxInscrits) {
+ this.nombreChevauxInscrits = nombreChevauxInscrits;
+ }
+
+ public List getChevaux() {
+ return chevaux;
+ }
+
+ public void setChevaux(List chevaux) {
+ this.chevaux = chevaux;
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/data/model/Hippodrome.java b/app/src/main/java/com/example/quiz/data/model/Hippodrome.java
new file mode 100644
index 0000000..9839d01
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/model/Hippodrome.java
@@ -0,0 +1,67 @@
+package com.example.quiz.data.model;
+
+public class Hippodrome {
+ private int id;
+ private String nom;
+ private String ville;
+ private String pays;
+ private int capacite;
+ private String description;
+
+ public Hippodrome(int id, String nom, String ville, String pays, int capacite, String description) {
+ this.id = id;
+ this.nom = nom;
+ this.ville = ville;
+ this.pays = pays;
+ this.capacite = capacite;
+ this.description = description;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getNom() {
+ return nom;
+ }
+
+ public void setNom(String nom) {
+ this.nom = nom;
+ }
+
+ public String getVille() {
+ return ville;
+ }
+
+ public void setVille(String ville) {
+ this.ville = ville;
+ }
+
+ public String getPays() {
+ return pays;
+ }
+
+ public void setPays(String pays) {
+ this.pays = pays;
+ }
+
+ public int getCapacite() {
+ return capacite;
+ }
+
+ public void setCapacite(int capacite) {
+ this.capacite = capacite;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/data/model/Horse.java b/app/src/main/java/com/example/quiz/data/model/Horse.java
deleted file mode 100644
index 32c50a1..0000000
--- a/app/src/main/java/com/example/quiz/data/model/Horse.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.example.quiz.data.model;
-
-public class Horse {
- private Integer number;
-
- public Horse(Integer number) {
- this.number = number;
- }
-
-
- public Integer getNumber() {
- return number;
- }
-
- public void setNumber(Integer number) {
- this.number = number;
- }
-}
diff --git a/app/src/main/java/com/example/quiz/data/model/Reunion.java b/app/src/main/java/com/example/quiz/data/model/Reunion.java
index 31494fe..b5eff14 100644
--- a/app/src/main/java/com/example/quiz/data/model/Reunion.java
+++ b/app/src/main/java/com/example/quiz/data/model/Reunion.java
@@ -4,22 +4,47 @@ import java.time.LocalDate;
public class Reunion {
private int id;
- private String name;
-
+ private String code;
+ private String nom;
private LocalDate date;
- private String address;
+ private int numero;
+ private Hippodrome hippodrome;
+ private int totalCourses;
- public Reunion(int id, String name,LocalDate date, String address) {
+ public Reunion(int id, String code, String nom, LocalDate date, int numero, Hippodrome hippodrome, int totalCourses) {
this.id = id;
- this.name = name;
+ this.code = code;
+ this.nom = nom;
this.date = date;
- this.address = address;
+ this.numero = numero;
+ this.hippodrome = hippodrome;
+ this.totalCourses = totalCourses;
+ }
+
+ public int getId() {
+ return id;
}
public void setId(int id) {
this.id = id;
}
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getNom() {
+ return nom;
+ }
+
+ public void setNom(String nom) {
+ this.nom = nom;
+ }
+
public LocalDate getDate() {
return date;
}
@@ -28,23 +53,27 @@ public class Reunion {
this.date = date;
}
- public int getId() {
- return id;
+ public int getNumero() {
+ return numero;
}
- public String getName() {
- return name;
+ public void setNumero(int numero) {
+ this.numero = numero;
}
- public void setName(String name) {
- this.name = name;
+ public Hippodrome getHippodrome() {
+ return hippodrome;
}
- public String getAddress() {
- return address;
+ public void setHippodrome(Hippodrome hippodrome) {
+ this.hippodrome = hippodrome;
}
- public void setAddress(String address) {
- this.address = address;
+ public int getTotalCourses() {
+ return totalCourses;
+ }
+
+ public void setTotalCourses(int totalCourses) {
+ this.totalCourses = totalCourses;
}
}
diff --git a/app/src/main/java/com/example/quiz/data/model/enums/CourseType.java b/app/src/main/java/com/example/quiz/data/model/enums/CourseType.java
new file mode 100644
index 0000000..d14e4fb
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/model/enums/CourseType.java
@@ -0,0 +1,7 @@
+package com.example.quiz.data.model.enums;
+
+public enum CourseType {
+ TIERCE,
+ QUARTE,
+ QUINTE
+}
diff --git a/app/src/main/java/com/example/quiz/data/remote/ApiClient.java b/app/src/main/java/com/example/quiz/data/remote/ApiClient.java
new file mode 100644
index 0000000..2931aed
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/remote/ApiClient.java
@@ -0,0 +1,63 @@
+package com.example.quiz.data.remote;
+
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import java.util.concurrent.TimeUnit;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+import dagger.hilt.InstallIn;
+import dagger.hilt.components.SingletonComponent;
+import okhttp3.OkHttpClient;
+import okhttp3.logging.HttpLoggingInterceptor;
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+@Module
+@InstallIn(SingletonComponent.class)
+public class ApiClient {
+ private static final String BASE_URL = "https://api.pmu.ml/api/v1/";
+
+ @Provides
+ @Singleton
+ public HttpLoggingInterceptor provideLoggingInterceptor(){
+ HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
+ @Override
+ public void log(@NonNull String s) {
+ Log.d("OkHttp", "log: "+s);
+ }
+ });
+ loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
+ return loggingInterceptor;
+ }
+
+ @Provides
+ @Singleton
+ public OkHttpClient provideOkHttpClient(HttpLoggingInterceptor loggingInterceptor){
+ return new OkHttpClient.Builder()
+ .addInterceptor(loggingInterceptor)
+ .connectTimeout(240, TimeUnit.SECONDS)
+ .readTimeout(240, TimeUnit.SECONDS)
+ .build();
+ }
+
+ @Provides
+ @Singleton
+ public Retrofit provideRetrofit(OkHttpClient okHttpClient){
+ return new Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .client(okHttpClient)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build();
+ }
+
+ @Provides
+ @Singleton
+ public ApiService provideApiService(Retrofit retrofit){
+ return retrofit.create(ApiService.class);
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/data/remote/ApiService.java b/app/src/main/java/com/example/quiz/data/remote/ApiService.java
new file mode 100644
index 0000000..d2be237
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/remote/ApiService.java
@@ -0,0 +1,17 @@
+package com.example.quiz.data.remote;
+
+import com.example.quiz.data.model.Course;
+import com.example.quiz.data.model.Reunion;
+
+import java.util.List;
+
+import retrofit2.Call;
+import retrofit2.http.GET;
+
+public interface ApiService {
+ @GET("reunions")
+ Call> getReunions();
+
+ @GET("course/avenir")
+ Call> getCourses();
+}
diff --git a/app/src/main/java/com/example/quiz/data/repository/BetRepository.java b/app/src/main/java/com/example/quiz/data/repository/BetRepository.java
deleted file mode 100644
index 7300cbb..0000000
--- a/app/src/main/java/com/example/quiz/data/repository/BetRepository.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.example.quiz.data.repository;
-
-import com.example.quiz.data.BetsBank;
-import com.example.quiz.data.model.Bet;
-import com.example.quiz.data.model.Horse;
-import com.example.quiz.data.model.Reunion;
-import com.example.quiz.data.model.TypeOfBet;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-@Singleton
-public class BetRepository {
- private BetsBank betsBank;
-
- @Inject
- public BetRepository(BetsBank betsBank){
- this.betsBank = betsBank;
- }
-
-
- public BetRepository(){
- this.betsBank = BetsBank.getInstance();
- }
-
- public List getAllBets(){
- return betsBank.getBet();
- }
-
- public Bet getBetById(int id){
- return betsBank.getBet().get(id);
- }
-
- public List getHorsesById(int id){
- return getBetById(id).getHorses();
- }
-
- public BetRepository getInstance(){
- return new BetRepository();
- }
-
- public String getBetNameById(int id){
- return getBetById(id).getName();
- }
-
- public List getTypeOfBetByBetId(int id){
- return getBetById(id).getTypes();
- }
-
- public Reunion getReunionByHorseId(int id){
- return getBetById(id).getReunion();
- }
-}
diff --git a/app/src/main/java/com/example/quiz/data/repository/CourseRepository.java b/app/src/main/java/com/example/quiz/data/repository/CourseRepository.java
new file mode 100644
index 0000000..807411d
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/repository/CourseRepository.java
@@ -0,0 +1,46 @@
+package com.example.quiz.data.repository;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+
+import com.example.quiz.data.model.Course;
+import com.example.quiz.data.remote.ApiService;
+import com.example.quiz.utils.Result;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class CourseRepository {
+ private ApiService apiService;
+
+ @Inject
+ public CourseRepository(ApiService apiService) {
+ this.apiService = apiService;
+ }
+
+ public LiveData>> getCourses() {
+ MutableLiveData>> liveCourses = new MutableLiveData>>();
+ liveCourses.setValue(Result.loading());
+ apiService.getCourses().enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if(response.isSuccessful()){
+ liveCourses.postValue(Result.success(response.body()));
+ }else{
+ liveCourses.postValue(Result.error(response.message()));
+ }
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable throwable) {
+ liveCourses.postValue(Result.error(throwable.getMessage()));
+ }
+ });
+ return liveCourses;
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/data/repository/QuestionRepository.java b/app/src/main/java/com/example/quiz/data/repository/QuestionRepository.java
deleted file mode 100644
index ff0e2e4..0000000
--- a/app/src/main/java/com/example/quiz/data/repository/QuestionRepository.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.example.quiz.data.repository;
-
-import com.example.quiz.data.QuestionsBank;
-import com.example.quiz.data.model.Question;
-
-import java.util.List;
-import java.util.Map;
-
-public class QuestionRepository {
- private QuestionsBank questionsBank;
-
- public QuestionRepository(){
- this.questionsBank = QuestionsBank.getInstance();
- }
-
- public List getQuestions(){
- return questionsBank.getQuestions();
- }
-
- public Object updateQuestionById(int id, Question question){
- Question myQuestion = questionsBank.getQuestions().get(id);
- if(question == null) return Map.of("error", "Cette question n'existe pas!");
- myQuestion.setQuestion(question.getQuestion()!=null?question.getQuestion():myQuestion.getQuestion());
- myQuestion.setAnswers(!question.getAnswers().isEmpty()?question.getAnswers():myQuestion.getAnswers());
- myQuestion.setIndexAnswer(question.getIndexAnswer() > 3?question.getIndexAnswer():myQuestion.getIndexAnswer());
- return Map.of("success", true);
- }
- public QuestionRepository getInstance(){
- return new QuestionRepository();
- }
-}
diff --git a/app/src/main/java/com/example/quiz/data/repository/ReunionRepository.java b/app/src/main/java/com/example/quiz/data/repository/ReunionRepository.java
new file mode 100644
index 0000000..dd6d751
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/repository/ReunionRepository.java
@@ -0,0 +1,49 @@
+package com.example.quiz.data.repository;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+
+import com.example.quiz.data.model.Reunion;
+import com.example.quiz.data.remote.ApiClient;
+import com.example.quiz.data.remote.ApiService;
+import com.example.quiz.utils.Result;
+import com.google.android.gms.common.api.Api;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class ReunionRepository {
+ private ApiService apiService;
+
+ @Inject
+ public ReunionRepository(ApiService apiService) {
+ this.apiService = apiService;
+ }
+
+ public LiveData>> getReunions(){
+ MutableLiveData>> liveReunionsData = new MutableLiveData<>();
+ liveReunionsData.setValue(Result.loading());
+ apiService.getReunions().enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if(response.isSuccessful()){
+ liveReunionsData.postValue(Result.success(response.body()));
+ }else{
+ liveReunionsData.postValue(Result.error(response.message()));
+ }
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable throwable) {
+ liveReunionsData.postValue(Result.error(throwable.getMessage()));
+ }
+ });
+ return liveReunionsData;
+ }
+
+}
diff --git a/app/src/main/java/com/example/quiz/data/repository/module/RepositoryModule.java b/app/src/main/java/com/example/quiz/data/repository/module/RepositoryModule.java
new file mode 100644
index 0000000..345a1c4
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/data/repository/module/RepositoryModule.java
@@ -0,0 +1,29 @@
+package com.example.quiz.data.repository.module;
+
+
+import com.example.quiz.data.remote.ApiService;
+import com.example.quiz.data.repository.CourseRepository;
+import com.example.quiz.data.repository.ReunionRepository;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+import dagger.hilt.InstallIn;
+import dagger.hilt.components.SingletonComponent;
+
+@Module
+@InstallIn(SingletonComponent.class)
+public class RepositoryModule {
+ @Provides
+ @Singleton
+ public ReunionRepository provideReunionRepository(ApiService apiService){
+ return new ReunionRepository(apiService);
+ }
+
+ @Provides
+ @Singleton
+ public CourseRepository provideCourseRepository(ApiService apiService){
+ return new CourseRepository(apiService);
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/injection/QuestionViewModelFactory.java b/app/src/main/java/com/example/quiz/injection/QuestionViewModelFactory.java
deleted file mode 100644
index bf32e14..0000000
--- a/app/src/main/java/com/example/quiz/injection/QuestionViewModelFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.example.quiz.injection;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.ViewModel;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.example.quiz.data.repository.QuestionRepository;
-import com.example.quiz.viewModel.QuestionViewModel;
-
-public class QuestionViewModelFactory implements ViewModelProvider.Factory {
- private QuestionRepository questionRepository;
- private static QuestionViewModelFactory factory;
-
- public static QuestionViewModelFactory getInstance(){
- if(factory == null){
- synchronized (QuestionViewModel.class){
- if(factory == null){
- factory = new QuestionViewModelFactory();
- }
- }
- }
- return factory;
- }
-
- private QuestionViewModelFactory(){
- this.questionRepository = new QuestionRepository();
- }
-
- @Override
- @NonNull
- public T create(@NonNull Class modelClass){
- if(modelClass.isAssignableFrom(QuestionViewModel.class)){
- return (T) new QuestionViewModel(questionRepository);
- }
- throw new IllegalArgumentException("Unknown ViewModel class");
- }
-
-}
diff --git a/app/src/main/java/com/example/quiz/utils/Result.java b/app/src/main/java/com/example/quiz/utils/Result.java
new file mode 100644
index 0000000..7db102c
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/utils/Result.java
@@ -0,0 +1,28 @@
+package com.example.quiz.utils;
+
+public class Result {
+
+ public enum Status { SUCCESS, ERROR, LOADING }
+
+ public final Status status;
+ public final T data;
+ public final String message;
+
+ private Result(Status status, T data, String message) {
+ this.status = status;
+ this.data = data;
+ this.message = message;
+ }
+
+ public static Result success(T data) {
+ return new Result<>(Status.SUCCESS, data, null);
+ }
+
+ public static Result error(String msg) {
+ return new Result<>(Status.ERROR, null, msg);
+ }
+
+ public static Result loading() {
+ return new Result<>(Status.LOADING, null, null);
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/viewModel/BetViewModel.java b/app/src/main/java/com/example/quiz/viewModel/BetViewModel.java
deleted file mode 100644
index 6369da9..0000000
--- a/app/src/main/java/com/example/quiz/viewModel/BetViewModel.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.example.quiz.viewModel;
-
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-
-import com.example.quiz.data.model.Bet;
-import com.example.quiz.data.model.Horse;
-import com.example.quiz.data.model.Reunion;
-import com.example.quiz.data.model.TypeOfBet;
-import com.example.quiz.data.repository.BetRepository;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import dagger.hilt.android.lifecycle.HiltViewModel;
-
-
-@HiltViewModel
-public class BetViewModel extends ViewModel {
- private BetRepository betRepository;
-
- public MutableLiveData> bets = new MutableLiveData>();
-
- public MutableLiveData betName = new MutableLiveData();
-
- public MutableLiveData> horses = new MutableLiveData<>();
-
- public MutableLiveData> types = new MutableLiveData<>();
-
- public MutableLiveData reunion = new MutableLiveData();
-
-
-
- @Inject
- public BetViewModel(BetRepository betRepository){
- this.betRepository = betRepository;
- }
-
- public void loadBets(){
- bets.setValue(betRepository.getAllBets());
- }
-
- public void loadHorses(int id){
- horses.setValue(betRepository.getHorsesById(id));
- }
-
- public void getBetNameById(int id){
- betName.setValue(betRepository.getBetNameById(id));
- }
-
- public void loadTypes(int id){
- types.setValue(betRepository.getBetById(id).getTypes());
- }
-
-
- public void loadReunionById(int id){
- reunion.setValue(betRepository.getReunionByHorseId(id));
- }
-
-}
diff --git a/app/src/main/java/com/example/quiz/viewModel/CourseViewModel.java b/app/src/main/java/com/example/quiz/viewModel/CourseViewModel.java
new file mode 100644
index 0000000..716758c
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/viewModel/CourseViewModel.java
@@ -0,0 +1,33 @@
+package com.example.quiz.viewModel;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.ViewModel;
+
+import com.example.quiz.data.model.Course;
+import com.example.quiz.data.repository.CourseRepository;
+import com.example.quiz.utils.Result;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import dagger.hilt.android.lifecycle.HiltViewModel;
+
+@HiltViewModel
+public class CourseViewModel extends ViewModel {
+ private final CourseRepository courseRepository;
+
+ private LiveData>> courses;
+
+ @Inject
+ public CourseViewModel(CourseRepository courseRepository){
+ this.courseRepository = courseRepository;
+ }
+
+ public LiveData>> getCourses(){
+ if(courses == null){
+ courses = courseRepository.getCourses();
+ }
+ return courses;
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/viewModel/QuestionViewModel.java b/app/src/main/java/com/example/quiz/viewModel/QuestionViewModel.java
deleted file mode 100644
index f750228..0000000
--- a/app/src/main/java/com/example/quiz/viewModel/QuestionViewModel.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.example.quiz.viewModel;
-
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-
-import com.example.quiz.data.model.Question;
-import com.example.quiz.data.repository.QuestionRepository;
-
-import java.util.Objects;
-
-public class QuestionViewModel extends ViewModel {
- private QuestionRepository questionRepository;
-
-
- public MutableLiveData currentQuestion = new MutableLiveData();
- public MutableLiveData score = new MutableLiveData();
- public MutableLiveData isLastQuestion = new MutableLiveData(false);
-
- public QuestionViewModel(QuestionRepository questionRepository){
- this.questionRepository = questionRepository;
- }
-
- public void startQuiz(){
- currentQuestion.setValue(questionRepository.getQuestions().get(0));
- score.setValue(0);
- }
-
- public Boolean isAnswerValid(int answerIndex){
- return answerIndex == Objects.requireNonNull(currentQuestion.getValue()).getIndexAnswer();
- }
-
- public void nextQuestion(){
- int currentQuestionIndex = questionRepository.getQuestions().indexOf(currentQuestion.getValue());
- if(currentQuestionIndex == questionRepository.getQuestions().size()-1){
- isLastQuestion.setValue(true);
- }else{
- currentQuestion.setValue(questionRepository.getQuestions().get(currentQuestionIndex+1));
- }
- }
-
-}
diff --git a/app/src/main/java/com/example/quiz/viewModel/ReunionViewModel.java b/app/src/main/java/com/example/quiz/viewModel/ReunionViewModel.java
new file mode 100644
index 0000000..835fdf8
--- /dev/null
+++ b/app/src/main/java/com/example/quiz/viewModel/ReunionViewModel.java
@@ -0,0 +1,33 @@
+package com.example.quiz.viewModel;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.ViewModel;
+
+import com.example.quiz.data.model.Reunion;
+import com.example.quiz.data.repository.ReunionRepository;
+import com.example.quiz.utils.Result;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import dagger.hilt.android.lifecycle.HiltViewModel;
+
+@HiltViewModel
+public class ReunionViewModel extends ViewModel {
+ private final ReunionRepository reunionRepository;
+
+ private LiveData>> reunions;
+
+ @Inject
+ public ReunionViewModel(ReunionRepository reunionRepository) {
+ this.reunionRepository = reunionRepository;
+ }
+
+ public LiveData>> getReunions() {
+ if (reunions == null) {
+ reunions = reunionRepository.getReunions();
+ }
+ return reunions;
+ }
+}
diff --git a/app/src/main/java/com/example/quiz/viewModel/SharedViewModel.java b/app/src/main/java/com/example/quiz/viewModel/SharedViewModel.java
index 1e57ee6..20a7809 100644
--- a/app/src/main/java/com/example/quiz/viewModel/SharedViewModel.java
+++ b/app/src/main/java/com/example/quiz/viewModel/SharedViewModel.java
@@ -3,6 +3,8 @@ package com.example.quiz.viewModel;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
+import com.example.quiz.data.model.Course;
+import com.example.quiz.data.model.Reunion;
import com.example.quiz.data.model.TypeOfBet;
import javax.inject.Inject;
@@ -12,13 +14,19 @@ import dagger.hilt.android.lifecycle.HiltViewModel;
public class SharedViewModel extends ViewModel {
- public MutableLiveData betId = new MutableLiveData();
- public MutableLiveData typeOfBet = new MutableLiveData();
+ public MutableLiveData selectedReunion = new MutableLiveData();
+ public MutableLiveData selectedCourse = new MutableLiveData();
+ public MutableLiveData typeOfBet = new MutableLiveData();
- public void setBetId(int id){
- betId.setValue(id);
+
+ public void setSelectedReunion(Reunion reunion){
+ selectedReunion.setValue(reunion);
}
- public void setTypeOfBet(TypeOfBet type){
+
+ public void setSelectedCourse(Course course){
+ selectedCourse.setValue(course);
+ }
+ public void setTypeOfBet(String type){
typeOfBet.setValue(type);
}
}
diff --git a/app/src/main/res/drawable/course_item_border.xml b/app/src/main/res/drawable/course_item_border.xml
index 7fdc8f6..950129a 100644
--- a/app/src/main/res/drawable/course_item_border.xml
+++ b/app/src/main/res/drawable/course_item_border.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/app/src/main/res/drawable/horse_with_creative_hair_raising_feet_right_side_view_svgrepo_com.xml b/app/src/main/res/drawable/horse_with_creative_hair_raising_feet_right_side_view_svgrepo_com.xml
new file mode 100644
index 0000000..4ca9500
--- /dev/null
+++ b/app/src/main/res/drawable/horse_with_creative_hair_raising_feet_right_side_view_svgrepo_com.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/number_background.xml b/app/src/main/res/drawable/number_background.xml
index d816546..3461306 100644
--- a/app/src/main/res/drawable/number_background.xml
+++ b/app/src/main/res/drawable/number_background.xml
@@ -1,5 +1,5 @@
+ android:shape="rectangle">
diff --git a/app/src/main/res/drawable/number_selected_background.xml b/app/src/main/res/drawable/number_selected_background.xml
index d772656..4630428 100644
--- a/app/src/main/res/drawable/number_selected_background.xml
+++ b/app/src/main/res/drawable/number_selected_background.xml
@@ -1,5 +1,5 @@
+ android:shape="rectangle">
diff --git a/app/src/main/res/layout/fragment_list_o_f_betting.xml b/app/src/main/res/layout/fragment_list_o_f_betting.xml
index 5e32adb..60261d6 100644
--- a/app/src/main/res/layout/fragment_list_o_f_betting.xml
+++ b/app/src/main/res/layout/fragment_list_o_f_betting.xml
@@ -9,37 +9,12 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:padding="8dp"
+ android:padding="10dp"
android:background="@color/white">
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_list_of_reunions.xml b/app/src/main/res/layout/fragment_list_of_reunions.xml
new file mode 100644
index 0000000..551d9ac
--- /dev/null
+++ b/app/src/main/res/layout/fragment_list_of_reunions.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_list_of_type_of_bets.xml b/app/src/main/res/layout/fragment_list_of_type_of_bets.xml
index ded0d3d..2ab508a 100644
--- a/app/src/main/res/layout/fragment_list_of_type_of_bets.xml
+++ b/app/src/main/res/layout/fragment_list_of_type_of_bets.xml
@@ -12,17 +12,19 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
+ android:paddingTop="10dp"
>
diff --git a/app/src/main/res/layout/fragment_questions.xml b/app/src/main/res/layout/fragment_questions.xml
deleted file mode 100644
index 898e633..0000000
--- a/app/src/main/res/layout/fragment_questions.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_second.xml b/app/src/main/res/layout/fragment_second.xml
deleted file mode 100644
index d074310..0000000
--- a/app/src/main/res/layout/fragment_second.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_second2.xml b/app/src/main/res/layout/fragment_second2.xml
deleted file mode 100644
index c876669..0000000
--- a/app/src/main/res/layout/fragment_second2.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_bet.xml b/app/src/main/res/layout/item_bet.xml
index 69e295c..622666d 100644
--- a/app/src/main/res/layout/item_bet.xml
+++ b/app/src/main/res/layout/item_bet.xml
@@ -1,5 +1,5 @@
-
-
+
+
+
+
-
-
-
+ android:orientation="vertical">
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_reunion.xml b/app/src/main/res/layout/item_reunion.xml
new file mode 100644
index 0000000..0547d30
--- /dev/null
+++ b/app/src/main/res/layout/item_reunion.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/type_of_bet_item.xml b/app/src/main/res/layout/type_of_bet_item.xml
index 7d9a1d8..5c615de 100644
--- a/app/src/main/res/layout/type_of_bet_item.xml
+++ b/app/src/main/res/layout/type_of_bet_item.xml
@@ -14,7 +14,7 @@
diff --git a/build.gradle.kts b/build.gradle.kts
index 67b27d9..9e59724 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -3,4 +3,5 @@ plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.google.android.libraries.mapsplatform.secrets.gradle.plugin) apply false
id("com.google.dagger.hilt.android") version "2.51" apply false
+ alias(libs.plugins.kotlin.android) apply false
}
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 099de00..e55fc32 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -5,33 +5,45 @@ junit = "4.13.2"
junitVersion = "1.3.0"
espressoCore = "3.7.0"
appcompat = "1.7.1"
+kotlinxCoroutinesAndroid = "1.8.1"
material = "1.13.0"
constraintlayout = "2.2.1"
navigationFragment = "2.6.0"
navigationUi = "2.6.0"
googleAndroidLibrariesMapsplatformSecretsGradlePlugin = "2.0.1"
+okhttp = "4.12.0"
playServicesMaps = "18.1.0"
recyclerviewV7 = "28.0.0"
+retrofit = "2.11.0"
rxandroid = "1.2.1"
rxjava = "1.3.8"
+kotlin = "1.9.24"
+coreKtx = "1.17.0"
[libraries]
+converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hiltAndroid" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
+kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesAndroid" }
+logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment", version.ref = "navigationFragment" }
navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "navigationUi" }
+okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
play-services-maps = { group = "com.google.android.gms", name = "play-services-maps", version.ref = "playServicesMaps" }
recyclerview-v7 = { module = "com.android.support:recyclerview-v7", version.ref = "recyclerviewV7" }
+retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
rxandroid = { module = "io.reactivex:rxandroid", version.ref = "rxandroid" }
rxjava = { module = "io.reactivex:rxjava", version.ref = "rxjava" }
+core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
google-android-libraries-mapsplatform-secrets-gradle-plugin = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "googleAndroidLibrariesMapsplatformSecretsGradlePlugin" }
+kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }