public JsonResult Get(int id)
 {
     try
     {
         return(Json(FuncionarioViewModel.ToView(_funcionarioApplication.Get(id)), JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public ActionResult Put(FuncionarioViewModel vm)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    FuncionarioSimplesViewModel vmSimples = FuncionarioSimplesViewModel.Converter(vm);
                    var retorno = FuncionarioSimplesViewModel.ToView(vm.Id, _funcionarioApplication.Put(vm.Id, vmSimples.ToDomain()));
                    TempData["sucesso"] = true;
                    return(RedirectToAction("Detalhes", new { id = retorno.Id }));
                }

                FuncionarioViewModel fEntity = FuncionarioViewModel.ToView(_funcionarioApplication.Get(vm.Id));
                vm.Habilidades = fEntity.Habilidades;
                return(View("Detalhes", vm));
            }
            catch (Exception ex)
            {
                TempData["sucesso"] = false;
                TempData["erro"]    = ex;
                return(RedirectToAction("Detalhes", new { id = vm.Id }));
            }
        }
        public ActionResult Post(FuncionarioViewModel vm)
        {
            try
            {
                if (!vm.Habilidades.Any(h => h.Selecionado))
                {
                    ModelState.AddModelError("Habilidades", "O funcionário deve ter no mínimo uma habilidade.");
                }

                if (ModelState.IsValid)
                {
                    vm.Habilidades = vm.Habilidades.Where(h => h.Selecionado).ToList();
                    vm.Ativo       = true;
                    FuncionarioViewModel novo = FuncionarioViewModel.ToView(_funcionarioApplication.Post(vm.ToDomain()));
                    return(RedirectToAction("Detalhes", new { id = novo.Id }));
                }

                return(View("Novo", vm));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public ActionResult Detalhes(int id)
 {
     return(View(FuncionarioViewModel.ToView(_funcionarioApplication.Get(id))));
 }