// // CalendarController.cs // // Author: // Paul Schneider // // 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 . 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; namespace Yavsc.ApiControllers { /// /// Night flash controller. /// 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 } } }; } /// /// List events according the specified search arguments. /// /// Arguments. [ValidateAjaxAttribute] [HttpGet] public YaEvent[] List ([FromUri] PositionAndKeyphrase args) { return getTestList(); } /// /// Provider the specified ProviderId. /// /// Provider identifier. [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" }; } /// /// Posts the image. /// /// The image. /// NF prov identifier. public string PostImage([FromUri] string NFProvId) { return null; } /// /// Posts the event. /// /// The event identifier. /// Ev. public int PostEvent ([FromBody] ProvidedEvent ev) { throw new NotImplementedException(); } /// /// Registers with push notifications enabled. /// /// Model. [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 (); } } } /// /// Sets the registration identifier. /// /// Registration identifier. [Authorize] public void SetRegistrationId(string registrationId) { // TODO set registration id setRegistrationId (Membership.GetUser ().UserName, registrationId); } private void setRegistrationId(string username, string regid) { ProfileBase pr = ProfileBase.Create(username); pr.SetPropertyValue ("gregid", regid); } /// /// Notifies the event. /// /// Evpub. public MessageWithPayloadResponse NotifyEvent(EventPub evpub) { SimpleJsonPostMethod,MessageWithPayloadResponse> r = new SimpleJsonPostMethod,MessageWithPayloadResponse>( "https://gcm-http.googleapis.com/gcm/send"); using (r) { var msg = new MessageWithPayload () { data = new YaEvent[] { (YaEvent)evpub } }; msg.to = string.Join (" ", Circle.Union (evpub.Circles)); return r.Invoke (msg); } } } }