public void CadastrarUmaTarefa()
        {
            #region Scripts para manter a integridade do banco

            var _QUERY_DELETE_INTERVALO = "delete from kadastro.dbo.Intervalo where IdPonto IN (select p.Id from kadastro.dbo.Ponto p where p.IdUsuario IN (select u.Id from kadastro.dbo.Usuario u where u.Login like '" + loginUsuario + "'));";
            unit.ExecuteCommand(_QUERY_DELETE_INTERVALO);

            var _QUERY_DELETE_PONTO = "delete from kadastro.dbo.Ponto where IdUsuario IN (select u.Id from kadastro.dbo.Usuario u where u.Login like '" + loginUsuario + "');";
            unit.ExecuteCommand(_QUERY_DELETE_PONTO);

            var _QUERY_DELETE_TAREFA = "delete from kadastro.dbo.Tarefa where IdUsuario IN (select u.Id from kadastro.dbo.Usuario u where u.Login like '" + loginUsuario + "');";
            unit.ExecuteCommand(_QUERY_DELETE_TAREFA);

            var _QUERY_DELETE_USUARIO = "delete from kadastro.dbo.usuario where Login like '" + loginUsuario + "';";
            unit.ExecuteCommand(_QUERY_DELETE_USUARIO);

            var _QUERY_INSERT_USUARIO = "insert into kadastro.dbo.usuario(Login, Senha, Email, Status) values ('" + loginUsuario + "', '123', '*****@*****.**', 'A');";
            unit.ExecuteCommand(_QUERY_INSERT_USUARIO);

            #endregion

            // Instânciando uma nova tarefa
            var tarefa = new Tarefa();
            tarefa.Descricao = "Lembrar de comprar pão!";
            tarefa.Executada = false;

            // Obter usuário cadastrado
            tarefa.Usuario = usuarioRepository.ObterPeloLogin(loginUsuario).FirstOrDefault();

            // Criando a tarefa
            tarefaRepository.Add(tarefa);
            var linhasAfetadas = unit.Commit();

            Assert.AreEqual(1, linhasAfetadas);
        }
        public void InserirTarefaExecutadaPorIdUsuario()
        {
            // Obter Usuário para relacionar a tarefa
            var usuario = _usuarioService.ObterPeloLogin(_loginUsuario);
            Assert.IsNotNull(usuario, "Usuário Cadastrado");
            Assert.AreEqual("*****@*****.**", usuario.Email);

            // Instânciando uma nova tarefa
            var tarefa = new Tarefa();
            tarefa.IdUsuario = usuario.Id.Value;
            tarefa.Descricao = "Comprar 100 gramas de presunto.";
            tarefa.Executada = true;

            var retorno = _tarefaService.Salvar(tarefa);
            Assert.IsTrue(retorno.Response);
        }
        public void InserirTarefaPorUsuario()
        {
            // Obter Usuário para relacionar a tarefa
            var usuario = _usuarioService.ObterPeloLogin(_loginUsuario);
            Assert.IsNotNull(usuario, "Usuário Cadastrado");

            // Instânciando uma nova tarefa
            var tarefa = new Tarefa();
            tarefa.Descricao = "Comprar leite!";
            tarefa.Executada = false;
            tarefa.Usuario = usuario;

            var retorno = _tarefaService.Salvar(tarefa);

            Assert.IsTrue(retorno.Response);
        }
        public BusinessResponse<bool> Salvar(Tarefa item)
        {
            bool salvo = false;
            string msg = Messages.ValidationGenerico;

            //var erros = item.FazerSeForValido<Tarefa>(() =>
                //{
                    if (item.Id.HasValue)
                    {
                        Tarefa tarefa = _tarefaRepository.Get(item.Id.Value);
                        if (tarefa != null)
                        {
                            tarefa.Descricao = item.Descricao;

                            _tarefaRepository.Modify(tarefa);
                            salvo = (_tarefaRepository.UnitOfWork.Commit() > 0);

                            if (salvo)
                                msg = Messages.ValidationTarefaAlteradaSucesso;
                        }
                        else
                        {
                            msg = Messages.ValidationTarefaNaoExiste;
                        }
                    }
                    else
                    {
                        _tarefaRepository.Add(item);
                        salvo = (_tarefaRepository.UnitOfWork.Commit() > 0);

                        if (salvo)
                            msg = Messages.ValidationTarefaSalvaSucesso;
                    }
                //});

            //if (erros.ExistemErros())
                //msg = erros.FirstOrDefault();

            return new BusinessResponse<bool>(salvo, msg);
        }
        public void ExecutarTarefaPorLoginUsuario()
        {
            // Instânciando uma nova tarefa não executada
            var tarefa = new Tarefa();
            tarefa.Descricao = "Comprar 200 gramas de queijo cottage.";
            tarefa.Executada = false;
            tarefa.Usuario = _usuarioService.ObterPeloLogin(_loginUsuario);

            // Grava a tarefa para o usuário
            _tarefaService.Salvar(tarefa);

            // Obter tarefas do usuário
            var tarefasDoUsuario = _tarefaService.Obter(_loginUsuario);
            Assert.IsNotNull(tarefasDoUsuario);
            Assert.GreaterOrEqual(tarefasDoUsuario.Count, 1);

            var tarefaParaExecutar = tarefasDoUsuario.Where(x => x.Executada == false && x.Descricao.Contains("queijo")).FirstOrDefault();
            Assert.IsNotNull(tarefaParaExecutar);

            var executada = _tarefaService.Executar(tarefaParaExecutar.Id.Value);
            Assert.IsTrue(executada.Response);
        }
        public void ExcluirTarefaDoUsuario()
        {
            // Instânciando uma nova tarefa não executada
            var tarefa = new Tarefa();
            tarefa.Descricao = "100 gramas de queijo Gorgonzola.";
            tarefa.Executada = false;
            tarefa.Usuario = _usuarioService.ObterPeloLogin(_loginUsuario);
            // Grava a tarefa para o usuário
            _tarefaService.Salvar(tarefa);

            // Obter tarefas do usuário
            var tarefaParaExcluir = _tarefaService.Obter(_loginUsuario).Where(x => x.Descricao.Contains("queijo")).FirstOrDefault();
            Assert.IsNotNull(tarefaParaExcluir);

            var excluida = _tarefaService.Excluir(tarefaParaExcluir.Id.Value);
            Assert.IsTrue(excluida.Response);
        }