using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Reflection; using System.Xml; using System.Xml.Serialization; using CG67.FicheCollege.Domaine; using CG67.FicheCollege.Entrepot; using CG67.FicheCollege.Interface; using System.Collections; namespace CG67.FicheCollege.Service { /// /// Une méthode est déclarée pour chaque Entrepot, ceci permet l'appel en static depuis n'importe où /// y compris depuis une page ASP. /// [DataObject] public static class ServiceFiche { public static IList GetActionEducativeByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotActionEducative().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetClasseDecouverteByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotClasseDecouverte().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetATCByRNE(string codeRNE) { try { return EntrepotFactory.GetEntrepotATC().GetByCodeRNE(codeRNE); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetContratAideByRNE(string codeRNE) { try { return EntrepotFactory.GetEntrepotContratAide().GetByCodeRNE(codeRNE); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetBilinguismeByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotBilinguisme().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static Dotation GetDotationByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotDotation().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetEquipementByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotEquipement().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetInvestissementByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotInvestissement().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetEffectifDetailByCodeRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotEffectifDetail().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static Logement GetLogementByRNE(string codeRNE) { try { return EntrepotFactory.GetEntrepotLogement().GetByCodeRNE(codeRNE); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static MCG GetMCGByRNE(string codeRNE) { try { return EntrepotFactory.GetEntrepotMCG().GetByCodeRNE(codeRNE); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetProjetPiloteByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotProjetPilote().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetRestaurationExterneByRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotRestaurationExterne().GetByCodeRNEAndAnnee(codeRNE, annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static IList GetContactByRNE(string codeRNE) { try { return EntrepotFactory.GetEntrepotContact().GetByCodeRNE(codeRNE); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static ChiffresSignificatifs GetChiffresSignificatifsByAnnee(int annee) { try { return EntrepotFactory.GetEntrepotChiffresSignificatifs().GetByAnnee(annee); } catch (Exception erreur) { throw new Exception(erreur.ToString()); } } public static Commentaires GetCommentairesByCodeRNE(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotCommentaires().GetByCodeRNEAndAnnee(codeRNE, annee); } catch { throw; } } public static Restauration GetRestaurationByCodeRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotRestauration().GetByRNEAndAnnee(codeRNE, annee); } catch { throw; } } public static IList GetProgTravauxByCodeRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotProgTravaux().GetByCodeRNEAndAnnee(codeRNE, annee); } catch { throw; } } public static IList GetAllEtablissement() { try { return EntrepotFactory.GetEntrepotEtablissement().GetAll(); } catch { throw; } } public static Etablissement GetEtablissementByCodeRNEAndAnnee(string codeRNE, int annee) { try { return EntrepotFactory.GetEntrepotEtablissement().GetByCodeRNEAndAnnee(codeRNE, annee); } catch { throw; } } private static XmlNode GetXml(Object aSerialiser,XmlDocument document) { XmlNode resultat = document.CreateElement(aSerialiser.GetType().Name); foreach (PropertyInfo pi in aSerialiser.GetType().GetProperties()) { if (pi.PropertyType.IsSerializable) { object valeur = pi.GetValue(aSerialiser, null); resultat.AppendChild(document.CreateElement(pi.Name)).InnerXml = valeur == null ? string.Empty : valeur.ToString() ; } } return resultat; } static XmlNode Serializer(Object objet, XmlDocument doc) { XmlNode resultat = doc.CreateElement(objet.GetType().Name); foreach (PropertyInfo pi in objet.GetType().GetProperties()) { // Si la propriété comporte une méthode "count" je considère c'est une Liste if (pi.GetValue(objet, null) != null) { MethodInfo mi = pi.GetValue(objet, null).GetType().GetMethod("get_Count"); if (mi != null) { object objListe = pi.GetValue(objet, null); int nb = (int)(mi.Invoke(objListe, null)); // a revoir XmlElement element = doc.CreateElement(pi.Name); // element.Normalize(); XmlNode item = resultat.AppendChild(element); for (int i = 0; i < nb; i++) { // on sérialise tous les items de la liste object obj = objListe.GetType().GetMethod("get_Item").Invoke(objListe, new Object[] { i }); item.AppendChild(Serializer(obj, doc)); } } else // c'est pas une Liste { switch (pi.GetValue(objet, null).GetType().Name) { // si c'est une type de "base" on l'affiche case "String": case "Int16": case "Int32": case "Double": case "Single": case "Boolean": resultat.AppendChild(doc.CreateElement(pi.Name)).InnerXml = pi.GetValue(objet, null).ToString(); break; default: // sinon on le décompose recursivement resultat.AppendChild(Serializer(pi.GetValue(objet, null), doc)); break; } } } } return resultat; } public static XmlNode GetFicheCollege(string codeRNE, int annee) { XmlDocument resultat = new XmlDocument(); XmlNode xmlCollege = resultat.AppendChild(resultat.CreateElement("college")); Etablissement etablissement = GetEtablissementByCodeRNEAndAnnee(codeRNE, annee); xmlCollege.AppendChild(Serializer(etablissement,resultat)); ChiffresSignificatifs chiffres = GetChiffresSignificatifsByAnnee(annee); xmlCollege.AppendChild(Serializer(chiffres,resultat)); return resultat; } } }