// GET: Cliente/Details/5
        public ActionResult Details(int?id, string tipoPessoa)
        {
            ClienteViewModel viewModel;

            try
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                //Preenche o modelo de acordo com o tipo de pessoa
                if (tipoPessoa == "Física")
                {
                    //Utilização de eager loading para recuperas as informações das entidades Cidade e UF relacionadas a pessoa
                    PessoaFisica pessoaFisica = _pessoaFisicaApp.GetCityStateEagerLoadingById(Convert.ToInt32(id));

                    //Utilizando AutoMapper para atribuição dos dados do model para a viewmodel
                    var config = new MapperConfiguration(cfg => {
                        cfg.CreateMap <PessoaFisica, ClienteViewModel>()
                        .ForMember(p => p.Cidade, map => map.UseValue(pessoaFisica.Cidade))
                        .ForMember(p => p.TipoPessoa, map => map.UseValue(TipoPessoa.Física))
                        .ForMember(p => p.UF, map => map.UseValue(pessoaFisica.Cidade.UF));
                    });
                    viewModel = config.CreateMapper().Map <PessoaFisica, ClienteViewModel>(pessoaFisica);
                }
                else
                {
                    PessoaJuridica pessoaJuridica = _pessoaJuridicaApp.GetCityStateEagerLoadingById(Convert.ToInt32(id));

                    var config = new MapperConfiguration(cfg => {
                        cfg.CreateMap <PessoaJuridica, ClienteViewModel>()
                        .ForMember(p => p.Cidade, map => map.UseValue(pessoaJuridica.Cidade))
                        .ForMember(p => p.TipoPessoa, map => map.UseValue(TipoPessoa.Jurídica))
                        .ForMember(p => p.UF, map => map.UseValue(pessoaJuridica.Cidade.UF));
                    });
                    viewModel = config.CreateMapper().Map <PessoaJuridica, ClienteViewModel>(pessoaJuridica);
                }

                if (viewModel == null)
                {
                    return(HttpNotFound());
                }

                //Retorna o viewModel preenchido para a view
                return(View(viewModel));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }