|
|
|
|
|
//
|
|
|
|
|
|
// CalendarController.cs
|
|
|
|
|
|
//
|
|
|
|
|
|
// Author:
|
|
|
|
|
|
// Paul Schneider <paulschneider@free.fr>
|
|
|
|
|
|
//
|
|
|
|
|
|
// Copyright (c) 2015 Paul Schneider
|
|
|
|
|
|
//
|
|
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
|
|
// it under the terms of the GNU Lesser General Public License as published by
|
|
|
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
|
// (at your option) any later version.
|
|
|
|
|
|
//
|
|
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
|
// GNU Lesser General Public License for more details.
|
|
|
|
|
|
//
|
|
|
|
|
|
// You should have received a copy of the GNU Lesser General Public License
|
|
|
|
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Web.Http;
|
|
|
|
|
|
using Yavsc.Model.RolesAndMembers;
|
|
|
|
|
|
using System.Web.Security;
|
|
|
|
|
|
using Yavsc.Model.Google;
|
|
|
|
|
|
using Yavsc.Helpers;
|
|
|
|
|
|
using System.Web.Profile;
|
|
|
|
|
|
using Yavsc.Model.Circles;
|
|
|
|
|
|
using Yavsc.Model.Calendar;
|
|
|
|
|
|
using System.Web.Http.Routing;
|
Les activités
* BackOfficeController.cs: Impléménte un accès à l'API back office
pour l'envoi d'une notification aux mobiles des cercles séléctionné
de l'utilisateur
* NotifyEvent.aspx: Implemente un formulaire d'envoi d'une
notification mobile
* NotifyEventResponse.aspx: initie une page de resultat à la
notification mobile
* NpgsqlContentProvider.cs: reccupère la photo activité en base de
données
* BlogsController.cs: En attendant mieux, les billets de blog sont
noté par leur auteur, ou un admin.
* CalendarController.cs: Les fontions de notification GCM et de
declaration d'enregistrement GCM
partent dans le controlleur back office.
* activity.sql: ajoute la photo activité dans la definition du modèle
de données Npgsql
* style.css: La fonte de caractère "Open Sans" (Google fonts) pour le
thème "clear"
* style.css: La fonte de caractère "Open Sans" (Google fonts) pour le
thème "dark" aussi
* style.css: pas de fonte de caractère dans la feuille de style
basique.
* BackOfficeController.cs: Impléménte un accès web back office pour
l'envoi d'une notification aux mobiles des cercles séléctionné de
l'utilisateur
* BlogsController.cs: Fixe la page de garde du blogspot en cas
d'absence
de billet à publier publiquement.
* FrontOfficeController.cs: la fontion booking est maintenant censée
conerner uniquement une activité,
dont le code APE est donné en dernière partie de la route de l'Url, ou
en argument `id`.
* HomeController.cs: La page d'accueil présente maintenant les
activités mises en oeuvre par au moins un utilisateur enregistré,
validé et non vérouillé.
Le titre de l'activité est un lien vers la methode de reservation
simple.
* GoogleHelpers.cs: recoit l'implementation de la methode de
notification mobile
* SimpleJsonPostMethod.cs: Fixe l'envoi en UTF-8
* App.master: fonte de caractère pour le lien vers "Vos billets"
* parallax.js: fixe la différence de traitement entre l'horizontale et
la verticale
* Profile.aspx: ajoute le sommaire de la validation
* Index.aspx: initie un index pour le back office
* Activities.aspx: nettoye la console de log javascript
* Booking.aspx: ajoute le champ caché au formulaire de resa
* Index.aspx: affiche les services fournis sur le site, par des
utilisateur enregistrés validés non bloqué.
* Web.config: rends l'id Google d'enregistrement GCM accessible au
utilisateurs anonymes,
qui voudraient commander ou interagir avec l'application, sans avoir à
créer de compte sur le site.
* Web.csproj: ajoute le contrôleur du back office, et le formulaire de
notification mobile
* EventPub.cs:
* BaseEvent.cs: internationalise l'évennement (la base d'une
notification)
* YaEvent.cs: les champs fournisseur d'une notification ne sont pas
requis. On peut en avoir de la part du site lui même, qui ne soient
pas à l'origine d'un evennement tiers du workflow. Dans tous les
autres cas, ils devraient être renseignés ... à suivre.
* Circle.cs:
* CircleBase.cs: ajoute une methode de construition des destinataires
à partir d'un tableau d'identifiants de cercles.
* Activity.cs: implémente la photo activité dans le modèle
* SimpleBookingQuery.cs: refabriqué
* MessageWithPayLoad.cs: accuse aussi le champ `to` en cas d'absence
de destinataire.
* LocalizedText.resx:
* LocalizedText.fr.resx:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: internationalisation
10 years ago
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace Yavsc.ApiControllers
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Night flash controller.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class CalendarController: ApiController
|
|
|
|
|
|
{
|
|
|
|
|
|
YaEvent[] getTestList()
|
|
|
|
|
|
{
|
|
|
|
|
|
return new YaEvent[] {
|
|
|
|
|
|
new YaEvent () {
|
|
|
|
|
|
Description = "Test Descr",
|
|
|
|
|
|
Title = "Night club special bubble party",
|
|
|
|
|
|
Location = new Position () {
|
|
|
|
|
|
Longitude = 0,
|
|
|
|
|
|
Latitude = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
new YaEvent () {
|
|
|
|
|
|
Title = "Test2",
|
|
|
|
|
|
Photo = "http://bla/im.png",
|
|
|
|
|
|
Location = new Position () {
|
|
|
|
|
|
Longitude = 0,
|
|
|
|
|
|
Latitude = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
new YaEvent () {
|
|
|
|
|
|
Description = "Test Descr",
|
|
|
|
|
|
Title = "Night club special bubble party",
|
|
|
|
|
|
Location = new Position () {
|
|
|
|
|
|
Longitude = 0,
|
|
|
|
|
|
Latitude = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
new YaEvent () {
|
|
|
|
|
|
Title = "Test2",
|
|
|
|
|
|
Photo = "http://bla/im.png",
|
|
|
|
|
|
Location = new Position () {
|
|
|
|
|
|
Longitude = 0,
|
|
|
|
|
|
Latitude = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// List events according the specified search arguments.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="args">Arguments.</param>
|
|
|
|
|
|
[ValidateAjaxAttribute]
|
|
|
|
|
|
[HttpGet]
|
|
|
|
|
|
public YaEvent[] List ([FromUri] PositionAndKeyphrase args)
|
|
|
|
|
|
{
|
|
|
|
|
|
return getTestList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Provider the specified ProviderId.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="ProviderId">Provider identifier.</param>
|
|
|
|
|
|
[HttpGet]
|
|
|
|
|
|
public ProviderPublicInfo ProviderInfo ([FromUri] string ProviderId)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new ProviderPublicInfo () {
|
|
|
|
|
|
DisplayName = "Yavsc clubing",
|
|
|
|
|
|
WebPage = "http://yavsc.pschneider.fr/",
|
|
|
|
|
|
Calendar = new Schedule () {
|
|
|
|
|
|
Period = Periodicity.ThreeM,
|
|
|
|
|
|
WeekDays = new OpenDay[] { new OpenDay () { Day = WeekDay.Saturday,
|
|
|
|
|
|
Start = new TimeSpan(18,00,00),
|
|
|
|
|
|
End = new TimeSpan(2,00,00)
|
|
|
|
|
|
} },
|
|
|
|
|
|
Validity = new Period[] { new Period() {
|
|
|
|
|
|
Start = new DateTime(2015,5,29),
|
|
|
|
|
|
End = new DateTime(2015,5,30)} }
|
|
|
|
|
|
},
|
|
|
|
|
|
Description = "Yavsc Entertainment Production, Yet another private party",
|
|
|
|
|
|
LogoImgLocator = "http://yavsc.pschneider.fr/favicon.png",
|
|
|
|
|
|
Location = new Position () { Longitude = 0, Latitude = 0 },
|
|
|
|
|
|
LocationType = "Salle des fêtes"
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Posts the image.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns>The image.</returns>
|
|
|
|
|
|
/// <param name="NFProvId">NF prov identifier.</param>
|
|
|
|
|
|
public string PostImage([FromUri] string NFProvId)
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Posts the event.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns>The event identifier.</returns>
|
|
|
|
|
|
/// <param name="ev">Ev.</param>
|
|
|
|
|
|
public int PostEvent ([FromBody] ProvidedEvent ev)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Registers with push notifications enabled.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="model">Model.</param>
|
|
|
|
|
|
[ValidateAjax]
|
|
|
|
|
|
public void RegisterWithPushNotifications(GCMRegisterModel model)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (ModelState.IsValid) {
|
|
|
|
|
|
MembershipCreateStatus mcs;
|
|
|
|
|
|
var user = Membership.CreateUser (
|
|
|
|
|
|
model.UserName,
|
|
|
|
|
|
model.Password,
|
|
|
|
|
|
model.Email,
|
|
|
|
|
|
null,
|
|
|
|
|
|
null,
|
|
|
|
|
|
false,
|
|
|
|
|
|
out mcs);
|
|
|
|
|
|
switch (mcs) {
|
|
|
|
|
|
case MembershipCreateStatus.DuplicateEmail:
|
|
|
|
|
|
ModelState.AddModelError ("Email", "Cette adresse e-mail correspond " +
|
|
|
|
|
|
"à un compte utilisateur existant");
|
|
|
|
|
|
break;
|
|
|
|
|
|
case MembershipCreateStatus.DuplicateUserName:
|
|
|
|
|
|
ModelState.AddModelError ("Author", "Ce nom d'utilisateur est " +
|
|
|
|
|
|
"déjà enregistré");
|
|
|
|
|
|
break;
|
|
|
|
|
|
case MembershipCreateStatus.Success:
|
|
|
|
|
|
Url.SendActivationMessage (user);
|
|
|
|
|
|
// TODO set registration id
|
|
|
|
|
|
throw new NotImplementedException ();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|