public JsonResult EjecutarRegla(int IdRegla)
        {
            SGEContext db = new SGEContext();
            BaseRepositorio <Regla> repoRegla = new BaseRepositorio <Regla>(db);
            var includesRegla = new List <Expression <Func <Regla, object> > >()
            {
                r => r.Acciones,
                r => r.Condiciones,
                r => r.Inteligente
            };
            Regla regla = repoRegla.Single(r => r.ReglaId == IdRegla, includesRegla);

            BaseRepositorio <Condicion> repoCondicion = new BaseRepositorio <Condicion>(db);
            var includesCondicion = new List <Expression <Func <Condicion, object> > >()
            {
                c => c.Sensor,
                c => c.Operador
            };

            regla.Acciones.ToList().ForEach(a => a.Dispositivo = regla.Inteligente);

            regla.Condiciones.ToList().ForEach(c => c = repoCondicion.Single(co => co.CondicionId == c.CondicionId, includesCondicion));

            regla.Condiciones.ToList().ForEach(c => c.Sensor.Dispositivo = regla.Inteligente);

            regla.Condiciones.ToList().ForEach(c => c.Sensor.TipoSensor             = db.Sensores.Include("Catalogos").First(s => s.Id == c.SensorId));
            regla.Condiciones.ToList().ForEach(c => c.Sensor.TipoSensor.Dispositivo = regla.Inteligente);


            regla.Ejecutar();

            repoRegla.Update(regla);

            return(Json(new { success = true }));
        }
Ejemplo n.º 2
0
        //• Consumo por hogar/periodo.
        public static decimal consumoPorHogarYPeriodo(int idUsuario, DateTime fechaDesde, DateTime fechaHasta)
        {
            SGEContext context = new SGEContext();
            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>(context);
            decimal consumo = 0;

            var includesCliente = new List <Expression <Func <Cliente, object> > >()
            {
                c => c.Inteligentes
            };
            Cliente cliente = repoCliente.Single(u => u.Id == idUsuario, includesCliente);

            var includesInteligente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.RegistroDeActivaciones
            };

            foreach (Inteligente inteligente in cliente.Inteligentes)
            {
                BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(context);
                Inteligente inte = repoInteligente.Single(i => i.Id == inteligente.Id, includesInteligente);

                consumo += inte.ObtenerConsumoPeriodo(fechaDesde, fechaHasta);
            }

            foreach (Estandar estandar in cliente.Estandars)
            {
                consumo += estandar.ConsumoAproximado((int)Math.Ceiling(fechaHasta.Subtract(fechaDesde).TotalHours));
            }

            return(consumo);
        }
        public JsonResult CambiarEstado(int idInteligente, EstadoDispositivo estado)
        {
            SGEContext context = new SGEContext();

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(context);
            Inteligente inteligente = repoInteligente.Single(i => i.Id == idInteligente);

            inteligente.Context = context;

            switch (estado)
            {
            case EstadoDispositivo.AhorroEnergia:
                inteligente.ColocarEnAhorroEnergia();
                break;

            case EstadoDispositivo.Apagado:
                inteligente.Apagar();
                break;

            case EstadoDispositivo.Encendido:
                inteligente.Encender();
                break;

            default:
                return(Json(new { success = false, error = "Estado desconocido" }));
            }


            repoInteligente.Update(inteligente);

            return(Json(new { success = true }));
        }
