Ejemplo n.º 1
0
        public ActionResult Index(String sortType)
        {
            List <BO.Race> result;

            switch (sortType)
            {
            case "BY_TITLE":
                // On passe le delegate en paramètres
                var service = new MgtRace(TrierParTitre);
                result = service.SortByTitle();
                break;

            case "BY_DATE":
                // On passe l'expression lambda en paramètres
                result = serviceRace.SortByDateStart();
                break;

            case "BY_TOWN":
                // On passe l'expression lambda en paramètres
                result = serviceRace.SortByTown((BO.Race r1, BO.Race r2) =>
                {
                    return(r1.Town.CompareTo(r2.Town));
                });
                break;

            case "BY_LEVEL":
                // On passe l'expression lambda en paramètres
                result = serviceRace.SortByLevel((BO.Race r1, BO.Race r2) =>
                {
                    return(r1.Difficulte.Libelle.CompareTo(r2.Difficulte.Libelle));
                });
                break;

            case "BY_CATEGORYRACE":
                // On passe l'expression lambda en paramètres
                result = serviceRace.SortByCategoryRace((BO.Race r1, BO.Race r2) =>
                {
                    return(r1.CategoryRace.Title.CompareTo(r2.CategoryRace.Title));
                });
                break;

            case "DEFAULT":
            default:
                result = serviceRace.SortByDateStart();
                break;
            }

            // #### CHARGEMENT DES DONNEES EN ASYNCHRONE ####
            // Si on rend l'action Index asynchrone, avec :
            // => public async Task<ActionResult> Index(SortType sortType = SortType.DEFAULT) { CODE }
            // On va pouvoir charger les éléments en BDD en asynchrone via la ligne ci-dessous :
            //result = await serviceRace.GetAllRaceAsync();

            // Pour pouvoir charger les données en asynchrone et faire une animation visuelle,
            // il faudra créer une nouvelle action 'LoadRace()' qui fasse uniquement le chargement asynchrone
            // des données et l'appeler avec Ajax (jQuery) :
            // $.ajax(
            //      url: '/Race/LoadRace'
            //      beforeSend: function () { // lancer l'animation visuel }
            // ).success(function (data) {
            //      // Mettre les données dans la liste grâce à 'data'
            // }).error(function (data) {
            //      // Afficher une erreur (pop-up) ou laisser la liste vide : aucun résultat trouvé
            // }).complete(function (data) {
            //      // Arrêter l'animation
            // });
            // #### CHARGEMENT DES DONNEES EN ASYNCHRONE ####

            return(View(result.ToModels(true)));
        }