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;
}
}
}