コード例 #1
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public Ahorro(DispositivoInteligente d)
 {
     FechaFinal    = new DateTime(3000, 1, 1);
     FechaInicial  = DateTime.Now;
     DispositivoID = d.DispositivoID;
     Desc          = "Ahorro";
 }
コード例 #2
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public Encendido(DispositivoInteligente d)
 {
     FechaInicial  = DateTime.Now;
     FechaFinal    = new DateTime(3000, 1, 1);
     DispositivoID = d.DispositivoID;
     Desc          = "Encendido";
 }
コード例 #3
0
        public void EjecutarRecomendacion()
        {
            using (var db = new DBContext())
            {
                clientes = db.Usuarios.Where(x => x.EsAdmin == false).ToList();
            }
            foreach (var c in clientes)
            {
                var cl     = new Cliente(c.Username);
                var result = GenerarRecomendacion(cl);

                double[] doubleV = ParsearString(result);

                int i = 1;

                if (cl.AccionAutomatica == true)
                {
                    foreach (var de in LDE)
                    {
                        i++;
                    }
                    foreach (var di in LDI)
                    {
                        var disp = new DispositivoInteligente(di.DispositivoID);
                        if (doubleV[i] * disp.KWxHora < disp.ConsumoEnHoras(DateTime.Now.Day * 24))
                        {
                            disp.Apagar();
                        }
                        i++;
                    }
                }
            }
        }
コード例 #4
0
        public void ActualizarUltimoEstadoSAMSUNG(DispositivoInteligente DI)
        {
            using (var db = new DBContext())
            {
                var ultimoEstado = db.Estados.Find(DI.IDUltimoEstado);
                switch (ultimoEstado.Desc)
                {
                case "Apagado":
                    DI.Estado         = new Apagado(DI);
                    DI.Estado.StateID = ultimoEstado.StateID;
                    break;

                case "Encendido":
                    DI.Estado         = new Encendido(DI);
                    DI.Estado.StateID = ultimoEstado.StateID;
                    break;

                case "Ahorro":
                    DI.Estado         = new Ahorro(DI);
                    DI.Estado.StateID = ultimoEstado.StateID;
                    break;

                default:
                    throw new Exception("Estado no reconocido");
                }
            }
        }
コード例 #5
0
 public List <State> GetEstadosSAMSUNG(DispositivoInteligente DI)
 {
     //Retorna los estados del dispositivo
     using (var db = new DBContext())
     {
         return(db.Estados.Where(e => e.DispositivoID == DI.DispositivoID).ToList());
     }
 }
コード例 #6
0
        public double ConsumoEnHorasSAMSUNG(double horas, DispositivoInteligente DI)
        {
            using (var db = new DBContext())
            {
                DI.estadosAnteriores = db.Estados.Where(e => e.DispositivoID == DI.DispositivoID).ToList();
            }
            DateTime fFinal   = DateTime.Now;
            DateTime fInicial = fFinal.AddHours(-horas);
            double   hs       = Static.FechasAdmin.HsConsumidasTotalPeriodo(fInicial, fFinal, DI.estadosAnteriores);

            return(hs * DI.KWxHora);
        }
コード例 #7
0
 public void AgregarEstadoSAMSUNG(State est, DispositivoInteligente DI)
 {
     DI.Estado = est; //dejar sirve para los cambios de estado cuando el disp esta en memoria
                      //asi evitar recurrir a la base
     using (var db = new DBContext())
     {
         db.Estados.Add(est); //Agrega el nuevo estado a la db
         db.SaveChanges();
         DI.IDUltimoEstado = est.StateID;
         var DIact = db.Dispositivos.Find(DI.DispositivoID);
         DIact.IDUltimoEstado = est.StateID;
         db.SaveChanges();
     }
 }
コード例 #8
0
        public double ConsumoActualSAMSUNG(DispositivoInteligente DI)
        {
            DI.ActualizarUltimoEstado();
            switch (DI.Estado.Desc)
            {
            case "Encendido":
                return(DI.KWxHora);

            case "Ahorro":
                return(DI.KWxHora / 2);

            default:
                return(0);
            }
        }
コード例 #9
0
        public double ConsumoEnPeriodoSAMSUNG(DateTime fInicial, DateTime fFinal, DispositivoInteligente DI)
        {
            if (fFinal > DateTime.Now)
            {
                fFinal = DateTime.Now;
            }

            using (var db = new DBContext())
            {
                DI.estadosAnteriores = db.Estados.Where(e => e.DispositivoID == DI.DispositivoID).ToList();
            }
            double hs = Static.FechasAdmin.HsConsumidasTotalPeriodo(fInicial, fFinal, DI.estadosAnteriores);

            return(Math.Round(hs * DI.KWxHora, 3));
        }
コード例 #10
0
 public override void AgregarDispInteligente(DispositivoInteligente DI)
 {
     PuntosAcum += 15;
     Dispositivos.Add(DI);
     using (var db = new DBContext())
     {
         foreach (Usuario u in db.Usuarios)
         {
             if (u.Username == Username)
             {
                 u.PuntosAcum += 15;
                 DI.UsuarioID  = u.UsuarioID;
                 break;
             }
         }
         db.Dispositivos.Add(DI);
         db.SaveChanges();
     }
     DI.AgregarEstado(new Apagado(DI));
     DI.AgregarActuadores();
 }
