package com.pam.codenamehippie.ui;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.util.Log;
import android.widget.ExpandableListView;
import com.pam.codenamehippie.R;
import com.pam.codenamehippie.http.exception.HttpReponseException;
import com.pam.codenamehippie.modele.AlimentaireModele;
import com.pam.codenamehippie.modele.OrganismeModele;
import com.pam.codenamehippie.modele.UtilisateurModele;
import com.pam.codenamehippie.modele.depot.AlimentaireModeleDepot;
import com.pam.codenamehippie.modele.depot.DepotManager;
import com.pam.codenamehippie.modele.depot.FiltreDeListe;
import com.pam.codenamehippie.modele.depot.ObservateurDeDepot;
import com.pam.codenamehippie.ui.adapter.ListeMarchandisesDisponiblesAdapter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Catherine on 2016-01-21.
* <p>
* Activité pour faire afficher la liste des marchandises disponibles (pas google maps)
* </p>
*/
public class ListeMarchandisesDisponiblesActivity extends HippieActivity
implements ObservateurDeDepot<AlimentaireModele> {
private static final String TAG = ListeMesReservationsActivity.class.getSimpleName();
private ListeMarchandisesDisponiblesAdapter listeMarchandisesDisponiblesAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.liste_marchandise_dispo);
AlimentaireModeleDepot alimentaireModeleDepot = DepotManager.getInstance()
.getAlimentaireModeleDepot();
// Filtre pour récupérer les données pour les marchandises dans le parent
// Parent = liste_marchandise_dispo_group (le layout)
ArrayList<AlimentaireModele> modelesGroup = new ArrayList<>();
// Filtre pour récupérer les données des entreprises dans l'enfant
// Enfant = liste_marchandise_dispo_details
ArrayList<AlimentaireModele> modelesDetails = new ArrayList<>();
UtilisateurModele uc = this.authentificateur.getUtilisateur();
OrganismeModele organisme = (uc != null) ? uc.getOrganisme() : null;
// On va chercher l'expendable listView
ExpandableListView listView =
(ExpandableListView) this.findViewById(R.id.marchandise_dispo);
this.listeMarchandisesDisponiblesAdapter =
new ListeMarchandisesDisponiblesAdapter(this, alimentaireModeleDepot, organisme);
// On set l'adapter pour la liste.
listView.setAdapter(this.listeMarchandisesDisponiblesAdapter);
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
AlimentaireModeleDepot alimentaireModeleDepot = DepotManager.getInstance()
.getAlimentaireModeleDepot();
// Filtre pour récupérer les items dont le statut est Disponible
alimentaireModeleDepot.setFiltreDeListe(new FiltreDeListe<AlimentaireModele>() {
@Override
public boolean appliquer(AlimentaireModele item) {
String statut = item.getStatut();
return (statut.equalsIgnoreCase("Disponible"));
}
});
alimentaireModeleDepot.peuplerListeDonDispo();
}
@Override
public void surDebutDeRequete() {
this.afficherLaProgressBar();
}
@Override
public void surChangementDeDonnees(List<AlimentaireModele> modeles) {
this.listeMarchandisesDisponiblesAdapter.setGroupItems(modeles);
}
@Override
public void surFinDeRequete() {
this.cacherLaProgressbar();
}
@Override
public void surErreur(IOException e) {
Snackbar snackbar;
if (e instanceof HttpReponseException) {
Integer code = ((HttpReponseException) e).getCode();
switch (code) {
case 404:
snackbar = Snackbar.make(this.viewSwitcher, R.string.error_http_404,
Snackbar.LENGTH_SHORT);
break;
case 409:
snackbar = Snackbar.make(this.viewSwitcher, "Conflit: déjà reservé",
Snackbar.LENGTH_SHORT);
break;
case 500:
snackbar = Snackbar.make(this.viewSwitcher, R.string.error_http_500,
Snackbar.LENGTH_SHORT);
break;
default:
snackbar = Snackbar.make(this.viewSwitcher, R.string.error_connection,
Snackbar.LENGTH_SHORT);
break;
}
} else {
snackbar = Snackbar.make(this.viewSwitcher, R.string.error_connection,
Snackbar.LENGTH_SHORT);
}
snackbar.show();
Log.e(TAG, "Requête échouée", e);
}
}