/// <summary> /// Fonction retournant une liste de dons stockés dont l'objet est de type M, triés selon la propriété dont on a le get en argument /// </summary> /// <typeparam name="T">Type de l'élément à comparer</typeparam> /// <typeparam name="M">Type de l'objet du don. Par exemple Materiel</typeparam> /// <param name="fonctionObtentionPropriete">fonction donnant la propriété à comparer </param> /// <param name="lieuStockage">Instance du lieu de stockage dans laquelle chercher</param> /// <returns>liste triée de dons stockés</returns> public static List <Don> TriLieuStockage <M, T>(LieuStockage lieuStockage, FonctionObtentionProprieteDon <T> fonctionObtentionPropriete) where T : IComparable <T> where M : Materiel { List <Don> donsStockes = lieuStockage.TrouverDon <M>(don => don.LieuStockageDon == lieuStockage); donsStockes.Sort((x, y) => fonctionObtentionPropriete(x).CompareTo(fonctionObtentionPropriete(y))); return(donsStockes); }
/// <summary> /// Fonction demandant à l'utilisateur de choisir une instance de lieu de stockage, puis retournant une liste de dons stockés dedans dont l'objet est de type M, triés selon la propriété dont on a le get en argument /// </summary> /// <typeparam name="T">Type de l'élément à comparer</typeparam> /// <typeparam name="M">Type de l'objet du don. Par exemple Materiel</typeparam> /// <param name="message">Message à afficher avant la liste d'objets</param> /// <param name="fonctionObtentionPropriete"></param> public static void sousMenuTriLieuStockage <M, T>(string message, FonctionObtentionProprieteDon <T> fonctionObtentionPropriete) where T : IComparable <T> where M : Materiel { LieuStockage lieuStockageDon = InteractionUtilisateur.RechercherUnElement(Recherche.RechercheParNomLieuStockageType <LieuStockage>, true, "nom (Ne rien entrer les affichera tous.)"); InteractionUtilisateur.ListerObjets <Don>(message, TriLieuStockage <M, T>(lieuStockageDon, fonctionObtentionPropriete)); }
/// <summary> /// Trouve une personne par type et par nom /// </summary> /// <typeparam name="T">Type de personnes : Adhérents, donateurs, bénéficiares...</typeparam> /// <param name="nomCherche">nom recherché</param> /// <returns>Liste de résultats</returns> public static List <T> RechercheParNomLieuStockageType <T>(string nomCherche) where T : LieuStockage { return(LieuStockage.TrouverInstance <T>(objet => objet.Nom.Contains(nomCherche))); }
public static void MenuStatistiques() { sousMenu afficherStatistiqueChoisie = InteractionUtilisateur.DemanderChoixObjet <sousMenu>("Menu :", new sousMenu[] { () => Console.WriteLine(LieuStockage.MoyenneDureeStockageGenerale()), () => Console.WriteLine(DepotVente.MoyennePrixGenerale()), () => Console.WriteLine(Beneficiaire.MoyenneAge()), () => Console.WriteLine(Beneficiaire.Count), () => Console.WriteLine(Donateur.Count), () => Console.WriteLine(Adherent.Count), () => Console.WriteLine(Don.CountTraites <Materiel>()), () => Console.WriteLine(Recherche.RechercheDonParStatutType <Materiel>("accepte").Count), () => Console.WriteLine(Don.CountTraites <ObjetVolumineux>(true) == 0 ? 0 :Don.CountTraites <ObjetVolumineux>(true, new Don.StatutDon[] { Don.StatutDon.Accepte, Don.StatutDon.Stocke }) / Don.CountTraites <ObjetVolumineux>(true)), Tri.AfficherPrincipalesCategoriesEnStock, Rien }, new string[] { "Obtenir la moyenne de temps entre la reception et le retrait des dons", "Obtenir la moyenne de prix dans les dépot-ventes", "Obtenir la moyenne d'âge des bénéficiaires", "Obtenir le nombre de bénéficiaires", "Obtenir le nombre de donateur", "Obtenir le nombre d'adhérents", "Obtenir le nombre de propositions de dons", "Obtenir le nombre de dons acceptés", "Obtenir le ratio de propositions d'objets volumineux acceptées par rapport aux reçues", "Obtenir les principales catégories d’articles en stock", "Retour" }); //TODO Volume des ventes ventilé suivant les destinations possibles... Pas compris l'instruction. //On lance la fonction d'affichage de statistique choisie (vive les delegate parce qu'on a pas a faire un gros switch tout moche c'est formidable) afficherStatistiqueChoisie(); }