Ejemplo n.º 4
0
        public void MockEdit()
        {
            var customerDbSetMock =
                new Mock <DbSet <Customer> >();

            var webContextMock =
                new Mock <WebContextDb>();

            webContextMock.Setup(m => m.Set <Customer>()).
            Returns(customerDbSetMock.Object);

            webContextMock.Setup(m => m.Set <Customer>()).
            Returns(customerDbSetMock.Object);

            var repository =
                new BaseRepositorio <Customer>(webContextMock.Object);

            //customerMockList();

            var newcustomer = TestcustomerOk();

            repository.Agregar(newcustomer);
            // customerDbSetMock.Verify(p => p.Add(It.IsAny<customer>()), Times.Once);
            var customerGetByID = repositorio
                                  .GetById(p => p.FirstName == "Name1");

            //      var customerToUpdate = repository.GetById(x => x.FirstName == "Name1");
            webContextMock.Verify(w => w.SaveChanges(), Times.Once);
        }
        public JsonResult ejecutarSimplex()
        {
            Dictionary <string, double> resultadoSimplex = ejecucionSimplex();
            var        UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var        user        = UserManager.FindById(User.Identity.GetUserId());
            SGEContext db          = new SGEContext();

            if (resultadoSimplex == null)
            {
                return(Json(new { success = false, error = "No se puede ejecutar el simplex" }));
            }

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(db);
            var includesCliente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.RegistroDeActivaciones,
                i => i.Clientes
            };
            Inteligente inteligente = null;

            foreach (KeyValuePair <string, double> item in resultadoSimplex)
            {
                if (item.Value > 0 && item.Key != "TotalHorasRestantes" && item.Key != "ConsumoRestanteTotal")
                {
                    inteligente = repoInteligente.Single(i => i.Nombre == item.Key && i.Clientes.Any(c => c.NombreUsuario == user.UserName), includesCliente);
                    inteligente.Encender();
                    repoInteligente.Update(inteligente);
                }
            }

            return(Json(new { success = true }));
        }
        // GET: Admin/Reportes
        public ActionResult Index()
        {
            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>();
            ICollection <Cliente>     clientes    = repoCliente.GetAll();

            ViewBag.clientes = clientes.Select(c => new SelectListItem()
            {
                Text  = c.NombreUsuario,
                Value = c.Id.ToString(),
            });

            BaseRepositorio <Transformador> repoTransformador = new BaseRepositorio <Transformador>();
            ICollection <Transformador>     transformadores   = repoTransformador.GetAll();

            ViewBag.transformadores = transformadores.Select(t => new SelectListItem()
            {
                Text  = t.codigo.ToString(),
                Value = t.Id.ToString(),
            });

            ViewBag.tiposDispositivos = new SelectList(new[]
            {
                new { Value = "inteligente", Text = "Inteligente" },
                new { Value = "estandar", Text = "Estandar" },
            }, "Value", "Text");

            return(View());
        }
        public JsonResult EliminarRegla(int IdRegla)
        {
            SGEContext db = new SGEContext();
            BaseRepositorio <Regla> repoRegla = new BaseRepositorio <Regla>(db);
            Regla regla = repoRegla.Single(r => r.ReglaId == IdRegla);

            repoRegla.Delete(regla);

            return(Json(new { success = true }));
        }
Ejemplo n.º 8
0
        // In this method we will create default User roles and Admin user for login
        private void createRolesandUsers()
        {
            ApplicationDbContext context = new ApplicationDbContext();

            var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context));
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            //se crean roles
            if (!roleManager.RoleExists("Admin"))
            {
                // first we create Admin rool
                var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
                role.Name = "Admin";
                roleManager.Create(role);

                //se inicializa super admin,

                var user = new ApplicationUser();
                user.Nombre   = "SuperAdministrador";
                user.Apellido = "SuperAdministrador";
                user.UserName = "******";
                user.Email    = "*****@*****.**";

                string userPWD = "A@z200711";
                var    chkUser = UserManager.Create(user, userPWD);

                //se le vincula el Rol admin
                if (chkUser.Succeeded)
                {
                    var result1 = UserManager.AddToRole(user.Id, "Admin");
                }
                //se sincroniza con nuestro SGEContext
                BaseRepositorio <Administrador> repoAdmin = new BaseRepositorio <Administrador>();

                Administrador admin = null;

                admin = new Administrador()
                {
                    Nombre        = user.Nombre,
                    Apellido      = user.Apellido,
                    NombreUsuario = user.UserName,
                    Password      = userPWD,

                    Nui = "SuperAdmin",
                };
                repoAdmin.Create(admin);
            }
            //se crea un rol cliente que sera para todos los que se registren desde la pagina
            if (!roleManager.RoleExists("Cliente"))
            {
                var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
                role.Name = "Cliente";
                roleManager.Create(role);
            }
        }
        // GET: Cliente/Inteligentes
        public ActionResult Index()
        {
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();

            var inteligentes = repoInteligente.Filter(i => i.Clientes.Any(c => c.NombreUsuario == user.UserName));

            return(View(inteligentes));
        }
