public IActionResult Inscripcion()
        {
            var model  = new UsuarioTitularViewModel();
            var modelo = HttpContext.Session.GetObjectFromJson <UsuarioTitularViewModel>("viewTitularModelo");

            if (modelo == null)
            {
            }
            else
            {
                model = modelo;
            }
            //var tokenSource = new CancellationTokenSource();
            //var token = tokenSource.Token;
            //var service = this.apiAservice.GetListAsync<InscViewModel>("/Insc.Api/helper/", "getlistado", token).Result;

            List <SelectListItem> tipoFamilia = model.GetListado().Select
                                                    (r => new SelectListItem
            {
                Value = $"{r.TipoFamiliaKey}",
                Text  = r.TipoFamiliaDesc
            })
                                                .OrderBy(o => o.Text)
                                                .ToList();

            model.TipoFamiliaList = tipoFamilia;
            model.Existe          = false;                                                             //inicialiso para no mostrar el formulario
            HttpContext.Session.SetObjectAsJson <UsuarioTitularViewModel>("viewTitularModelo", model); //cargo en cache el resultado

            return(View("Inscripcion"));
        }
        public IActionResult BuscarPersona(string numDni)
        {
            try
            {
                var convert = int.TryParse(numDni, out int numeroDniEntero);

                if (convert)
                {
                    var tokenSource = new CancellationTokenSource();
                    var token       = tokenSource.Token;

                    var service = this.apiAservice.GetAsync <UsuarioTitularViewModel>("/Insc.Api/helper/", "GetInscripto" + "?id=" + numDni, token).Result;  //

                    var result = (UsuarioTitularViewModel)service.Result;

                    var model = new UsuarioTitularViewModel();

                    result.TipoFamiliaList = model.GetListado().Select
                                                 (r => new SelectListItem
                    {
                        Value = $"{r.TipoFamiliaKey}",
                        Text  = r.TipoFamiliaDesc
                    })
                                             .OrderBy(o => o.Text)
                                             .ToList();


                    if (result.InsId > 0)
                    {
                        result.Existe = true;   //porque existe
                                                // si el estado es E => mostrar login modal
                        if (result.InsEstado == "E")
                        {
                            var model1 = new LoginViewModel
                            {
                                Email    = result.InsEmail,
                                Password = "******"
                            };
                            return(View("Login", model1));

                            //si el estado es A => esta cargado pero no esta validado
                            // si el estado es E => esta validado
                            // si el estado es nulo => esta migrado y hay que actualizar y no tiene usuario
                            //mostrar para que ingrese con correo contraseña
                            // en utlimo caso si no existe debo cargar el formulario porque es nuevo y InsEstado == "N"
                        }
                        else
                        {
                            if (result.InsEstado == "A")
                            {
                                var model1 = new LoginViewModel
                                {
                                    Email    = result.InsEmail,
                                    Password = "******"
                                };
                                return(View("Login", model1));
                            }
                            else
                            {
                                if (result.InsEstado == "N")
                                {
                                    var existeT = new UsuarioTitularViewModel();
                                    existeT.TipoFamiliaList = model.GetListado().Select
                                                                  (r => new SelectListItem
                                    {
                                        Value = $"{r.TipoFamiliaKey}",
                                        Text  = r.TipoFamiliaDesc
                                    })
                                                              .OrderBy(o => o.Text)
                                                              .ToList();
                                    existeT.InsNumdoc = numDni;

                                    existeT.MensajeModel = "Usted está inscripto a un grupo familiar, desea crear un nuevo grupo como Titular? " +
                                                           "Si la respuesta es afirmativa ya dejará de pertenecer al grupo familiar de " + result.InsNombre + " con D.N.I.: " + result.InsNumdoc;
                                    HttpContext.Session.SetObjectAsJson <UsuarioTitularViewModel>("viewTitularModelo", existeT); //cargo en cache el resultado

                                    ViewBag.Header = "Usted está inscripto a un grupo familiar, desea crear un nuevo grupo como Titular? " +
                                                     "Si la respuesta es afirmativa ya dejará de pertenecer al grupo familiar de " + result.InsNombre + " con D.N.I.: " + result.InsNumdoc +
                                                     "De lo contrario debe acercarse al I.V.U.Ju.para actualizar sus datos.";
                                    return(RedirectToAction("AltaTitular"));
                                    // ya existe en base de grupoFamiliar
                                    //se debe mostrar mensaje o un popup que diga que se debe hacercar al ivuj
                                }
                            }
                        }
                    }
                    else
                    {
                        /*
                         * Esto es viejo porque
                         * if (result.InsId == 0)
                         * {
                         *  return View("ExisteInsc", result);
                         *  //si insId e menor que cero significa que eldni ya existe en base de grupoFamiliar
                         *  //se debe mostrar mensaje o un popup que diga que se debe hacercar al ivuj
                         * }
                         */
                        result.InsNumdoc = numDni;
                        result.Existe    = false;
                    }

                    HttpContext.Session.SetObjectAsJson <UsuarioTitularViewModel>("viewTitularModelo", result); //cargo en cache el resultado
                    ViewBag.Header = string.Empty;
                    return(RedirectToAction("AltaTitular"));
                    //return View("AltaTitular", result);
                }
                else
                {
                    return(Json("Debe ingresar un número "));
                }
                // TODO: Add update logic here
            }
            catch (Exception ex)
            {
                return(View());
            }
        }
        public async Task <UsuarioTitularViewModel> GetInscripto(int dni)
        {
            Connection();

            string query = "SELECT ins_id, ins_ficha ,ins_tipflia ,ins_fecins, ins_nombre, ins_tipdoc " +
                           ",ins_numdoc ,ins_email ,ins_telef ,ins_estado ,ins_fecalt FROM Inscriptos where ins_numdoc = @dni";

            using SqlCommand cmd = new SqlCommand(query, con)
                  {
                      CommandType = CommandType.Text
                  };
            cmd.Parameters.Add(new SqlParameter("@dni", dni.ToString()));
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable      dt = new DataTable();

            if (con.State == ConnectionState.Closed)
            {
                await con.OpenAsync();
            }
            da.Fill(dt);

            if (dt.Rows.Count > 0)
            {
                var pList = new UsuarioTitularViewModel();
                var insId = 0;
                foreach (DataRow item in dt.Rows)
                {
                    pList.InsId      = ConvertFromReader <int>(item["ins_id"]);
                    pList.InsEmail   = ConvertFromReader <string>(item["ins_email"]);
                    pList.InsEstado  = ConvertFromReader <string>(item["ins_estado"]);
                    pList.InsFecalt  = (DateTime)item["ins_fecalt"];
                    pList.InsFecins  = ConvertFromReader <string>(item["ins_fecins"]);
                    pList.InsFicha   = ConvertFromReader <int>(item["ins_ficha"]);
                    pList.InsNombre  = ConvertFromReader <string>(item["ins_nombre"]);
                    pList.InsNumdoc  = ConvertFromReader <string>(item["ins_numdoc"]);
                    pList.InsTelef   = ConvertFromReader <string>(item["ins_telef"]);
                    pList.InsTipdoc  = ConvertFromReader <string>(item["ins_tipdoc"]);
                    pList.InsTipflia = ConvertFromReader <string>(item["ins_tipflia"]);
                    insId            = pList.InsId;
                }

                if (insId > 0)
                {
                    string query1 = "SELECT insf_id , insf_nombre, insf_tipdoc, insf_numdoc, insf_estado, insf_fecalt, ins_id, P.ParentescoDesc " +
                                    "FROM InsFamilia F INNER JOIN Parentesco P ON P.ParentescoKey = F.Parentescokey  WHERE  ins_id = @InsId ";
                    //select * from Parentesco P inner join InsFamilia F on F.ParentescoKey = P.Parentescokey
                    using SqlCommand cmd1 = new SqlCommand(query1, con)
                          {
                              CommandType = CommandType.Text
                          };

                    cmd1.Parameters.Add(new SqlParameter("@InsId", insId));

                    SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
                    DataTable      dt1 = new DataTable();

                    if (con.State == ConnectionState.Closed)
                    {
                        await con.OpenAsync();
                    }
                    da1.Fill(dt1);

                    if (dt1.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt1.Rows)
                        {
                            pList.GrupoFamiliar.Add(MapToFamilia(item));
                        }
                    }


                    await con.CloseAsync();

                    return(pList);
                }
                else
                {
                    await con.CloseAsync();

                    return(new UsuarioTitularViewModel());
                }
            }
            else
            {
                await con.CloseAsync();

                return(new UsuarioTitularViewModel());
            }
        }