public JObject Crear([FromBody] EntidadSimple e) { //Recuperar pre-entidad correspondiente var _preEntElements = data.GetDocument("_id", e.id_precarga, "PreEntidades").Elements.ToList(); //Crear instancias de nueva variable de entidad Entidades e1 = new Entidades(); e1.reactores = new List <Reactor>(); e1.sensores = new Sensor(); e1.sensores.temp = new Temperature(); e1.sensores.hum = new Humidity(); //Carga de datos de entidad nueva e1.id_entidad = _preEntElements[0].Value.ToInt32(); e1.nombre = e.nombre; //Reactores IPAddress _ipr = IPAddress.Parse(_preEntElements[1].Value.ToString()); e1.reactores.Add(new Reactor() { tipo = "Riego", estado = false, ip_reactor = _ipr }); e1.reactores.Add(new Reactor() { tipo = "Climatizador", estado = false, ip_reactor = _ipr }); //Sensores IPAddress _ips = IPAddress.Parse(_preEntElements[2].Value.ToString()); e1.sensores.ip_sensor = _ips; e1.sensores.temp.max = e.temp_max; e1.sensores.temp.min = e.temp_min; e1.sensores.hum.max = e.hum_max; e1.sensores.hum.min = e.hum_min; //Insercion nueva entidad completa string _response = data.InsertDocument("Entidades", e1.ToBsonDocument()); //Actualizacion de pre-entidad marcandola como entidad activa. data.UpdateDocument(data.GetCollection("PreEntidades"), "activo", false, "activo", true); //Carga de entidad en ultimas lecturas para su mantenimiento. BsonDocument _eUltimaLectura = new BsonDocument(); _eUltimaLectura.Add(new BsonElement("_id", e1.id_entidad)); _eUltimaLectura.Add(new BsonElement("temp", 0)); _eUltimaLectura.Add(new BsonElement("hum", 0)); data.InsertDocument("UltimasLecturas", _eUltimaLectura); //Devolucion de respuesta con confirmacion de insercion o error encontrado. return(JObject.Parse("{\"result\": \"" + _response + "\",\"_id\":\"" + e1.id_entidad.ToString() + "\"}")); }
static void Main(string[] args) { Console.WriteLine("┌────────────────────────────────────────────────────────────────────────────┐"); Console.WriteLine("│ Entidades Extendidas PoC │"); Console.WriteLine("└────────────────────────────────────────────────────────────────────────────┘"); try { #region Pruebas ICloneable // Clonado de la entidad simple EntidadSimple entSim = new EntidadSimple { Id = 1, Descripcion = "Simple 1" }; EntidadSimple entSimCopia = entSim.Clone() as EntidadSimple; entSimCopia.Id = 2; entSimCopia.Descripcion = "Simple 2"; if (entSim.Descripcion == entSimCopia.Descripcion) { Console.WriteLine("¡Vaya no ha hecho bien la copia simple!"); } else { Console.WriteLine("Clonado de la entidad simple correcto."); } // Clonado de la entidad compleja bool clonadoComplejoCorrecto = true; EntidadCompleja entCom = new EntidadCompleja { Id = 1, Nombre = "Compleja 1", Coleccion1 = new List <string> { "Primero", "Segundo" }, Coleccion2 = new string[] { "AAAA", "BBBB" }, Coleccion3 = new ArrayList() { "1111", "2222" }, Simple = entSim, Fecha = new DateTime(2019, 6, 10) }; EntidadCompleja entComCopia = entCom.Clone() as EntidadCompleja; entComCopia.Id = 2; if (entCom.Id == entComCopia.Id) { clonadoComplejoCorrecto = false; Console.WriteLine("¡Vaya no ha hecho bien la copia simple!"); } entComCopia.Coleccion1[0] = "Tercero"; if (entCom.Coleccion1[0] == entComCopia.Coleccion1[0]) { clonadoComplejoCorrecto = false; Console.WriteLine("¡Vaya no ha hecho bien la copia del listado 1!"); } entComCopia.Coleccion2[0] = "CCCC"; if (entCom.Coleccion2[0] == entComCopia.Coleccion2[0]) { clonadoComplejoCorrecto = false; Console.WriteLine("¡Vaya no ha hecho bien la copia del listado 2!"); } entComCopia.Coleccion3[0] = "3333"; if (entCom.Coleccion3[0] == entComCopia.Coleccion3[0]) { clonadoComplejoCorrecto = false; Console.WriteLine("¡Vaya no ha hecho bien la copia del listado 2!"); } entComCopia.Simple.Id = 3; if (entCom.Simple.Id == entComCopia.Simple.Id) { clonadoComplejoCorrecto = false; Console.WriteLine("¡Vaya no ha hecho bien la copia del objeto!"); } entComCopia.Fecha = entComCopia.Fecha.AddDays(1); if (entCom.Fecha == entComCopia.Fecha) { clonadoComplejoCorrecto = false; Console.WriteLine("¡Vaya no ha hecho bien la copia de la fecha!"); } if (clonadoComplejoCorrecto) { Console.WriteLine("Clonado de la entidad compleja correcto."); } #endregion #region Pruebas Hash entSimCopia = entSim.Clone() as EntidadSimple; int hash1s = entSim.GetHashCode(); int hash2s = entSimCopia.GetHashCode(); Dictionary <EntidadCompleja, object> dic = new Dictionary <EntidadCompleja, object>(); entComCopia = entCom.Clone() as EntidadCompleja; int hash1 = entCom.GetHashCode(); int hash2 = entComCopia.GetHashCode(); bool sonIguales = entCom == entComCopia; dic.Add(entCom, "Uno"); if (!dic.ContainsKey(entComCopia)) { dic.Add(entComCopia, "Dos"); Console.WriteLine("Si pasa por aquí es que se ha duplicado la entidad en el diccionario."); } #endregion } catch (Exception ex) { Console.WriteLine($"ERROR : {ex.Message}"); } }