private void Fill(SolicitacaoCreateModel model) { model.Areas = new SelectList(db.Areas, "Id", "Nome", 1); var itemsCodificacoes = db.CodificacoesAtivas .OrderBy(c => c.CentroDeCusto) .ThenBy(c => c.ContaMemo) .AsEnumerable() .Select(c => new { Nome = string.Format("{2} - {3} : {0} - {1}", c.DescricaoCentroDeCusto, c.DescricaoContaMemo, c.CentroDeCusto, c.ContaMemo), Id = c.Id }); model.Codificacoes = new SelectList(itemsCodificacoes, "Id", "Nome", SolicitacaoBL.CODIFICACAO_DEFAULT_ID); model.Fornecedores = new SelectList(db.Fornecedores, "Id", "Nome", 1); model.Solicitacao = SolicitacaoBL.CriarSolicitacao(); }
public ActionResult Create(SolicitacaoCreateModel data) { StatusCriacaoSolicitacao statusUsuario = SolicitacaoBL.PodeCriarSolicitacao(User.Identity.Name); if (!ModelState.IsValid || statusUsuario != StatusCriacaoSolicitacao.Permitido) //Inválido { if (!ModelState.IsValid) ViewBag.error = "Dados inválidos"; else switch (statusUsuario) { case StatusCriacaoSolicitacao.AvaliacaoPendente: ViewBag.error = "Usuário possui avaliações pendentes!"; break; default: ViewBag.error = "Erro na autenticação do usuário"; break; } Fill(data); return View(data); } try { var user = db.Users.Find(User.Identity.Name); Solicitacao target = SolicitacaoBL.CriarSolicitacao(data.Solicitacao); target.Itens = data.Itens; target.User = user; db.Solicitacoes.Add(target); var avaliacao = AvaliacaoBL.CriarAvaliacao(target); db.Avaliacoes.Add(avaliacao); target.Avaliacao = avaliacao; db.SaveChanges(); } catch (BusinessLogicException ex) { switch (ex.Razao) { case StatusCriacaoSolicitacao.AvaliacaoPendente: TempData.Add("ErrorMessage", "Usuário possui avaliações pendentes"); break; } } return RedirectToAction("Details", new { id = data.Solicitacao.Id }); }
public ActionResult Create() { var model = new SolicitacaoCreateModel(); Fill(model); return View(model); }