Ejemplo n.º 10
0
        public ActionResult Index()
        {
            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();
            var includesInteligente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.RegistroDeActivaciones,
                i => i.Clientes
            };

            ViewBag.dispositivosEstado = repoInteligente.GetAll(includesInteligente);;
            return(View());
        }
        public JsonResult Agregar(int idCatalogo)
        {
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            SGEContext db = new SGEContext();

            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>(db);
            Cliente cliente = repoCliente.Single(c => c.NombreUsuario == user.UserName);

            BaseRepositorio <Catalogo> repoCatalogo = new BaseRepositorio <Catalogo>(db);
            Catalogo Catalogo = repoCatalogo.Single(c => c.Id == idCatalogo);

            Inteligente inteligente = new Inteligente()
            {
                ConsumoEnergia       = Catalogo.ConsumoEnergia,
                IdentificadorFabrica = Catalogo.IdentificadorFabrica,
                Catalogo             = Catalogo,
                CatalogoId           = Catalogo.Id
            };
            string nombreInteligente = Catalogo.Nombre + "_" + DateTime.Now.ToString("ddMMyyHHmmss");

            nombreInteligente  = nombreInteligente.Replace(" ", "_");
            inteligente.Nombre = nombreInteligente;

            inteligente.Clientes.Add(cliente);
            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(db);

            repoInteligente.Create(inteligente);

            db = new SGEContext();
            List <Sensor> sensores = db.Sensores.Where(s => s.Catalogos.Any(c => c.Id == Catalogo.Id)).ToList();

            foreach (Sensor sensor in sensores)
            {
                SGEContext   db2          = new SGEContext();
                SensorFisico sensorFisico = new SensorFisico()
                {
                    //TipoSensor = sensor,
                    //Dispositivo = inteligente,
                    IdDispositivo = inteligente.Id,
                    IdTipoSensor  = sensor.Id,
                    Descripcion   = sensor.Descripcion
                };
                sensorFisico.Mediciones = null;
                //repoSensorFisico.Create(sensorFisico);
                db2.SensoresFisicos.Add(sensorFisico);
                db2.SaveChanges();
            }

            return(Json(new { success = true }));
        }
        // GET: Cliente/Reglas
        public ActionResult Index()
        {
            ViewBag.reglas = ObtenerReglasActivas();

            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();

            ViewBag.tieneDispositivos = repoInteligente.Filter(i => i.Clientes.Any(c => c.NombreUsuario == user.UserName)).Count > 0;

            return(View());
        }
Ejemplo n.º 13
0
        // GET: Admin/Hogares
        public ActionResult Index()
        {
            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>();
            ICollection <Cliente>     clientes    = repoCliente.GetAll();

            ViewBag.clientes = clientes.Select(c => new SelectListItem()
            {
                Text  = c.NombreUsuario,
                Value = Reporte.consumoPorHogarYPeriodo(c.Id, DateTime.Now.AddYears(-10), DateTime.Now).ToString(),
            });

            return(View());
        }
Ejemplo n.º 14
0
        private static decimal consumoDispositivosEstandarsPorPeriodo(DateTime fechaDesde, DateTime fechaHasta)
        {
            decimal consumo = 0;
            BaseRepositorio <Estandar> repoEstandar = new BaseRepositorio <Estandar>();

            List <Estandar> estandars = repoEstandar.GetAll();

            foreach (Estandar estandar in estandars)
            {
                consumo += estandar.ConsumoAproximado((int)Math.Ceiling(fechaHasta.Subtract(fechaDesde).TotalHours));
            }

            return(consumo);
        }
        public ActionResult Editar(int idRegla)
        {
            SGEContext db = new SGEContext();

            BaseRepositorio <Operador> repoOperador = new BaseRepositorio <Operador>();

            ViewBag.Operadores = new SelectList(repoOperador.GetAll(), "Id", "Descripcion");

            Regla regla = db.Reglas.Include("Acciones").FirstOrDefault(r => r.ReglaId == idRegla);

            ViewBag.Condiciones = db.Condiciones.Include("Sensor").Include("Operador").Where(c => c.ReglaId == regla.ReglaId);

            return(View(regla));
        }
Ejemplo n.º 16
0
        private ICollection <Inteligente> ObtenerEstadosDispositivos()
        {
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();
            var includesInteligente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.RegistroDeActivaciones
            };

            var inteligentes = repoInteligente.Filter(i => i.Clientes.Any(c => c.NombreUsuario == user.UserName), includesInteligente);

            return(inteligentes);
        }
