public string Insertar([FromBody] Lecturas _lectura) { //Si no existe la entidad no deberia poder grabar lecturas if (data.GetDocument("id",_lectura.id_entidad,"Entidades").Elements.ToList()[0].Name == "_code") { return JObject.Parse("{\"return\":\"No se pueden anexar lecturas de una entidad no registrada\"}").ToString(); } //Update UltimasLecturas IMongoCollection<BsonDocument> collection = data.GetCollection("UltimasLecturas"); data.UpdateDocument(collection,"_id", _lectura.id_entidad, "temp", _lectura.temperatura); data.UpdateDocument(collection,"_id", _lectura.id_entidad, "hum", _lectura.humedad); //Activar/Desactivar Riego/Ventailacion JObject _entidad = JObject.Parse(data.GetDocsWithProjection("Entidades", new string[]{"_id"}, "id_entidad", _lectura.id_entidad).First().ToJson()); SensoresController _sense_data = new SensoresController(); var _param = JObject.Parse(_sense_data.Parametros(_lectura.id_entidad).ToString()).GetValue("sensores"); double tmax = double.Parse(_param.SelectToken("temp.max").ToString()); double tmin = double.Parse(_param.SelectToken("temp.min").ToString()); double hmax = double.Parse(_param.SelectToken("hum.max").ToString()); double hmin = double.Parse(_param.SelectToken("hum.min").ToString()); //Obtener parametros actuales de entidad JToken _reactoresEntidad = _entidad.GetValue("reactores"); bool _riegoCurrentState = bool.Parse(JObject.Parse(_reactoresEntidad.First().ToString()).GetValue("estado").ToString()); bool _ventilacionCurrentState = bool.Parse(JObject.Parse(_reactoresEntidad.Last().ToString()).GetValue("estado").ToString()); IPAddress ipReactor = IPAddress.Parse(JObject.Parse(_reactoresEntidad.First().ToString()).GetValue("ip_reactor").ToString());
public ActionResult Create(FormCollection collection, HttpPostedFileBase ArchAuto, HttpPostedFileBase ArchManual) { try { if (ArchAuto != null && ArchAuto.ContentLength > 0 && ArchAuto.FileName.EndsWith("txt") && ArchManual != null && ArchManual.ContentLength > 0 && (ArchManual.FileName.EndsWith("xls") || ArchManual.FileName.EndsWith("xlsx")) ) { string pathArchManual = ""; if (!Directory.Exists(Server.MapPath("Excels"))) { Directory.CreateDirectory(Server.MapPath("Excels")); } var readerArchAuto = new BinaryReader(ArchAuto.InputStream); string resultArchAuto = System.Text.Encoding.UTF8.GetString(readerArchAuto.ReadBytes(ArchAuto.ContentLength)); string[] lineasArchAuto = Regex.Split(resultArchAuto, "\r\n"); Relevamientos objRelevamiento = new Relevamientos(); objRelevamiento.Observaciones = collection["Observaciones"]; objRelevamiento.FechaCarga = DateTime.Now; objRelevamiento.FechaInicio = DateTime.Parse(lineasArchAuto[0].Split(';')[0].ToString()); objRelevamiento.FechaFinal = DateTime.Parse(lineasArchAuto[lineasArchAuto.Length - 1].Split(';')[0].ToString()); objRelevamiento.IdEstado = 1; objRelevamiento.IdTrampa = int.Parse(lineasArchAuto[0].Split(';')[2].ToString()); db.Relevamientos.Add(objRelevamiento); //db.SaveChanges(); pathArchManual = Server.MapPath("Excels") + @"\" + ArchManual.FileName; if (System.IO.File.Exists(pathArchManual)) { System.IO.File.Delete(pathArchManual); } ArchManual.SaveAs(pathArchManual); string cnnStr = ""; if (pathArchManual.EndsWith(".xlsx")) { //Excel 2007 cnnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'"; cnnStr += ";Data Source=" + pathArchManual + ";"; } else { //Excel 97-2003 //http://www.connectionstrings.com/excel (leer sobre la clave de registro TypeGuessRows) cnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"; cnnStr += ";Data Source=" + pathArchManual + ";"; } System.Data.OleDb.OleDbConnection oCnn = new System.Data.OleDb.OleDbConnection(cnnStr); System.Data.OleDb.OleDbDataAdapter oDa = null; DataTable dtArchManual = new DataTable(); try { oCnn.Open(); //Obtenemos los nombres de las hojas del Excel. DataTable dtHojas = oCnn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null); if (dtHojas.Rows.Count > 0) { string firstSheet = dtHojas.Rows[0]["TABLE_NAME"].ToString().Trim(); string selectCmd = "select * from [" + firstSheet + "]"; oDa = new System.Data.OleDb.OleDbDataAdapter(selectCmd, oCnn); oDa.Fill(dtArchManual); } oCnn.Close(); dtArchManual.Columns.Add("Fecha"); foreach (DataRow drFila in dtArchManual.Rows) { int iAño = 0; int iMes = 0; int iDia = 0; int.TryParse(drFila[0].ToString(), out iAño); int.TryParse(drFila[1].ToString(), out iMes); int.TryParse(drFila[2].ToString(), out iDia); if (iAño > 0 && iMes > 0 && iDia > 0) { DateTime tFecha = new DateTime(iAño, iMes, iDia); drFila["Fecha"] = tFecha.Date.ToShortDateString(); } if (drFila["Fecha"].ToString() == objRelevamiento.FechaFinal.ToShortDateString()) { foreach (DataColumn dcColumna in dtArchManual.Columns) { if (dcColumna.Ordinal > 2) { //CORREGIR SELECCION DE INSECTO Insectos objInsecto = (from obj in db.Insectos where obj.NombreCientifico == dcColumna.ColumnName select obj).FirstOrDefault(); if (objInsecto != null) { int Cantidad = 0; int.TryParse(drFila[dcColumna.Ordinal].ToString(), out Cantidad); if (Cantidad > 0) { LecturasManuales objLecturasManuales = new LecturasManuales(); objLecturasManuales.IdRelevamiento = objRelevamiento.IdRelevamiento; objLecturasManuales.IdInsecto = objInsecto.IdInsecto; objLecturasManuales.Cantidad = Cantidad; objLecturasManuales.IdEstado = 1; db.LecturasManuales.Add(objLecturasManuales); } } } } //db.SaveChanges(); break; } } } catch (Exception ex) { throw ex; } finally { if (oCnn.State == ConnectionState.Open) { oCnn.Close(); } } if (oDa != null) { oDa.Dispose(); } if (oCnn != null) { oCnn.Dispose(); } //var objRelevamiento2 = (from obj in db.Relevamientos select obj).OrderByDescending(i => i.IdRelevamiento).First(); foreach (string Linea in lineasArchAuto) { string[] arrDatos = Linea.Split(';'); if (arrDatos.Length > 1 && arrDatos[1].ToString() == "LECTURA") { Lecturas objLecturas = new Lecturas(); objLecturas.IdEstado = 1; objLecturas.IdRelevamiento = objRelevamiento.IdRelevamiento; objLecturas.Frecuencia = double.Parse(arrDatos[2], System.Globalization.CultureInfo.InvariantCulture); objLecturas.Aleteos = int.Parse(arrDatos[3]); objLecturas.FechaLectura = DateTime.Parse(arrDatos[0]); db.Lecturas.Add(objLecturas); } else if (arrDatos.Length > 1 && arrDatos[1].ToString() == "ESTADO") { Monitoreos objMonitoreos = new Monitoreos(); objMonitoreos.IdEstado = 1; objMonitoreos.IdRelevamiento = objRelevamiento.IdRelevamiento; objMonitoreos.Humedad = double.Parse(arrDatos[3], System.Globalization.CultureInfo.InvariantCulture); objMonitoreos.Temperatura = double.Parse(arrDatos[2], System.Globalization.CultureInfo.InvariantCulture); objMonitoreos.Bateria = double.Parse(arrDatos[4], System.Globalization.CultureInfo.InvariantCulture); objMonitoreos.FechaMonitoreo = DateTime.Parse(arrDatos[0]); db.Monitoreos.Add(objMonitoreos); } } db.SaveChanges(); return(Redirect("~/Alarmas/GenerarAlarmas")); } else { return(View()); } } catch (Exception ex) { throw ex; } }