예제 #1
0
        public IHttpActionResult PostNewShare(FormDataCollection data)
        {
            if (!Session.Authorized)
            {
                return(Unauthorized());
            }

            // Controllo se l'utente non ha già una condivisione in corso, nel caso la restituisco
            var share = _shareRepo.GetUserActiveShare(Session.User.Id);

            if (share != null && share.Host.Id == Session.User.Id)
            {
                return(Ok(share));
            }

            // Altrimenti ne creo una nuova
            var valueMap = FormDataConverter.Convert(data);

            var lat = valueMap.Get("startLat");
            var lng = valueMap.Get("startLng");

            if (lat.IsNullOrWhiteSpace())
            {
                return(BadRequest("Latitudine iniziale mancante"));
            }


            if (lng.IsNullOrWhiteSpace())
            {
                return(BadRequest("Longitudine iniziale mancante"));
            }

            double startLat;
            double startLng;

            try
            {
                startLat = double.Parse(lat);
            }
            catch (Exception e)
            {
                return(BadRequest("Formato latitudine non corretto (" + e + ")"));
            }

            try
            {
                startLng = double.Parse(lng);
            }
            catch (Exception e)
            {
                return(BadRequest("Formato longitudine non corretto"));
            }


            var shareId = _shareRepo.CreateShare(Session.User.Id, startLat, startLng);

            share = _shareRepo.GetUserShare(Session.User.Id, shareId);

            return(Ok(share));
        }