Ejemplo n.º 17
0
        private decimal ObtenerConsumoUltimoMes()
        {
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            SGEContext contexto = new SGEContext();

            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>(contexto);
            Cliente cliente = repoCliente.Single(c => c.NombreUsuario == user.UserName);

            DateTime fDesde = DateTime.Now.AddMonths(-1);
            DateTime fHasta = DateTime.Now;

            return(Reporte.consumoPorHogarYPeriodo(cliente.Id, fDesde, fHasta));
        }
        // GET: Cliente/Inteligentes/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();
            Inteligente inteligente = repoInteligente.Single(i => i.Id == id);

            if (inteligente == null)
            {
                return(HttpNotFound());
            }
            return(View(inteligente));
        }
        public ActionResult Agregar()
        {
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();

            ViewBag.inteligentes = repoInteligente.Filter(i => i.Clientes.Any(c => c.NombreUsuario == user.UserName));

            BaseRepositorio <Operador> repoOperador = new BaseRepositorio <Operador>();

            ViewBag.Operadores = new SelectList(repoOperador.GetAll(), "Id", "Descripcion");

            return(View());
        }
Ejemplo n.º 20
0
        public void TestCreate()
        {
            //Arrange
            Funcionario funcionario = new("José", "Carlos", "945.427.800-23", "A1567SSQNU", "Tecnologia");

            Mock <IBaseRepositorio <Funcionario> > mock = new ();

            mock.Setup(m => m.Create(funcionario)).ReturnsAsync(funcionario);

            //Act
            var resultadoEsperado = mock.Object.Create(funcionario).Result;
            var verifica          = new BaseRepositorio <Funcionario>(_context).Create(funcionario).Result;

            //Assert
            Assert.Equal(verifica, resultadoEsperado);
        }
Ejemplo n.º 21
0
        public void cargaAdmin()
        {
            BaseRepositorio <Administrador> repoAdmin = new BaseRepositorio <Administrador>();
            Administrador adminNuevo = new Administrador()
            {
                Nombre        = "NombreAdmin_test_01",
                Apellido      = "ApellidoAdmin_test_01",
                NombreUsuario = "NombreUsuarioAdmin_test_1",
                Password      = "******",

                Nui = "abc-235"
            };

            repoAdmin.Create(adminNuevo);
            repoAdmin.Delete(adminNuevo);
        }
        public JsonResult AgregarRegla(string nombreRegla, int idInteligente, long[] idsAcciones, List <Condicion> condiciones)
        {
            SGEContext db = new SGEContext();
            BaseRepositorio <Regla> repoRegla = new BaseRepositorio <Regla>(db);
            Regla regla = new Regla()
            {
                Nombre        = nombreRegla,
                IdInteligente = idInteligente,
                Condiciones   = condiciones
            };

            regla.Acciones = db.Acciones.Where(a => idsAcciones.Any(x => x == a.Id)).ToList();

            repoRegla.Create(regla);

            return(Json(new { success = true }));
        }
Ejemplo n.º 23
0
        private static decimal consumoDispositivosInteligentesPorPeriodo(DateTime fechaDesde, DateTime fechaHasta)
        {
            decimal consumo = 0;
            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();
            var includesInteligente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.RegistroDeActivaciones
            };
            List <Inteligente> inteligentes = repoInteligente.GetAll(includesInteligente);

            foreach (Inteligente inteligente in inteligentes)
            {
                consumo += inteligente.ObtenerConsumoPeriodo(fechaDesde, fechaHasta);
            }

            return(consumo);
        }
Ejemplo n.º 24
0
        public void LevantarDispositivosArchivo()
        {
            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();

            foreach (Core.Entidades.Dispositivo dispositivo in DispositivosHelper.GetInstace().Dispositivos)
            {
                if (repoInteligente.Single(d => d.Nombre == dispositivo.Tipo) == null)
                {
                    repoInteligente.Create(new Inteligente()
                    {
                        Nombre               = dispositivo.Tipo,
                        ConsumoEnergia       = (decimal)dispositivo.Consumo,
                        IdentificadorFabrica = dispositivo.Id.Substring(0, 14)
                    });
                }
            }
        }
