public Holder validateFileStructure(StreamReader csvReader, enteredData enteredData) //VALIDA ESTRUCTURA A TRAVÉS DE LA CLASE StructureValidation { Holder hold = new Holder(); var selectedStation = db.stations.Where(a => a.idStation.Equals(enteredData.idStation)).FirstOrDefault(); if (enteredData.idDataType == 1) //LOS DATOS A VALIDAR SON OBSERVACIONES { if (selectedStation.idMeasurementType == 1) //VALIDAR ESTRUCTURA DATOS METEOROLOGICOS { hold = new StructureValidation().checkMeteorologicalStructure(csvReader, enteredData, selectedStation); } else if (selectedStation.idMeasurementType == 2) //VALIDAR ESTRUCTURA DATOS GLACIOLOGICOS { hold = new StructureValidation().checkGlaciologicalStructure(csvReader); } else //VALIDAR ESTRUCTURA DATOS HIDROLOGICOS { hold = new StructureValidation().checkHydrologicalStructure(csvReader); } } else //DATOS A VALIDAR SON SIMULACIONES { hold.status = true; hold.message = "NO"; } return(hold); }
public FileResult DownloadFile(int id) { enteredData doc = db.enteredDatas.Single(I => I.idEnteredData == id); var filename = Server.MapPath("~/UploadedFiles/" + "ORIGINAL-" + doc.nameEnteredData); byte[] datos = System.IO.File.ReadAllBytes(filename); return(File(datos, ".csv", doc.nameEnteredData)); }
public ActionResult UploadFile(HttpPostedFileBase fileToCheck, enteredData enteredData) //HttpPostedFileBase FileUpload { if (Request != null) //control generico de existencia de archivo { //HttpPostedFileBase file = Request.Files["files"]; //leo el archivo subido por el usuario. Elnombre debe coincidir con el declarado en el la Vista try { if (fileToCheck.ContentLength > 0) //TAMAÑO DEL ARCHIVO MAYOR A 0 BYTES { if (validateFileExtension(fileToCheck)) //extension csv { StreamReader csvReader = new StreamReader(fileToCheck.InputStream); Holder hold = validateFileStructure(csvReader, enteredData); //validación de estructura de archivo if (hold.status == true) { saveFileData(csvReader, fileToCheck, enteredData); } else { Session["error"] = hold.message; Session["message"] = null; Session["notification"] = null; return(RedirectToAction("UploadFile")); } } else { Session["error"] = "The file must have an extension .csv"; Session["message"] = null; Session["notification"] = null; } return(RedirectToAction("UploadFile")); } } catch { Session["error"] = "File upload failed!" + " " + "Please verify that there are no NULL fields"; Session["message"] = null; Session["notification"] = null; return(RedirectToAction("UploadFile")); } //StreamReader csvReader = new StreamReader(file.InputStream); } return(RedirectToAction("UploadFile")); }
// POST: enteredData/Delete/5 public ActionResult GoDown(int id) { try { enteredData doc = db.enteredDatas.Single(i => i.idEnteredData == id); if (doc.station.idMeasurementType == 1) { //METEREOLOGICAL db.metadatas.RemoveRange(doc.metadatas); db.SaveChanges(); db.meteorologicalDatas.RemoveRange(doc.meteorologicalDatas); db.SaveChanges(); } else if (doc.station.idMeasurementType == 2) { //GLACIOLOGICAL var data = db.glaciologicalDatas.Where(i => i.idEnteredData == id); db.glaciologicalDatas.RemoveRange(data); } else if (doc.station.idMeasurementType == 3) { //HIDROLOGICAL var data = db.hydrologicalDatas.Where(i => i.idEnteredData == id); db.hydrologicalDatas.RemoveRange(data); } string partName = "ORIGINAL-" + doc.nameEnteredData; var path = Path.Combine(Server.MapPath("~/UploadedFiles"), partName); System.IO.File.Delete(path); db.enteredDatas.Remove(doc); db.SaveChanges(); Session["error"] = null; Session["message"] = null; Session["notification"] = null; return(RedirectToAction("Index")); } catch (Exception ex) { Session["error"] = ex.Message; Session["message"] = null; Session["notification"] = null; return(RedirectToAction("Index")); } }
public int checkAndInsertDocumentFeatures(enteredData enteredData, string fileName) { try { //systemUsersController u = new systemUsersController(); enteredData document = new enteredData(); document.nameEnteredData = fileName; document.startDate = enteredData.startDate; document.endDate = enteredData.endDate; document.idDataType = enteredData.idDataType; document.idStation = enteredData.idStation; document.idSystemUser = int.Parse(Session["idSystemUser"].ToString()); document.stateR = true; db.enteredDatas.Add(document); db.SaveChanges(); return(document.idEnteredData); } catch { return(0); } }
public int checkAndInsertDocumentFeatures(int idUser, enteredData enteredData, string fileName) { try { enteredData document = new enteredData(); document.nameEnteredData = fileName; document.startDate = enteredData.startDate; document.endDate = enteredData.endDate; document.idDataType = enteredData.idDataType; document.idStation = enteredData.idStation; document.idSystemUser = idUser;//int.Parse(Session["idSystemUser"].ToString()); document.stateR = true; db.enteredDatas.Add(document); db.SaveChanges(); return(document.idEnteredData); } catch (Exception ex) { var sms = ex.Message; return(0); } //return 0; }
public void saveFileData(string nameOfFile, string path, string finalPath, enteredData enteredData, int idUser)//, HttpContext mainContext) { //await Task.Run(() => { using (var csvReader = new StreamReader(path)) { csvReader.BaseStream.Seek(0, SeekOrigin.Begin); //Resetea la posición del stream para que empiece de nuevo //Insertar Datos en la BBDD int rowNumber = 1; int idDocument = checkAndInsertDocumentFeatures(idUser, enteredData, nameOfFile);//Path.GetFileName(fileToCheck.FileName)); var selectedStation = db.stations.Where(a => a.idStation.Equals(enteredData.idStation)).FirstOrDefault(); //{ while (!csvReader.EndOfStream) { if (selectedStation.measurementType.nameMT == "Meteorological") { string reader = csvReader.ReadLine(); if (!reader.Contains("#")) { //Session["message"] = null; // Session["notification"] = "Loading data..."; // Session["error"] = null; bool respHeaders = insertMeteorologicalData(idDocument, reader, selectedStation); } else { //Session["message"] = null; // Session["notification"] = "Loading data..."; // Session["error"] = null; bool respMetData = insertMeteoMetadata(idDocument, rowNumber, reader, enteredData); rowNumber = rowNumber + 1; } } else if (selectedStation.measurementType.nameMT == "Glaciological") { string reader = csvReader.ReadLine(); if (!reader.Contains("#")) { //Session["message"] = null; //Session["notification"] = "Loading data..."; //Session["error"] = null; bool respGlaData = insertGlaciologicalData(idDocument, reader); } } else { //Session["message"] = null; //Session["notification"] = "Loading data..."; //Session["error"] = null; string reader = csvReader.ReadLine(); bool respHydrData = insertHydrologicalData(idDocument, rowNumber, reader); rowNumber = rowNumber + 1; } } try { System.IO.File.Copy(path, finalPath); //FinalizarCarga("Upload data process has finished", null, null,mainContext); Session.Add("message", "Upload data process has finished"); Session["notification"] = null; Session["error"] = null; var name = Url.Action(); RedirectToAction(name); } catch (Exception ex) { //FinalizarCarga(null, null, ex.Message, mainContext); } } // }); //return await Task.FromResult(true); }
public ActionResult UploadFile(HttpPostedFileBase fileToCheck, enteredData enteredData) //HttpPostedFileBase FileUpload { if (Request != null) //control generico de existencia de archivo, que se ha seleccionado el archivo { //HttpPostedFileBase file = Request.Files["files"]; //leo el archivo subido por el usuario. Elnombre debe coincidir con el declarado en el la Vista try { if (fileToCheck.ContentLength > 0) //TAMAÑO DEL ARCHIVO MAYOR A 0 BYTES { if (validateFileExtension(fileToCheck)) //extension csv { var fileName = Path.GetFileName(fileToCheck.FileName); var docAux = db.enteredDatas.Where(a => a.nameEnteredData.Equals(fileName)).FirstOrDefault(); if (docAux == null) //si no existe un archivo en la bbdd con el mismo nombre, continúo subiendo { StreamReader csvReader = new StreamReader(fileToCheck.InputStream); Holder hold = validateFileStructure(csvReader, enteredData); //validación de estructura de archivo if (hold.status == true) { int idUser = int.Parse(Session["idSystemUser"].ToString()); var path = Path.Combine(Server.MapPath("~/UploadedFiles/TemporaryFiles"), fileName); fileToCheck.SaveAs(path); string finalName = "ORIGINAL-" + fileName; //Path.GetFileName(fileToCheck.FileName); string finalPath = Path.Combine(Server.MapPath("~/UploadedFiles"), finalName); BackgroundJob.Enqueue(() => saveFileData(fileName, path, finalPath, enteredData, idUser)); //, System.Web.HttpContext.Current)); Session.Add("message", "Upload process started. DO NOT close the website until this process finished!"); Session["error"] = null; Session["notification"] = null; } else { Session["error"] = hold.message; Session["message"] = null; Session["notification"] = null; return(RedirectToAction("UploadFile")); } } else { Session["error"] = "It seems that someone has already upload a file with the same name. Please verify it!"; Session["message"] = null; Session["notification"] = null; return(RedirectToAction("UploadFile")); } } else { Session["error"] = "The file must have an extension .csv"; Session["message"] = null; Session["notification"] = null; } return(RedirectToAction("UploadFile")); } } catch (Exception ex) { Session["error"] = ex.Message + "\nFile upload failed!" + " " + "Please verify that there are no NULL fields"; Session["message"] = null; Session["notification"] = null; return(RedirectToAction("UploadFile")); } } return(RedirectToAction("UploadFile")); }
public bool insertMeteoMetadata(int idDocument, int rowNumber, string reader, enteredData enteredData) { try //SOLO HAY UNO INDEPENDIENTE SI ES DENTRO O FUERA DEL GLACIAR PORQUE EL NÚMERO DE COLUMNAS DE METADATOS ES EL MISMO { if (rowNumber > 3) { if (!reader.Contains("#date")) { string[] aux = null; aux = reader.Split(';').ToArray(); metadata metadata = new metadata(); metadata.variable_code = aux[0]; metadata.variable_name = aux[1]; metadata.sensor_manufacturer = aux[2]; metadata.sensor_model = aux[3]; metadata.unit = aux[4]; metadata.dataQuality = aux[5]; metadata.idEnteredData = idDocument; db.metadatas.Add(metadata); } db.SaveChanges(); } return(true); } catch { return(false); } }
public void saveFileData(StreamReader csvReader, HttpPostedFileBase fileToCheck, enteredData enteredData) //Guardar datos en la bbdd { csvReader.BaseStream.Seek(0, SeekOrigin.Begin); //Resetea la posición del stream para que empiece de nuevo //Insertar Datos en la BBDD int rowNumber = 1; int idDocument = checkAndInsertDocumentFeatures(enteredData, Path.GetFileName(fileToCheck.FileName)); var selectedStation = db.stations.Where(a => a.idStation.Equals(enteredData.idStation)).FirstOrDefault(); while (!csvReader.EndOfStream) { if (selectedStation.measurementType.nameMT == "Meteorological") { string reader = csvReader.ReadLine(); if (!reader.Contains("#")) { insertMeteorologicalData(idDocument, reader, selectedStation); } else { insertMeteoMetadata(idDocument, rowNumber, reader, enteredData); rowNumber = rowNumber + 1; } } else if (selectedStation.measurementType.nameMT == "Glaciological") { string reader = csvReader.ReadLine(); if (!reader.Contains("#")) { insertGlaciologicalData(idDocument, reader); } } else { string reader = csvReader.ReadLine(); insertHydrologicalData(idDocument, rowNumber, reader); rowNumber = rowNumber + 1; } } //Insertar documento en la carpeta UploadedFiles string fileName = "ORIGINAL-" + Path.GetFileName(fileToCheck.FileName); string path = Path.Combine(Server.MapPath("~/UploadedFiles"), fileName); fileToCheck.SaveAs(path); //Session["error"] = "File uploaded successfully!"; //return RedirectToAction("UploadFile"); }