public async Task <IActionResult> Registrar(int kwh)
        {
            if (kwh <= 0)
            {
                TempData["Mensagem"] = "*valor inválido ";
                return(RedirectToAction(nameof(Index)));
            }
            if (medidor.LeituraDoDiaJaRealizada())
            {
                TempData["Mensagem"] = $"O registro de hoje já foi realizado!";
                return(RedirectToAction(nameof(Index)));
            }

            if (medidor.ValorEhMenorDoQueOsQueJaForamRegistrados(kwh))
            {
                TempData["Mensagem"] = $"Digite um valor maior que o último registrado!";
                return(RedirectToAction(nameof(Index)));
            }
            var leitura = new LeituraDoRelogio(kwh);

            db.Add(leitura);
            await medidor.RegistrarConsumo(leitura.Kwh);

            db.SaveChanges();
            return(RedirectToAction(nameof(HomeController.Index), "Home"));
        }
        public static List <LeituraDoRelogio> LeiturasDoRelogio()
        {
            var kwh100 = new LeituraDoRelogio(100);

            var leituras = new List <LeituraDoRelogio> {
                kwh100
            };

            return(leituras);
        }
        public void DeveRegistrarUmLeituraPorDia()
        {
            //Given
            var ultimaLeitura = UltimaLeitura();

            //When
            var novaLeitura = new LeituraDoRelogio(360);

            //Then
            Assert.True(ultimaLeitura.Registro.Value.Date.AddDays(-1) < novaLeitura.Registro.Value.Date);
        }
        public static LeituraDoRelogio UltimaLeitura()
        {
            var kwh200 = new LeituraDoRelogio(200);
            var kwh500 = new LeituraDoRelogio(500);

            var db = BancoEmMemoria();

            db.AddRange(kwh200, kwh500);
            db.SaveChanges();

            var ultimaLeitura = db.LeiturasDoRelogio.LastOrDefault();

            return(ultimaLeitura);
        }
        public void DeveRegistrarConsumoAoRegistrarNovaLeitura()
        {
            //Given
            var novaLeitura = new LeituraDoRelogio(360);

            var db      = BancoEmMemoria();
            var medidor = new Medidor(db);

            var leituras = LeiturasDoRelogio();

            db.AddRange(leituras);
            db.SaveChanges();

            //When
            medidor.RegistrarConsumo(novaLeitura.Kwh);

            //Then
            Assert.Equal(260, leituras[0].Consumo);
        }