public JsonResult ReportTheFire([FromBody] ReportTheFireParameterDTO param) { var response = new ReportTheFireResponseDTO { }; //check secret user id if (checkSecretUserId(param.SecretUserId)) { using (var context = new IsfContext()) { var added = context.Reports.Add( new Report { SecretUserId = param.SecretUserId, Longitude = param.Longitude, Latitude = param.Latitude, TextOfComment = param.TextOfComment, Timestamp = DateTime.UtcNow, Distance = param.Distance } ); context.SaveChanges(); response.ReportId = added.Entity.ReportId; } } else { response.Error = $"Unknown secret user id: \"{param.SecretUserId}\""; } return(new JsonResult(response)); }
public IActionResult NasaReports() { ReportsModel response = new ReportsModel { UsersReports = new List <GetNearbyFiresResponseDTO>() }; using (var context = new IsfContext()) { var retrievedReports = context.NasaFireReports.ToList(); foreach (var report in retrievedReports) { response.UsersReports.Add(new GetNearbyFiresResponseDTO() { Latitude = report.Latitude, Longitude = report.Longitude, PhotoUrl = getImageUrl("NASA"), IsOwner = false, IsNasa = false, Confidence = report.Confidence, Distance = LatLongDistance(report.Latitude, report.Longitude, 46.481940m, 30.747274m) }); } response.UsersReports = response.UsersReports.OrderBy(x => x.Distance).Take(400).ToList(); } return(View(response)); }
private bool checkSecretUserId(string SecretUserId) { using (var context = new IsfContext()) { var findResult = context.Users.FirstOrDefault(x => x.UserId == SecretUserId); return(findResult != null); } }
public JsonResult GetReportsList() { Console.WriteLine("GetReportsList called"); var result = new List <string>(); using (var context = new IsfContext()) { foreach (var report in context.Reports) { result.Add($"{report.ReportId} - {report.Latitude} - {report.Longitude} - {report.Timestamp}"); } } return(new JsonResult(result)); }
public JsonResult GetUserList() { Console.WriteLine("GetUserList called"); var result = new List <string>(); using (var context = new IsfContext()) { foreach (var user in context.Users) { result.Add($"{user.UserId} - {user.Name} - {user.Phone}"); } } return(new JsonResult(result)); }
private JsonResult downloadNasaFileAndImportInDb(string path) { DownloadFilesFromNASAResponseDTO response = new DownloadFilesFromNASAResponseDTO { }; if (isLastImportNASAFilesDateIsActual()) { response.Error = "No need to import NASA files."; return(new JsonResult(response)); } using (var client = new WebClient()) { try { MemoryStream stream = new MemoryStream(client.DownloadData(path)); var result = parseNasaDataCSV(stream); using (var context = new IsfContext()) { try { context.NasaFireReports.AddRange(result); context.SaveChanges(); response.PathProcessed = path; response.RowsImported = result.Count; } catch (Exception ex) { Console.WriteLine(ex.Message); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } } return(new JsonResult(response)); }
public JsonResult GetSecretUserId() { var userId = Guid.NewGuid().ToString(); using (var context = new IsfContext()) { context.Users.Add(new User() { UserId = userId }); context.SaveChanges(); } var response = new GetSecretUserIdResponseDTO { SecretUserId = userId }; return(new JsonResult(response)); }
public JsonResult UpdateProfile([FromBody] UpdateProfileParameterDTO updateData) { using (var context = new IsfContext()) { User user = context .Users .Where(q => q.UserId == updateData.SecretUserId) .First(); user.Phone = updateData.Phone; user.Name = updateData.Name; context.SaveChanges(); } var response = new ResponseDTO() { Error = null }; return(new JsonResult(response)); }
public IActionResult Reports() { ReportsModel response = new ReportsModel { UsersReports = new List <GetNearbyFiresResponseDTO>() }; using (var context = new IsfContext()) { var retrievedReports = context.Reports.ToList(); foreach (var report in retrievedReports) { response.UsersReports.Add(new GetNearbyFiresResponseDTO() { Latitude = report.Latitude, Longitude = report.Longitude, PhotoUrl = report.ImagePath ?? getImageUrl(report.ImagePath), IsOwner = false, IsNasa = false, Confidence = 0.2m, Distance = LatLongDistance(report.Latitude, report.Longitude, 46.481940m, 30.747274m) }); } response.UsersReports.Add(new GetNearbyFiresResponseDTO() { Latitude = 46.500144m, Longitude = 30.663893m, PhotoUrl = getImageUrl("NASA"), IsOwner = false, IsNasa = false, Confidence = 0.2m, // from 0 to 1 Distance = LatLongDistance(46.500144m, 30.663893m, 46.481940m, 30.747274m) }); response.UsersReports = response.UsersReports.OrderBy(x => x.Distance).ToList(); } return(View(response)); }
public JsonResult UploadImage() { string SecretUserId = ""; string ReportId = ""; var newFileName = string.Empty; var response = new UploadImageResponseDTO() { TotalUploadedSize = 0 }; if (HttpContext.Request.Form.ContainsKey("SecretUserId")) { SecretUserId = HttpContext.Request.Form["SecretUserId"]; } if (HttpContext.Request.Form.ContainsKey("ReportId")) { ReportId = HttpContext.Request.Form["ReportId"]; } int parsedReportId = 0; bool parseResult = int.TryParse(ReportId, out parsedReportId); if (!parseResult) { response.Error = "Failed to parse ReportId"; return(new JsonResult(response)); } using (var context = new IsfContext()) { var findResult = context.Reports.FirstOrDefault(x => x.SecretUserId == SecretUserId && x.ReportId == parsedReportId); if (findResult == null) { response.Error = "No such portfolio binded to specified user."; return(new JsonResult(response)); } } if (HttpContext.Request.Form.Files != null) { var fileName = string.Empty; string PathDB = string.Empty; var files = HttpContext.Request.Form.Files; //Assigning Unique Filename (Guid) var myUniqueFileName = Convert.ToString(Guid.NewGuid()); string FileExtension = ""; using (var fs = new System.IO.MemoryStream()) { foreach (var file in files) { if (file.Length > 0) { //Getting FileName fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); //Getting file Extension FileExtension = Path.GetExtension(fileName); file.CopyTo(fs); } } newFileName = myUniqueFileName + FileExtension; string pathToImage = System.IO.Path.Combine("./Images/", newFileName); try { using (var fileWrite = new FileStream(pathToImage, FileMode.CreateNew)) { var bytes = fs.ToArray(); fileWrite.Write(bytes, 0, bytes.Length); fileWrite.Flush(); response.TotalUploadedSize = bytes.Length; response.GeneratedImageName = $"fileName: {pathToImage}, SecretUser: {SecretUserId}, Report: {ReportId}"; } using (var context = new IsfContext()) { var findResult = context.Reports.FirstOrDefault(x => x.SecretUserId == SecretUserId && x.ReportId == parsedReportId); findResult.ImagePath = newFileName; context.SaveChanges(); } } catch (Exception ex) { Console.WriteLine(ex.Message); response.Error = "Failed to save image file"; return(new JsonResult(response)); } } } return(new JsonResult(response)); }
public JsonResult GetNearbyFires([FromBody] GetNearbyFiresParametersDTO parameters) { var response = new List <GetNearbyFiresResponseDTO>(); // owner response.Add(new GetNearbyFiresResponseDTO() { Latitude = 46.484566m, Longitude = 30.737960m, PhotoUrl = null, IsOwner = true, IsNasa = false, Confidence = 0.2m, // from 0 to 1 Distance = LatLongDistance(46.484566m, 30.737960m, parameters.Latitude, parameters.Longitude) }); // not owner response.Add(new GetNearbyFiresResponseDTO() { Latitude = 46.500144m, Longitude = 30.663893m, PhotoUrl = null, IsOwner = false, IsNasa = false, Confidence = 0.2m, // from 0 to 1 Distance = LatLongDistance(46.500144m, 30.663893m, parameters.Latitude, parameters.Longitude) }); // nasa response.Add(new GetNearbyFiresResponseDTO() { Latitude = 46.412424m, Longitude = 30.670665m, PhotoUrl = getImageUrl("NASA.png"), IsOwner = false, IsNasa = true, Confidence = 0.65m, // from 0 to 1 Distance = LatLongDistance(46.412424m, 30.670665m, parameters.Latitude, parameters.Longitude) }); decimal longitudeDelta = DistanceToLongitude(parameters.Distance, parameters.Latitude); decimal lattitudeDelta = DistanceToLatitude(parameters.Distance); using (var context = new IsfContext()) { bool longNormal = true; if (longitudeDelta + parameters.Longitude > 180 || parameters.Longitude - longitudeDelta < -180) { longNormal = false; } decimal minLongitude = NormalizeLongitude(parameters.Longitude - longitudeDelta); decimal maxLongitude = NormalizeLongitude(parameters.Longitude + longitudeDelta); var reports = context .NasaFireReports .Where(q => q.Latitude <Math.Min(parameters.Latitude + lattitudeDelta, 90) && q.Latitude> Math.Max(parameters.Latitude - lattitudeDelta, -90)); if (longNormal) { reports = reports .Where(q => q.Longitude < parameters.Longitude + longitudeDelta && q.Longitude > parameters.Longitude - longitudeDelta); } else { reports = reports .Where(q => (q.Longitude <maxLongitude && q.Longitude> -180) || (q.Longitude > minLongitude && q.Longitude < 180) ); } // search nasa db foreach (var report in reports) { response.Add(new GetNearbyFiresResponseDTO() { Latitude = report.Latitude, Longitude = report.Longitude, PhotoUrl = getImageUrl("NASA.png"), IsOwner = false, IsNasa = true, Confidence = report.Confidence, //confidence is already normalized Distance = LatLongDistance(report.Latitude, report.Longitude, parameters.Latitude, parameters.Longitude) }); } // search reports // filter by distance var userRerorts = context.Reports .Where(q => q.Latitude <Math.Min(parameters.Latitude + lattitudeDelta, 90) && q.Latitude> Math.Max(parameters.Latitude - lattitudeDelta, -90)); if (longNormal) { userRerorts = userRerorts .Where(q => q.Longitude < parameters.Longitude + longitudeDelta && q.Longitude > parameters.Longitude - longitudeDelta); } else { userRerorts = userRerorts .Where(q => (q.Longitude <maxLongitude && q.Longitude> -180) || (q.Longitude > minLongitude && q.Longitude < 180) ); } foreach (var report in userRerorts) { response.Add(new GetNearbyFiresResponseDTO() { Latitude = report.Latitude, Longitude = report.Longitude, PhotoUrl = report.ImagePath ?? getImageUrl(report.ImagePath), IsOwner = false, IsNasa = false, Confidence = 0.2m, Distance = LatLongDistance(report.Latitude, report.Longitude, parameters.Latitude, parameters.Longitude) }); } } response = response.OrderBy(q => q.Distance).ToList(); return(new JsonResult(response)); }