// 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;
            }
        }
Ejemplo n.º 2
0
        //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;
            }
        }