/// <summary>
        /// Permet de récupérer les coordonnées d'une adresse
        /// </summary>
        /// <param name="address"></param>
        /// <returns>Adresse avec les coordonnées</returns>
        public async Task <GeolocByAddress> GetGeolocAsync(string address)
        {
            GeolocByAddress result = null;

            result = await this.SafeRequest(async() =>
            {
                string response = await this._cob.GetGeolocAsync(address);
                result          = JsonConvert.DeserializeObject <GeolocByAddress>(response);
                return(result);
            });

            return(result);
        }
Exemple #2
0
        /// <summary>
        /// Invoqué lorsque cette page est sur le point d'être affichée dans un frame.
        /// </summary>
        /// <param name="e">Données d’événement décrivant la manière dont l’utilisateur a accédé à cette page.
        /// Ce paramètre est généralement utilisé pour configurer la page.</param>
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            // TODO: préparer la page pour affichage ici.

            // TODO: si votre application comporte plusieurs pages, assurez-vous que vous
            // gérez le bouton Retour physique en vous inscrivant à l’événement
            // Windows.Phone.UI.Input.HardwareButtons.BackPressed.
            // Si vous utilisez le NavigationHelper fourni par certains modèles,
            // cet événement est géré automatiquement.

            this._mapService.StartFollowUser(Map);
            await this._mapService.CenterMapOnUserPositionAsync(Map);

            await this.DisplayEvents();

            if (e.Parameter != null)
            {
                if (e.Parameter.GetType() == typeof(LoginModel))
                {
                    LoginModel loginModel = e.Parameter as LoginModel;
                    if (loginModel.Type == TypeEnum.Login)
                    {
                        try
                        {
                            await this.Login(loginModel);

                            // pas le bon bouton?
                            CommandBar.SecondaryCommands.RemoveAt(0);
                            this.AddDecoButton();
                        }
                        catch (Exception ex)
                        {
                            this.GenerateMessageDialog("Erreur lors de la connexion, vérifiez vos identifiants de connexion.");
                        }
                    }
                    else
                    {
                        try
                        {
                            User user = await this._apiService.RegisterAsync(loginModel.Login, loginModel.Pass, loginModel.Mail);

                            await this.Login(loginModel);

                            CommandBar.SecondaryCommands.RemoveAt(0);
                            this.AddDecoButton();
                        }
                        catch (Exception ex)
                        {
                            this.GenerateMessageDialog("Erreur lors de l'enregistrement.");
                        }
                    }
                }
                else if (e.Parameter.GetType() == typeof(EventModel))
                {
                    try
                    {
                        EventModel eventModel = e.Parameter as EventModel;

                        // timestamp = dt(utc) - dt(1970) + dt - dt
                        // timestamp = dt - dt(1970) + dt(utc) - dt et dt(utc) - dt = dtnow(utc) - dtnow
                        int offset    = (int)DateTime.UtcNow.Subtract(DateTime.Now).TotalSeconds;
                        int timestamp = (int)eventModel.Date.Subtract(new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds + offset;

                        string address = string.Format("{0} {1}", eventModel.Address, eventModel.City);

                        GeolocByAddress geoloc = await this._apiService.GetGeolocAsync(address);

                        EventPost eventPost = new EventPost()
                        {
                            Name      = eventModel.Name,
                            Date      = timestamp,
                            Latitude  = geoloc.Latitude,
                            Longitude = geoloc.Longitude,
                            Address   = eventModel.Address,
                            City      = eventModel.City
                        };
                        EventGet eventGet = await this._apiService.PostEventAsync(eventPost);

                        this.DisplayEvent(eventGet);
                        this._eventList.Add(eventGet);
                    }
                    catch (Exception ex)
                    {
                        this.GenerateMessageDialog("Erreur lors de l'envoi de l'évènement.");
                    }
                }
            }
        }