de réservation d'un préstataire * p8-av4.xxs.jpg: * p8-av4.xxs.png: inutile * NoLogin.master: * Entity.cs: * OAuth2.cs: * ApiClient.cs: * PeopleApi.cs: * MapTracks.cs: * SkillManager.cs: * Skills.aspx: * EntityQuery.cs: * CalendarApi.cs: * SimpleJsonPostMethod.cs: * GoogleHelpers.cs: * EventPub.aspx: * GoogleController.cs: * Notification.cs: * UserSkills.aspx: * BackOfficeController.cs: * BackOfficeController.cs: * Notification.cs: * MessageWithPayLoad.cs: * MessageWithPayloadResponse.cs: refabrication * IContentProvider.cs: * NpgsqlBlogProvider.cs: xml doc * NpgsqlContentProvider.cs: implemente un listing des prestataire du code APE en base. * NpgsqlSkillProvider.cs: implemente un listing des domaines de compétence du préstataire en base. * XmlCatalogProvider.cs: Le catalogue de vente implémente mainenant l'interface d'un fournisseur de donnée comme les autres. Il pourrait par exemple vouloir définir des activité et des compétences. Pour l'instant, il n'est pas activé par la configuration, et reste le fournisseur du catalogue legacy (voir </FrontOffice/Catalog> ). * FrontOfficeController.cs: format du code * Global.asax.cs: Une route customisée pour le Front Office : /do (genre, ici, ça bouge.) * activity.sql: implémente en base de donnée le modèle des activités et compétences, ajoute aussi deux activités : l'edition logicielle et "Artiste" * style.css: changement de mes images de fond ... tombées du camion de Xavier et onlinehome.us * p8-av4.s.jpg: changement de taille * AccountController.cs: Met le code MEA à "none" quand il est spécifié non disponible. * BlogsController.cs: fixe un bug de l'edition d'un billet * FrontOfficeController.cs: implemente le contrôle booking simple * HomeController.cs: ajoute l'assemblage du catalog dans le listing dédié * YavscAjaxHelper.cs: Implemente un outil de representation JSon des objets côté serveur * parallax.js: deux fois plus de mouvement autout de x dans le parallax * yavsc.rate.js: imlemente un callback JS pour le rating * Activities.aspx: Des labels au formulaire de déclaration des activités * Activity.ascx: un panneau activité descent * Booking.aspx: implemente l'UI web du booking simple. * EavyBooking.aspx: refabrication du booking lourd * Index.aspx: supprime le panneau du tag Accueil, affiche les activités en cours du site (avec au moins un préstataire valide pour cette activité) * Web.config: Implemente une cote utilisateur, par une nouvelle valeur de son profile (Rate). * Yavsc.csproj: refabrique du code API Google, qui part dans le model. * MarkdownDeep.dll: le tag <p> ne convenait pas, le remplacer par le tag <span> non plus. Maintenant ça devrait être correct, c'est un div, mais que en cas de tag englobant non défini. * BookingQuery.cs: Le booking lourd devient une commande basée sur des activités concernée par l'intervention * ChangeLog: nettoyage * CatalogProvider.cs: implemente l'interface d'un fournissseur de contenu * PerformerProfile.cs: implemente le profile prestataire * SimpleBookingQuery.cs: Les besoin sont exprimé sous forme d'un tableau de valeur du parametrage de la commande * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: internationalisation * Profile.cs: implemente un accès à l'id d'enregistrement Google GCM * SkillEntity.cs: La compétence appartient à un domaine d'activité, on lui associe un et un seul code APE * SkillProvider.cs: Fait chercher les compétences à partir d'un code activité * WorkFlowManager.cs: implemente l'accès à la liste des préstataires de telle activité * YavscModel.csproj: refabrications * Skills.sql: vient de passer dans activity.Sql * T.cs: la traduction est faite plus simple à appeler (sans cast vers `string`).
135 lines
4 KiB
C#
135 lines
4 KiB
C#
using System;
|
|
using System.Xml.Serialization;
|
|
using System.Configuration;
|
|
using System.IO;
|
|
using System.Xml;
|
|
using System.Web;
|
|
using Yavsc.Model.FrontOffice.Catalog;
|
|
|
|
namespace SalesCatalog.XmlImplementation
|
|
{
|
|
/// <summary>
|
|
/// Xml catalog provider.
|
|
/// In charge of getting the catalog data,
|
|
/// returning a Catalog object from GetCatalog
|
|
/// </summary>
|
|
public class XmlCatalogProvider: CatalogProvider
|
|
{
|
|
#region implemented abstract members of CatalogProvider
|
|
|
|
/// <summary>
|
|
/// Gets the activity.
|
|
/// </summary>
|
|
/// <returns>The activity.</returns>
|
|
/// <param name="MEACode">MAE code.</param>
|
|
public override Yavsc.Model.FrontOffice.Activity GetActivity (string MEACode)
|
|
{
|
|
throw new NotImplementedException ();
|
|
}
|
|
/// <summary>
|
|
/// Registers the activity.
|
|
/// </summary>
|
|
/// <param name="activityName">Activity name.</param>
|
|
/// <param name="meacode">Meacode.</param>
|
|
/// <param name="comment">Comment.</param>
|
|
public override void RegisterActivity (string activityName, string meacode, string comment)
|
|
{
|
|
throw new NotImplementedException ();
|
|
}
|
|
/// <summary>
|
|
/// Finds the activity.
|
|
/// </summary>
|
|
/// <returns>The activity.</returns>
|
|
/// <param name="pattern">Pattern.</param>
|
|
/// <param name="exerted">If set to <c>true</c> exerted.</param>
|
|
public override Yavsc.Model.FrontOffice.Activity[] FindActivity (string pattern, bool exerted)
|
|
{
|
|
throw new NotImplementedException ();
|
|
}
|
|
/// <summary>
|
|
/// Finds the performer.
|
|
/// </summary>
|
|
/// <returns>The performer.</returns>
|
|
/// <param name="MEACode">MEA code.</param>
|
|
public override Yavsc.Model.FrontOffice.PerformerProfile[] FindPerformer (string MEACode)
|
|
{
|
|
throw new NotImplementedException ();
|
|
}
|
|
/// <summary>
|
|
/// Gets the catalog, loading it from
|
|
/// the file system at a first call,
|
|
/// and when its last write time has changed.
|
|
/// </summary>
|
|
/// <returns>The catalog.</returns>
|
|
public override Catalog GetCatalog ()
|
|
{
|
|
// Assert fileName != null
|
|
FileInfo fi = new FileInfo (fileName);
|
|
if (!fi.Exists)
|
|
throw new ConfigurationErrorsException(
|
|
string.Format("No catalog found ({0})",fileName));
|
|
if (fi.LastWriteTime > lastModification)
|
|
LoadCatalog ();
|
|
return catInstance;
|
|
}
|
|
/// <summary>
|
|
/// The catalog instance.
|
|
/// </summary>
|
|
protected XmlCatalog catInstance = null;
|
|
/// <summary>
|
|
/// The last modification date of the file loaded.
|
|
/// </summary>
|
|
protected DateTime lastModification = new DateTime(0);
|
|
/// <summary>
|
|
/// The name of the file loaded.
|
|
/// </summary>
|
|
protected string fileName = null;
|
|
#endregion
|
|
/// <summary>
|
|
/// Initialize the catalog
|
|
/// using the specified name and config.
|
|
/// The config object contains under the key
|
|
/// <c>connection</c> the path to the Xml Catalog file
|
|
/// at server side.
|
|
/// </summary>
|
|
/// <param name="name">Name.</param>
|
|
/// <param name="config">Config.</param>
|
|
public override void Initialize (string name, System.Collections.Specialized.NameValueCollection config)
|
|
{
|
|
if (config ["connection"] == null)
|
|
throw new Exception ("the 'connection' parameter is null " +
|
|
"(it should be the absolute path to the xml catalog)");
|
|
string cnx = (string) config ["connection"];
|
|
fileName = HttpContext.Current.Server.MapPath(cnx);
|
|
LoadCatalog ();
|
|
}
|
|
|
|
private void LoadCatalog ()
|
|
{
|
|
try {
|
|
FileInfo fi = new FileInfo (fileName);
|
|
if (!fi.Exists)
|
|
throw new Exception (
|
|
string.Format ("Le fichier Xml decrivant le catalogue n'existe pas ({0})", fi.FullName));
|
|
XmlSerializer xsr = new XmlSerializer (typeof(XmlCatalog),new Type[]{
|
|
typeof(Service),
|
|
typeof(PhysicalProduct),
|
|
typeof(Euro),
|
|
typeof(Text),
|
|
typeof(TextInput),
|
|
typeof(SelectInput)});
|
|
|
|
using (FileStream fs = fi.OpenRead()) {
|
|
catInstance = (XmlCatalog) xsr.Deserialize (fs);
|
|
}
|
|
fileName = fi.FullName;
|
|
lastModification = fi.LastWriteTime;
|
|
}
|
|
catch (Exception e) {
|
|
lastModification = new DateTime (0);
|
|
throw e;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|