// GET: Clientes public ActionResult Index() { List <ClienteViewModel> clienteList = new List <ClienteViewModel>(); try { //Recupera todos os clientes do tipo pessoa física, usando eager loading para recuperar dados da entidade cidade var pessoasFisicas = _pessoaFisicaApp.GetAllEagerLoading(); //Adiciona cada um deles ao viewmodel foreach (PessoaFisica pessoa in pessoasFisicas) { //Utilizando AutoMapper para atribuição dos dados do model para a viewmodel var config = new MapperConfiguration(cfg => { cfg.CreateMap <PessoaFisica, ClienteViewModel>() .ForMember(c => c.TipoPessoa, map => map.UseValue(TipoPessoa.Física)); }); var clienteF = config.CreateMapper().Map <PessoaFisica, ClienteViewModel>(pessoa); clienteList.Add(clienteF); } //Recupera todos os clientes do tipo pessoa jurídica, usando eager loading para recuperar dados da entidade cidade var pessoasJuridicas = _pessoaJuridicaApp.GetAllEagerLoading(); //Adiciona cada um deles ao viewmodel foreach (PessoaJuridica pessoa in pessoasJuridicas) { var config = new MapperConfiguration(cfg => { cfg.CreateMap <PessoaJuridica, ClienteViewModel>() .ForMember(c => c.Nome, map => map.UseValue(pessoa.RazaoSocial)) .ForMember(c => c.CPF, map => map.UseValue(pessoa.CNPJ)) .ForMember(c => c.TipoPessoa, map => map.UseValue(TipoPessoa.Jurídica)); }); var clienteJ = config.CreateMapper().Map <PessoaJuridica, ClienteViewModel>(pessoa); clienteList.Add(clienteJ); } //Retorna uma lista de clientes com campos específicos para a view return(View(clienteList)); } catch (Exception ex) { throw ex; } }
//Tratamento para a requisição get "api/ClienteApiViewModels" public IHttpActionResult GetClienteViewModels() { List <ClienteViewModel> clienteList = new List <ClienteViewModel>(); try { //Recupera todos os clientes do tipo pessoa física var pessoasFisicas = _pessoaFisicaApp.GetAllEagerLoading(); //Adiciona cada um deles ao viewmodel foreach (PessoaFisica pessoa in pessoasFisicas) { //Utilizando AutoMapper para atribuição dos dados do model para a viewmodel var config = new MapperConfiguration(cfg => { cfg.CreateMap <PessoaFisica, ClienteViewModel>().ForMember(p => p.TipoPessoa, map => map.UseValue(TipoPessoa.Física)); }); var cliente = config.CreateMapper().Map <PessoaFisica, ClienteViewModel>(pessoa); clienteList.Add(cliente); } //Recupera todos os clientes do tipo pessoa jurídica var pessoasJuridicas = _pessoaJuridicaApp.GetAllEagerLoading(); //Adiciona cada um deles ao viewmodel foreach (PessoaJuridica pessoa in pessoasJuridicas) { //Utilizando AutoMapper para atribuição dos dados do model para a viewmodel var config = new MapperConfiguration(cfg => { cfg.CreateMap <PessoaJuridica, ClienteViewModel>().ForMember(p => p.TipoPessoa, map => map.UseValue(TipoPessoa.Jurídica)); }); var cliente = config.CreateMapper().Map <PessoaJuridica, ClienteViewModel>(pessoa); clienteList.Add(cliente); } //Retorna o Json além do status 200 - Ok return(Ok(new { clientes = clienteList })); } catch (Exception ex) { throw ex; } }