public IActionResult EdicaoCompromisso(CompromissoEdicaoModel model,
                                               [FromServices] CompromissoRepository compromissoRepository)
        {
            //verificar se todos os campos da model passaram nas regras de validação
            if (ModelState.IsValid)
            {
                try
                {
                    var compromisso = new Compromisso();
                    compromisso.IdCompromisso = model.IdCompromisso;
                    compromisso.Titulo        = model.Titulo;
                    compromisso.Descricao     = model.Descricao;
                    compromisso.DataInicio    = DateTime.Parse(model.DataInicio);
                    compromisso.HoraInicio    = TimeSpan.Parse(model.HoraInicio);
                    compromisso.DataFim       = DateTime.Parse(model.DataFim);
                    compromisso.HoraFim       = TimeSpan.Parse(model.HoraFim);
                    compromisso.Categoria     = model.Categoria;

                    //atualizar o compromisso no banco de dados
                    compromissoRepository.Update(compromisso);

                    TempData["MensagemSucesso"] = $"Compromisso {compromisso.Titulo} atualizado com sucesso.";
                }
                catch (Exception e)
                {
                    TempData["MensagemErro"] = e.Message;
                }
            }

            return(View());
        }
        public IActionResult EdicaoCompromisso(int id,
                                               [FromServices] UsuarioRepository usuarioRepository,
                                               [FromServices] CompromissoRepository compromissoRepository)
        {
            //classe model utilizada no formulário
            var model = new CompromissoEdicaoModel();

            try
            {
                //buscar o compromisso pelo id
                var compromisso = compromissoRepository.GetById(id);
                //buscar o usuario no banco de dados
                var usuario = usuarioRepository.GetByEmail(User.Identity.Name);

                //verificando se o compromisso pertence ao usuario autenticado
                if (compromisso.IdUsuario == usuario.IdUsuario)
                {
                    //transferindo os dados do compromisso para a model
                    model.IdCompromisso = compromisso.IdCompromisso;
                    model.Titulo        = compromisso.Titulo;
                    model.Descricao     = compromisso.Descricao;
                    model.DataInicio    = compromisso.DataInicio.ToString("dd/MM/yyyy");
                    model.HoraInicio    = compromisso.HoraInicio.ToString(@"hh\:mm");
                    model.DataFim       = compromisso.DataFim.ToString("dd/MM/yyyy");
                    model.HoraFim       = compromisso.HoraFim.ToString(@"hh\:mm");
                    model.Categoria     = compromisso.Categoria;
                }
                else
                {
                    return(RedirectToAction("ConsultaCompromisso"));
                }
            }
            catch (Exception e)
            {
                TempData["MensagemErro"] = e.Message;
            }

            //enviando a model para a página
            return(View(model));
        }
        public IActionResult Put(CompromissoEdicaoModel model,
                                 [FromServices] ICompromissoRepository repository,
                                 [FromServices] IMapper mapper
                                 )
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var compromisso = mapper.Map <Compromisso>(model);
                    repository.Atualizar(compromisso);

                    return(Ok("Compromisso atualizado com sucesso."));
                }
                catch (Exception e)
                {
                    return(StatusCode(500, e.Message));
                }
            }
            else
            {
                return(BadRequest());
            }
        }