Olá, pessoal. Estou fazendo um pequeno “sistema” pra gestão de Petshops, como trabalho que vale minha nota. Nesse sistema, planejei usar vários DropDowns imaginando que fosse fácil fazer, mas já percebi que não é bem assim. Ou pelo menos não está sendo para mim
Eu preciso puxar informações do banco, passar para o ViewModel e montar o DropDown a partir disso. Alguém tem alguma noção de uma maneira de fazer isso?
Minha classe ViewModel
using System;
using System.Collections;
using System.ComponentModel;
namespace CodePet.ViewModels
{
public class FuncionarioViewModels
{
public class ListaViewModel
{
public int IdFuncionario { get; set; }
[DisplayName("Nome")] public string NomeFuncionario { get; set; }
[DisplayName("Cargo")] public string CargoFuncionario { get; set; }
[DisplayName("Matrícula")] public int MatriculaFuncionario { get; set; } }
public class CadastrarFuncionarioViewModel { public int IdFuncionario { get; set; }
[DisplayName("Matrícula:")] public int MatriculaFuncionario { get; set; }
public int IdUsuarioFuncionario { get; set; }
[DisplayName("Login:")] public string LoginUsuarioFuncionario { get; set; }
[DisplayName("Senha:")] public string SenhaUsuarioFuncionario { get; set; }
[DisplayName("Status:")] public bool AtivoUsuarioFuncionario { get; set; }
public int IdPapelUsuarioFuncionario { get; set; }
[DisplayName("Papel do Usuário")] public string NomePapelUsuarioFuncionario { get; set; }
[DisplayName("Cargo:")] public int IdCargoFuncionario { get; set; }
public string NomeCargoFuncionario { get; set; }
[DisplayName("Salário:")] public decimal SalarioCargoFuncionario { get; set; }
public int IdPessoaFuncionario { get; set; }
[DisplayName("Nome:")] public string NomeFuncionario { get; set; }
[DisplayName("Email:")] public string EmailFuncionario { get; set; }
[DisplayName("Telefone:")] public string TelefoneFuncionario { get; set; }
[DisplayName("CPF:")] public string CpfFuncionario { get; set; }
[DisplayName("Data de Nascimento:")] public DateTime DataNascimentoFuncionario { get; set; }
public int IdEnderecoFuncionario { get; set; }
[DisplayName("Número:")] public int NumeroEnderecoFuncionario { get; set; }
[DisplayName("Logradouro:")] public string LogradouroEnderecoFuncionario{ get; set; }
[DisplayName("Complemento:")] public string ComplementoEnderecoFuncionario { get; set; }
[DisplayName("CEP:")] public string CepEnderecoFuncionario { get; set; }
[DisplayName("Bairro:")] public string BairroEnderecoFuncionario { get; set; }
[DisplayName("Cidade:")] public string CidadeEnderecoFuncionario { get; set; }
[DisplayName("UF:")] public int IdUF { get; set; } } }
}
Meu classe Controller
private dbCodePet db = new dbCodePet();
public ActionResult Index() { List<FuncionarioViewModels.ListaViewModel> myList = new List<FuncionarioViewModels.ListaViewModel>();
foreach(var f in db.TbFuncionario.ToList()) { var model = new FuncionarioViewModels.ListaViewModel(); model.IdFuncionario = f.IdFuncionario; model.NomeFuncionario = f.TbPessoa.NomePessoa; model.CargoFuncionario = f.TbCargo.NomeCargo; model.MatriculaFuncionario = f.MatriculaFuncionario;
myList.Add(model); }
return View(myList); } public ActionResult Create() { var model = new FuncionarioViewModels.CadastrarFuncionarioViewModel();
return View(model); }
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(FuncionarioViewModels.CadastrarFuncionarioViewModel model) { if (ModelState.IsValid) { var transaction = db.Database.BeginTransaction();
try { // Insert na tabela endereço var enderecoFuncionario = new TbEndereco();
enderecoFuncionario.NumeroEndereco = model.NumeroEnderecoFuncionario; enderecoFuncionario.LogradouroEndereco = model.LogradouroEnderecoFuncionario; enderecoFuncionario.ComplementoEndereco = model.ComplementoEnderecoFuncionario; enderecoFuncionario.CepEndereco = model.CepEnderecoFuncionario; enderecoFuncionario.BairroEndereco = model.BairroEnderecoFuncionario; enderecoFuncionario.CidadeEndereco = model.CidadeEnderecoFuncionario; enderecoFuncionario.FkIdUF = model.IdUF;
db.TbEndereco.Add(enderecoFuncionario); db.SaveChanges();
// Insert na tabela pessoa var pessoaFuncionario = new TbPessoa();
pessoaFuncionario.NomePessoa = model.NomeFuncionario; pessoaFuncionario.EmailPessoa = model.EmailFuncionario; pessoaFuncionario.CpfPessoa = model.CpfFuncionario; pessoaFuncionario.DataNascimentoPessoa = model.DataNascimentoFuncionario; pessoaFuncionario.TelefonePessoa = model.TelefoneFuncionario; pessoaFuncionario.FkIdEndereco = enderecoFuncionario.IdEndereco;
db.TbPessoa.Add(pessoaFuncionario); db.SaveChanges();
// Insert na tabela usuario var usuarioFuncionario = new TbUsuario();
usuarioFuncionario.LoginUsuario = model.LoginUsuarioFuncionario; usuarioFuncionario.SenhaUsuario = model.SenhaUsuarioFuncionario; usuarioFuncionario.AtivoUsuario = true;
// Insert na tabela funcionario var funcionario = new TbFuncionario();
funcionario.MatriculaFuncionario = model.MatriculaFuncionario; funcionario.FkIdUsuario = usuarioFuncionario.IdUsuario; funcionario.FkIdCargo = model.IdCargoFuncionario; funcionario.FkIdPessoa = pessoaFuncionario.IdPessoa; funcionario.DataCadastroFuncionario = DateTime.Now.Date;
db.TbFuncionario.Add(funcionario); db.SaveChanges();
transaction.Commit(); transaction.Dispose();
return RedirectToAction("Index"); } catch(Exception e) { transaction.Rollback(); transaction.Dispose();
return View(model); } } return View(model); }