Exemplo n.º 1
0
        public ActionResult Update(DogEventViewModel model)
        {
            if (!LoginHelper.IsAuthenticated())
            {
                return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.AbsoluteUri }));
            }

            var lostPersonTrackPoints = new Trkseg {
                Trkpt = model.LostPersonTrackPoints
            };
            var dogTrackPoints = new Trkseg {
                Trkpt = model.DogTrackPoints
            };

            UpdateTracks(model.DogId, model.EventId, model.LostPersonTrackFilename, model.DogTrackFilename, lostPersonTrackPoints, dogTrackPoints);

            var dogEventModel = new DogEventModel
            {
                LostPerson = model.LostPerson,
                Notes      = model.Notes,
                Weather    = model.Weather,
                DogId      = model.DogId,
                EventId    = model.EventId
            };

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Authorization =
                new AuthenticationHeaderValue("Bearer", LoginHelper.GetToken());
            System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Put, client.BaseAddress + $"dogevents/dogevent?dogId={model.DogId}&eventId={model.EventId}");

            var dogEventSerialized = JsonConvert.SerializeObject(dogEventModel);


            message.Content = new StringContent(dogEventSerialized, System.Text.Encoding.UTF8, "application/json");
            HttpResponseMessage responseMessage = client.SendAsync(message).Result;

            if (responseMessage.IsSuccessStatusCode)    //200 OK
            {
                message.Dispose();
                var responseData = responseMessage.Content.ReadAsStringAsync().Result;
                var definition   = new { DogId = "", EventId = "" };
                var ids          = JsonConvert.DeserializeAnonymousType(responseData, definition);
                return(RedirectToAction("DogEvent", new { dogId = ids.DogId, eventId = ids.EventId }));
            }
            else    // msg why not ok
            {
                ViewBag.Message = "code: " + responseMessage.StatusCode;
                return(View("Error"));
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult> DogEvent(int eventId, int dogId)
        {
            if (!LoginHelper.IsAuthenticated())
            {
                return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.AbsoluteUri }));
            }

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Authorization =
                new AuthenticationHeaderValue("Bearer", LoginHelper.GetToken());
            var blobTrackLinkBase = @"https://kgtstorage.blob.core.windows.net/tracks/";
            HttpResponseMessage responseMessage =
                await client.GetAsync($"dogevents/dogevent?eventId={eventId}&dogId={dogId}");

            if (responseMessage.IsSuccessStatusCode)
            {
                var responseData      = responseMessage.Content.ReadAsStringAsync().Result;
                var dogEvent          = JsonConvert.DeserializeObject <DogEventModel>(responseData);
                var dogEventViewModel = new DogEventViewModel()
                {
                    Dog              = dogEvent.Dog,
                    DogId            = dogEvent.DogId,
                    DogTrackFilename = String.IsNullOrWhiteSpace(dogEvent.DogTrackBlobUrl) ? null : dogEvent.DogTrackBlobUrl
                                       .Remove(dogEvent.DogTrackBlobUrl.IndexOf(blobTrackLinkBase), blobTrackLinkBase.Length),
                    LostPerson = dogEvent.LostPerson,
                    LostPersonTrackFilename = String.IsNullOrWhiteSpace(dogEvent.LostPersonTrackBlobUrl) ? null : dogEvent.LostPersonTrackBlobUrl
                                              .Remove(dogEvent.LostPersonTrackBlobUrl.IndexOf(blobTrackLinkBase), blobTrackLinkBase.Length),
                    Notes   = dogEvent.Notes,
                    Event   = dogEvent.Event,
                    EventId = dogEvent.EventId,
                    Weather = dogEvent.Weather
                };
                if (!String.IsNullOrEmpty(dogEvent.DogTrackBlobUrl))
                {
                    var webRequestDogTrack = WebRequest.Create(dogEvent.DogTrackBlobUrl);
                    try
                    {
                        using (var response = webRequestDogTrack.GetResponse())
                            using (var content = response.GetResponseStream())
                                using (var reader = new StreamReader(content))
                                {
                                    XDocument gpxDoc     = XDocument.Load(reader);
                                    var       serializer = new XmlSerializer(typeof(Trkseg));
                                    var       trkseg     = (Trkseg)serializer.Deserialize(gpxDoc.Root.CreateReader());
                                    var       t          = trkseg.Trkpt;

                                    dogEventViewModel.DogTrackPoints = t;
                                    //TODO: fill other fields DogEventViewModel class (dog part)
                                }
                    }
                    catch (Exception e)
                    {
                        ViewBag.Message = e.Message;
                        return(View("Error"));
                    }
                }
                if (!String.IsNullOrEmpty(dogEvent.LostPersonTrackBlobUrl))
                {
                    var webRequestLostPersonTrack = WebRequest.Create(dogEvent.LostPersonTrackBlobUrl);
                    try
                    {
                        using (var response = webRequestLostPersonTrack.GetResponse())
                            using (var content = response.GetResponseStream())
                                using (var reader = new StreamReader(content))
                                {
                                    XDocument gpxDoc     = XDocument.Load(reader);
                                    var       serializer = new XmlSerializer(typeof(Trkseg));
                                    var       trkseg     = (Trkseg)serializer.Deserialize(gpxDoc.Root.CreateReader());
                                    var       t          = trkseg.Trkpt;

                                    dogEventViewModel.LostPersonTrackPoints = t;
                                    //TODO: fill other fields DogEventViewModel class (person part)
                                }
                    }
                    catch (Exception e)
                    {
                        ViewBag.Message = e.Message;
                        return(View("Error"));
                    }
                }
                return(View(dogEventViewModel));
            }
            else
            {
                ViewBag.Message = "code: " + responseMessage.StatusCode;
                return(View("Error"));
            }
        }