public async Task<IActionResult> Index(IFormFile photo, string query, string lat, string lng) { if (photo != null) { Notez note = new Notez { Found = true, Timestamp = DateTimeOffset.Now, UserAgent = Request.Headers["User-Agent"], HostAddress = Context.GetFeature<IHttpConnectionFeature>().RemoteIpAddress.ToString(), LocationRaw = query, }; if (!string.IsNullOrWhiteSpace(query) && (string.IsNullOrWhiteSpace(lat) || string.IsNullOrWhiteSpace(lng))) { using (HttpClient http = new HttpClient()) { Stream response = await http.GetStreamAsync("http://maps.googleapis.com/maps/api/geocode/xml?address=" + Uri.EscapeDataString(query)); XDocument xml = XDocument.Load(response); if (xml.Root.Element("status")?.Value == "OK") { XElement location = xml.Root.Element("result")?.Element("geometry")?.Element("location"); lat = location?.Element("lat")?.Value; lng = location?.Element("lng")?.Value; } } } double value; if (double.TryParse(lat, NumberStyles.Float, CultureInfo.InvariantCulture, out value)) note.Latitude = value; if (double.TryParse(lng, NumberStyles.Float, CultureInfo.InvariantCulture, out value)) note.Longitude = value; _context.Notez.Add(note); await _context.SaveChangesAsync(); string root = Path.Combine(_environment.MapPath("n")); await photo.SaveAsAsync(Path.Combine(root, note.ID + ".jpg")); try { using (Stream s = photo.OpenReadStream()) Helper.GenerateThumbnail(s, Path.Combine(root, "t" + note.ID + ".jpg")); } catch { note.FlagStatus = FlagStatus.Invalid; await _context.SaveChangesAsync(); } return RedirectToAction(nameof(Thanks), new { noteID = note.ID }); } return RedirectToAction(nameof(Index)); }
public async Task<IActionResult> Index(IFormFile photo, string query, string latitude, string longitude, string elevation, string zoom, bool found) { if (photo != null) { Notez note = new Notez { Found = found, Timestamp = DateTimeOffset.Now, UserAgent = Request.Headers["User-Agent"], HostAddress = Context.GetFeature<IHttpConnectionFeature>().RemoteIpAddress.ToString(), LocationRaw = query, Latitude = double.Parse(latitude, CultureInfo.InvariantCulture), Longitude = double.Parse(longitude, CultureInfo.InvariantCulture), Zoom = float.Parse(zoom, CultureInfo.InvariantCulture), Elevation = float.Parse(elevation, CultureInfo.InvariantCulture), }; _context.Notez.Add(note); await _context.SaveChangesAsync(); string root = Path.Combine(_environment.MapPath("n")); await photo.SaveAsAsync(Path.Combine(root, note.ID + ".jpg")); try { using (Stream s = photo.OpenReadStream()) Helper.GenerateThumbnail(s, Path.Combine(root, "t" + note.ID + ".jpg")); } catch { note.FlagStatus = FlagStatus.Invalid; await _context.SaveChangesAsync(); } return RedirectToAction(nameof(Index), new { noteID = note.ID }); } return RedirectToAction(nameof(Index)); }