Ejemplo n.º 25
0
        public void CargaZona()
        {
            BaseRepositorio <Zona> repoZona = new BaseRepositorio <Zona>();
            Zona zonaNueva = new Zona()
            {
                Nombre   = "zona_01",
                Latitud  = 25,
                Longitud = 45,
                Radio    = 4,
            };

            repoZona.Create(zonaNueva);

            var ListaZonas = repoZona.GetAll();

            Assert.IsTrue(ListaZonas.Any(z => z.Nombre == zonaNueva.Nombre));
            repoZona.Delete(zonaNueva);
        }
        public async Task <ActionResult> Register(RegisterViewModel model, int TransformadorId)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.NombreUsuario, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                BaseRepositorio <Cliente> repocliente = new BaseRepositorio <Cliente>();
                Cliente cliente = null;

                cliente = new Cliente()
                {
                    Nombre          = model.Nombre,
                    Apellido        = model.Apellido,
                    NombreUsuario   = model.NombreUsuario,
                    Password        = model.Password,
                    NumeroDocumento = model.NumeroDocumento,
                    TransformadorId = TransformadorId
                };

                repocliente.Create(cliente);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    //se vincula el rol cliente a todos los registrados desde la pagina
                    var result1 = UserManager.AddToRole(user.Id, "Cliente");
                    // Para obtener más información sobre cómo habilitar la confirmación de cuentas y el restablecimiento de contraseña, visite https://go.microsoft.com/fwlink/?LinkID=320771
                    // Enviar correo electrónico con este vínculo
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirmar cuenta", "Para confirmar la cuenta, haga clic <a href=\"" + callbackUrl + "\">aquí</a>");

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return(View(model));
        }
Ejemplo n.º 27
0
        public void Inicializar()
        {
            BaseRepositorio <Categoria> repoCategoria = new BaseRepositorio <Categoria>();
            Categoria categoriaNueva = new Categoria()
            {
                Codigo        = "R2",
                ConsumoMinimo = 500,
                ConsumoMaximo = 1200,
                CostoFijo     = 500,
                CostoVariable = 350
            };

            repoCategoria.Create(categoriaNueva);

            var ListaCategorias = repoCategoria.GetAll();

            Assert.IsTrue(ListaCategorias.Any(c => c.Codigo == categoriaNueva.Codigo));
            repoCategoria.Delete(categoriaNueva);
        }
Ejemplo n.º 28
0
        //Inicio
        public ActionResult Index()
        {
            var jsonSerialiser = new JavaScriptSerializer();
            BaseRepositorio <Zona> repoZona = new BaseRepositorio <Zona>();
            SGEContext             db       = new SGEContext();

            List <object> objetos = new List <object>();

            foreach (Transformador transformador in db.Transformadores.Include("Clientes").Include("Clientes.Inteligentes").ToList())
            {
                var objeto = Json(new { transformador.Latitud, transformador.Longitud, Consumo = transformador.ObtenerConsumo() }).Data;

                objetos.Add(objeto);
            }

            ViewBag.transformadores = jsonSerialiser.Serialize(objetos);
            ViewBag.zonas           = jsonSerialiser.Serialize(repoZona.GetAll());

            return(View());
        }
Ejemplo n.º 29
0
        public void ProcesarDatosEnre()
        {
            BaseRepositorio <Transformador> repoTransformador = new BaseRepositorio <Transformador>();
            BaseRepositorio <Zona>          repoZona          = new BaseRepositorio <Zona>();
            TransformadoresHelper           transHelper       = new TransformadoresHelper();

            foreach (Core.Entidades.Transformador transformador in transHelper.Transformadores)
            {
                if (repoTransformador.Single(t => t.codigo == transformador.codigo) == null)
                {
                    repoTransformador.Create(new Transformador()
                    {
                        codigo   = transformador.codigo,
                        Latitud  = (double)transformador.Latitud,
                        Longitud = (double)transformador.Longitud,
                        ZonaId   = repoZona.Single(z => z.codigo == transformador.Zona).Id
                    });
                }
            }
        }
Ejemplo n.º 30
0
        //• Consumo por transformador por periodo.
        public static decimal consumoTransformadorPorPeriodo(int idTransformador, DateTime fechaDesde, DateTime fechaHasta)
        {
            decimal consumo = 0;
            BaseRepositorio <Transformador> repoTransformador = new BaseRepositorio <Transformador>();
            var includesTransformador = new List <Expression <Func <Transformador, object> > >()
            {
                t => t.Clientes
            };
            Transformador transformador = repoTransformador.Single(t => t.Id == idTransformador, includesTransformador);

            if (transformador != null)
            {
                foreach (Cliente cliente in transformador.Clientes)
                {
                    consumo += consumoPorHogarYPeriodo(cliente.Id, fechaDesde, fechaHasta);
                }
            }

            return(consumo);
        }