public async Task <ActionResult> Training(int dogId, int trainingId) { if (!LoginHelper.IsAuthenticated()) { return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.AbsoluteUri })); } else if (!LoginHelper.IsCurrentUserAdmin() && !LoginHelper.IsCurrentUserMember()) { return(RedirectToAction("Error", "Home", new { error = "Nie masz wystarczających uprawnień by przeglądać tę sekcję" })); } 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($"dogtrainings/training?trainingId={trainingId}&dogId={dogId}"); if (responseMessage.IsSuccessStatusCode) { var responseData = responseMessage.Content.ReadAsStringAsync().Result; var dogTraining = JsonConvert.DeserializeObject <DogTrainingModel>(responseData); var dogTrainingViewModel = new DogTrainingViewModel() { Comments = dogTraining.Comments, Dog = dogTraining.Dog, DogId = dogTraining.DogId, DogTrackFilename = dogTraining.DogTrackBlobUrl .Remove(dogTraining.DogTrackBlobUrl.IndexOf(blobTrackLinkBase), blobTrackLinkBase.Length), LostPerson = dogTraining.LostPerson, LostPersonTrackFilename = dogTraining.LostPersonTrackBlobUrl .Remove(dogTraining.LostPersonTrackBlobUrl.IndexOf(blobTrackLinkBase), blobTrackLinkBase.Length), Notes = dogTraining.Notes, Training = dogTraining.Training, TrainingId = dogTraining.TrainingId, Weather = dogTraining.Weather, GroundType = dogTraining.GroundType, AdditionalPictureBlobUrl = dogTraining.AdditionalPictureBlobUrl }; if (!String.IsNullOrEmpty(dogTraining.DogTrackBlobUrl)) { var webRequestDogTrack = WebRequest.Create(dogTraining.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()); if (trkseg != null && trkseg.Trkpt.Any()) { var t = trkseg.Trkpt; dogTrainingViewModel.DogTrackPoints = t; //dogTrainingViewModel.DogTrackLength = DogTrainingHelper.CalculateGPSTrackLength(trkseg); dogTrainingViewModel.Duration = DogTrainingHelper.CalculateDuration(trkseg); dogTrainingViewModel.TimeOfDogStart = DogTrainingHelper.CalculateGPSTrackStartTime(trkseg); } } } catch (Exception e) { ViewBag.Message = e.Message; return(View("Error")); } } if (!String.IsNullOrEmpty(dogTraining.LostPersonTrackBlobUrl)) { var webRequestLostPersonTrack = WebRequest.Create(dogTraining.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()); if (trkseg != null && trkseg.Trkpt.Any()) { var t = trkseg.Trkpt; dogTrainingViewModel.LostPersonTrackPoints = t; //dogTrainingViewModel.LostPersonTrackLength = DogTrainingHelper.CalculateGPSTrackLength(trkseg); dogTrainingViewModel.TimeOfLostPersonStart = DogTrainingHelper.CalculateGPSTrackStartTime(trkseg); dogTrainingViewModel.DelayTime = dogTrainingViewModel.TimeOfDogStart - dogTrainingViewModel.TimeOfLostPersonStart; } } } catch (Exception e) { ViewBag.Message = e.Message; return(View("Error")); } } return(View(dogTrainingViewModel)); } else { ViewBag.Message = "code: " + responseMessage.StatusCode; return(View("Error")); } }
public ActionResult Update(DogTrainingViewModel model, HttpPostedFileBase imageFile) { if (!LoginHelper.IsAuthenticated()) { return(RedirectToAction("Login", "Account")); } else if (!LoginHelper.IsCurrentUserAdmin() && !LoginHelper.IsCurrentUserMember()) { return(RedirectToAction("Error", "Home", new { error = "Nie masz wystarczających uprawnień by zmieniać te dane" })); } if (imageFile != null) { MultipartFormDataContent form = new MultipartFormDataContent(); var imageStreamContent = new StreamContent(imageFile.InputStream); var byteArrayImageContent = new ByteArrayContent(imageStreamContent.ReadAsByteArrayAsync().Result); byteArrayImageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); var imageFileName = imageFile.FileName + Guid.NewGuid().ToString(); form.Add(byteArrayImageContent, imageFileName, Path.GetFileName(imageFileName)); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", LoginHelper.GetToken()); var response = client.PostAsync("DogTrainings/UploadImage", form).Result; if (response.IsSuccessStatusCode) { model.AdditionalPictureBlobUrl = @"https://kgtstorage.blob.core.windows.net/images/" + imageFileName; } else { ViewBag.Message = response.StatusCode; return(View("Error")); } } var lostPersonTrackPoints = new Trkseg { Trkpt = model.LostPersonTrackPoints }; var dogTrackPoints = new Trkseg { Trkpt = model.DogTrackPoints }; UpdateTracks(model.DogId, model.TrainingId, model.LostPersonTrackFilename, model.DogTrackFilename, lostPersonTrackPoints, dogTrackPoints); var dogTrainingModel = new DogTrainingModel { LostPerson = model.LostPerson, Notes = model.Notes, Weather = model.Weather, GroundType = model.GroundType, Comments = model.Comments, DogId = model.DogId, TrainingId = model.TrainingId, LostPersonTrackLength = model.LostPersonTrackLength, DelayTime = model.DelayTime, AdditionalPictureBlobUrl = model.AdditionalPictureBlobUrl }; 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 + $"dogtrainings/training?dogId={model.DogId}&trainingId={model.TrainingId}"); var dogTrainingSerialized = JsonConvert.SerializeObject(dogTrainingModel); message.Content = new StringContent(dogTrainingSerialized, 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 = "", TrainingId = "" }; var ids = JsonConvert.DeserializeAnonymousType(responseData, definition); return(RedirectToAction("Training", new { dogId = ids.DogId, trainingId = ids.TrainingId })); } else // msg why not ok { ViewBag.Message = "code: " + responseMessage.StatusCode; return(View("Error")); } }