コード例 #11
0
        public override void EjecutarRegla(Regla regla)
        {
            //Metodo para ejecutar la regla
            //Metodo Strategy donde hay varias acciones que podria enviar al dispositivo de acuerdo a la regla
            DispositivoInteligente d = new DispositivoInteligente(DispositivoID);

            switch (regla.Descripcion)
            {
            case "encender":
                d.Encender();
                break;

            case "apagar":
                d.Apagar();
                break;

            case "ahorro":
                d.AhorrarEnergia();
                break;
            }
        }
コード例 #12
0
        public double ConsumoSAMSUNG(DispositivoInteligente DI)
        {
            double acumuladoKw = 0;

            DI.ConsumoAcumulado = 0;
            double tiempoTotal = 0;

            DI.estadosAnteriores = DI.GetEstados();
            foreach (State s in DI.estadosAnteriores)
            {
                double c = 0;
                if (s.FechaFinal == new DateTime(3000, 1, 1)) //Si el estado no termino, se usa la fecha de ahora como la final
                {
                    s.FechaFinal = DateTime.Now;
                }

                switch (s.Desc)
                {
                case "Encendido":
                    c            = (s.FechaFinal - s.FechaInicial).Minutes;
                    tiempoTotal += c;
                    break;

                case "Ahorro":
                    c            = (s.FechaFinal - s.FechaInicial).Minutes / 2;
                    tiempoTotal += c;
                    break;

                case "Apagado":
                    tiempoTotal = (s.FechaFinal - s.FechaInicial).Minutes;
                    break;
                }
                DI.ConsumoAcumulado += c;
                acumuladoKw         += c * DI.KWxHora / 60;
            }
            DI.ConsumoPromedio = acumuladoKw / tiempoTotal;
            return(acumuladoKw);
        }
コード例 #13
0
        public override DispositivoInteligente ConvertirEnInteligente(string marca)
        {
            DispositivoInteligente convertido = null;

            switch (marca)
            {
            case "Samsung":
                //AdaptadorSamsug convertido = new AdaptadorSamsung(...)
                convertido = new AdaptadorSamsung("Adaptador Samsung para " + Nombre, Codigo, KWxHora, Max, Min);
                break;

            case "HP":
                convertido = new AdaptadorHp("Adaptador HP para " + Nombre, Codigo, KWxHora, Max, Min);
                break;

            case "Apple":
                convertido = new AdaptadorApple("Adaptador Apple para " + Nombre, Codigo, KWxHora, Max, Min);
                break;
            }
            convertido.UsuarioID = UsuarioID;
            convertido.FechaAlta = DateTime.Now;

            return(convertido);
        }
コード例 #14
0
 public void ActualizarConsumoAcumuladoSAMSUNG(string fechaAlta, DispositivoInteligente DI)
 {
     DI.ConsumoAcumulado = DI.ConsumoEnPeriodo(DateTime.Parse(fechaAlta), DateTime.Now);
 }
コード例 #15
0
 public void AhorrarEnergiaSAMSUNG(DispositivoInteligente DI)
 {
     DI.Estado.AhorrarEnergia(DI);
 }
コード例 #16
0
 public void ApagarSAMSUNG(DispositivoInteligente DI)
 {
     DI.Estado.Apagar(DI);
 }
コード例 #17
0
 public void EncenderSAMSUNG(DispositivoInteligente DI)
 {
     DI.Estado.Encender(DI);
 }
コード例 #18
0
 public bool EnAhorroSAMSUNG(DispositivoInteligente DI)
 {
     return(DI.Estado is Ahorro);
 }
コード例 #19
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public override void AhorrarEnergia(DispositivoInteligente d)
 {
     FechaFinal = DateTime.Now;
     FinalizarEstado();
     d.AgregarEstado(new Ahorro(d));
 }
コード例 #20
0
ファイル: Usuario.cs プロジェクト: ncoen97/TP-0
 public abstract void AgregarDispInteligente(DispositivoInteligente DI);
コード例 #21
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public override void AhorrarEnergia(DispositivoInteligente d)
 {
     // throw new Exception("El dispositivo ya esta ahorrando!");
 }
コード例 #22
0
 public State GetEstadoSAMSUNG(DispositivoInteligente DI)
 {
     return(DI.Estado);
 }
コード例 #23
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public abstract void Encender(DispositivoInteligente d);
コード例 #24
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public abstract void Apagar(DispositivoInteligente d);
コード例 #25
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public abstract void AhorrarEnergia(DispositivoInteligente d);
コード例 #26
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public override void Encender(DispositivoInteligente d)
 {
     //throw new Exception("El dispositivo ya esta encendido!");
 }
コード例 #27
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public override void Apagar(DispositivoInteligente d)
 {
     //  throw new Exception("El dispositivo ya esta apagado!");
 }
コード例 #28
0
 public bool EstaEncendidoSAMSUNG(DispositivoInteligente DI)
 {
     return(DI.Estado is Encendido);
 }
コード例 #29
0
 public bool EstaApagadoSAMSUNG(DispositivoInteligente DI)
 {
     return(DI.Estado is Apagado);
 }
コード例 #30
0
ファイル: State.cs プロジェクト: ncoen97/TP-0
 public override void Apagar(DispositivoInteligente d)
 {
     FechaFinal = DateTime.Now;
     FinalizarEstado();
     d.AgregarEstado(new Apagado(d));
 }