//been updated with th
        // GET: Persona/Create
        public async Task <IActionResult> Create()
        {
            IEnumerable <Country> listcountries = await _countryRepository.All();

            //IEnumerable<State> liststates = await _stateRepository.All();
            //IEnumerable<City> listcities = await _cityRepository.All();

            //this is a model fo persona fisica
            PersonaFormViewModel personaVModel = new PersonaFormViewModel(new SelectList(listcountries, "Id", "Name"));

            //personaVModel.TypoPersona = CustomEnums.TypoPersonaEnum.Juridica;
            personaVModel.StatusCliente = CustomEnums.TypoStatusClienteEnum.Pending; //set up new cliente to status pendi

            //PersonaFormViewModel juridicaVModel = new PersonaFormViewModel(new SelectList(listcountries, "Id", "Name"));
            //ViewData["CityId"] = new SelectList(_context.Cities, "Id", "Name");
            return(View(personaVModel));
        }
        public async Task <IActionResult> Create([Bind("PersonId,Street,Numero,Floor,Aparment,Zip,City,State,Country,Email,Web,HomePhone,CellPhone,NumeroDoc,FirstName, SecondName, FirstLastName, SecondLastName,TypoDocumento,TypoPersona, RazonSocial,TypoRepresentante")] PersonaFormViewModel personavmodels, IFormCollection collectionRepresentantes)
        //public async Task<IActionResult> Create([Bind("PersonId,Street,Numero,Floor,Aparment,Zip,City,State,Country,Email,Web,HomePhone,CellPhone,NumeroDoc,FirstName, SecondName, FirstLastName, SecondLastName,TypoDocumento,TypoPersona, RazonSocial,TypoRepresentante")] PersonaFormViewModel personavmodels, IFormCollection collectionRepresentantes)
        {
            Persona person = null;

            Console.WriteLine(personavmodels.TypoPersona);

            //var firstName = collectionRepresentantes["firstName"];
            //var lastName = collectionRepresentantes["lastName"];
            //var typoRep = collectionRepresentantes["typoRep"];
            //var typoDoc = collectionRepresentantes["typoDoc"];
            //var numDoc = collectionRepresentantes["numDoc"];

            Console.WriteLine(personavmodels);
            if (personavmodels.TypoPersona == CustomEnums.TypoPersonaEnum.Fisica)
            {
                ModelState.Remove("RazonSocial");
            }
            else if (personavmodels.TypoPersona == CustomEnums.TypoPersonaEnum.Juridica)
            {
                ModelState.Remove("FirstName");
                ModelState.Remove("FirstLastName");
            }
            if (ModelState.IsValid)

            {
                if (personavmodels.TypoPersona == CustomEnums.TypoPersonaEnum.Fisica)
                {
                    person = Utils.GetModel <PersonaFisica>(personavmodels);// se pasan como parametro el view model
                }
                else if (personavmodels.TypoPersona == CustomEnums.TypoPersonaEnum.Juridica)
                {
                    person = Utils.GetModel <PersonaJuridica>(personavmodels);// se pasan como parametro el view model

                    for (int i = 0; i < collectionRepresentantes["FirstNameTable"].Count; i++)
                    {
                        Representante repr = new Representante()
                        {
                            FirstName         = collectionRepresentantes["FirstNameTable"][i],
                            FirstLastName     = collectionRepresentantes["FirstLastNameTable"][i],
                            TypoRepresentante = (CustomEnums.TypoRepresentanteEnum)Enum.Parse(typeof(CustomEnums.TypoRepresentanteEnum), collectionRepresentantes["TypoRepresentanteTable"][i]),
                            TypoDocumento     = (CustomEnums.TypoDocumentoEnum)Enum.Parse(typeof(CustomEnums.TypoDocumentoEnum), collectionRepresentantes["TypoDocumentoTable"][i]),
                            NumeroDoc         = collectionRepresentantes["NumeroDocTable"][i]
                        };
                        ((PersonaJuridica)person).Representantes.Add(repr);
                    }
                }

                //person = new PersonaFisica(personavmodels.PersonId, personavmodels.Street);
                //i can pass the view model to persona fisic o pasar por el contructo que cree en persona fisica todos los parameters de esa fucnion
                await _personaRepository.Add(person);

                // //        await _personaRepository.Save();
                return(RedirectToAction(nameof(Index)));
            }
            //ViewData["CityId"] = new SelectList(_context.Cities, "Id", "Name", persona.CityId);
            IEnumerable <Country> listcountries = await _countryRepository.All();

            personavmodels.Countries = new SelectList(listcountries, "Id", "Name");

            return(View(personavmodels));
        }