public ActionResult Index()
        {
            FormularioProjetoViewModel vm = new FormularioProjetoViewModel
            {
                Projeto    = new Projeto(),
                Categorias = categoriaProjetoRepository.SimpleWhere(c => true)
            };

            return(View("FormularioProjetoView", vm));
        }
        public ActionResult EfetuaCadastro(FormularioProjetoViewModel vm)
        {
            Projeto projeto = vm.Projeto;

            projeto.UsuarioId          = User.Id;
            projeto.Vaga               = vm.Vagas.Where(v => v.Funcao != null && v.Descricao != null).ToList();
            projeto.CategoriaProjetoId = vm.IdCategoriaSelecionada;

            if (vm.ModoValor == FormularioProjetoViewModel.Modo.Cadastro && projetoRepository.SimpleWhere(p => p.Nome.Equals(projeto.Nome)).Count() != 0)
            {
                ModelState.AddModelError("Projeto.Nome", "Já existe um projeto com este título.");
            }

            if (projeto.Vaga.Count < 1)
            {
                ModelState.AddModelError("other", "É necessário cadastrar ao menos uma vaga.");
            }

            if (!ModelState.IsValid)
            {
                vm.Categorias = categoriaProjetoRepository.SimpleWhere(c => true);
                return(View("FormularioProjetoView", vm));
            }

            if (vm.ModoValor == FormularioProjetoViewModel.Modo.Cadastro)
            {
                projetoRepository.Save(projeto);
            }
            else if (vm.ModoValor == FormularioProjetoViewModel.Modo.Alteracao)
            {
                projetoRepository.UpdateWithVagas(projeto);
            }

            if (vm.ImagemCapa != null)
            {
                ImageFileService.StoreFile(ImageType.ProjetoCapa, vm.ImagemCapa, projeto.Id);
            }
            if (vm.ImagemLogo != null)
            {
                ImageFileService.StoreFile(ImageType.ProjetoLogo, vm.ImagemLogo, projeto.Id);
            }

            TempData["mensagemRetorno"] = "Projeto " + (vm.ModoValor == FormularioProjetoViewModel.Modo.Cadastro ?
                                                        "cadastrado" : "alterado") + " com sucesso!";

            return(RedirectToAction("Index", "Projeto", new { Id = projeto.Id }));
        }
        public ActionResult AlteraProjeto(int Id)
        {
            var vm = new FormularioProjetoViewModel
            {
                Projeto   = projetoRepository.FindByIdWithVagas(Id),
                ModoValor = FormularioProjetoViewModel.Modo.Alteracao
            };

            vm.Categorias = categoriaProjetoRepository.SimpleWhere(c => true);
            vm.Vagas      = new List <Vaga>(Enumerable.Repeat <Vaga>(new Vaga(), 5));

            int cont = 0;

            foreach (Vaga vaga in vm.Projeto.Vaga)
            {
                vm.Vagas[cont] = vaga;
                cont++;
            }

            vm.IdCategoriaSelecionada = vm.Projeto.CategoriaProjetoId;

            return(View("FormularioProjetoView", vm));
        }