public ActionResult Create(IFormCollection collection)
 {
     try
     {
         var newPaciente = new Models.Paciente
         {
             dpi             = Convert.ToInt32(collection["dpi"]),
             nombre          = collection["nombre"],
             apellido        = collection["apellido"],
             departamento    = Convert.ToInt32(collection["departamento"]),
             municipio       = Convert.ToInt32(collection["municipio"]),
             edad            = Convert.ToInt32(collection["edad"]),
             grupo_prioridad = Convert.ToInt32(collection["grupo_prioridad"]),
         };
         Singleton.Instance.PacienteList.Add(newPaciente);
         if (newPaciente.grupo_prioridad == -1)
         {
             newPaciente.grupo_prioridad = Defprioridad(newPaciente.edad);
         }
         newPaciente.prioString = asignarPrio(newPaciente.grupo_prioridad);
         Municipios_Departamentos piv = new Municipios_Departamentos();
         string municipioP            = piv.DevolverMunicipio(newPaciente.municipio);
         string departamentoP         = piv.DevolverDepartamento(newPaciente.departamento);
         newPaciente.municipioString    = municipioP;
         newPaciente.departamentoString = departamentoP;
         // se instancia un objeto centro de vacunación y se instancia objeto paciente para los procesos del centro de vacunacion
         CentroVacunacion newCentro     = new CentroVacunacion();
         Paciente         nuevoPaciente = new Paciente(newPaciente.nombre, newPaciente.apellido, newPaciente.dpi, newPaciente.departamento, newPaciente.municipio, newPaciente.edad, newPaciente.grupo_prioridad, municipioP, departamentoP, newPaciente.prioString);
         //se igualaran variables para poder procesos próximos
         int                    prioridad             = newPaciente.grupo_prioridad;
         int                    municipioPivot        = newPaciente.municipio;
         PacienteIndice         nuevoPacienteIndice   = new PacienteIndice(Convert.ToString(nuevoPaciente.dpi));
         PacienteIndiceApellido nuevoPacienteApellido = new PacienteIndiceApellido(nuevoPaciente.apellido);
         PacienteIndiceNombre   nuevoPacienteNombre   = new PacienteIndiceNombre(nuevoPaciente.nombre);
         newCentro.insertarPaciente(nuevoPaciente, nuevoPacienteIndice, prioridad, nuevoPacienteApellido, nuevoPacienteNombre);
         int  posicionEncontrada = 0;
         bool encontrado         = false;
         Singleton.Instance.listaPacientes.AgregarInicio(nuevoPaciente);
         //Lista de pacientes que servira para procesos de reporte
         Singleton.Instance.listaGeneralDePacientes.AgregarInicio(nuevoPaciente);
         //Validaciones para poder ingresar en la lista de pacientes
         if (Singleton.Instance.cantidadCentros == 0)
         {
             Singleton.Instance.listaReferencia.AgregarPos(Singleton.Instance.posicion, municipioPivot);
             Singleton.Instance.listaCentrosVacunacion.AgregarPos(Singleton.Instance.posicion, newCentro);
             Singleton.Instance.posicion++;
             Singleton.Instance.cantidadCentros++;
         }
         else
         {
             for (int i = 0; i < Singleton.Instance.cantidadCentros; i++)
             {
                 if (municipioPivot == Singleton.Instance.listaReferencia.DevolverValue(i))
                 {
                     encontrado         = true;
                     posicionEncontrada = i;
                     i = Singleton.Instance.cantidadCentros;
                 }
             }
             if (encontrado == false)
             {
                 Singleton.Instance.listaReferencia.AgregarPos(Singleton.Instance.posicion, municipioPivot);
                 Singleton.Instance.listaCentrosVacunacion.AgregarPos(Singleton.Instance.posicion, newCentro);
                 Singleton.Instance.posicion++;
                 Singleton.Instance.cantidadCentros++;
             }
             else
             {
                 CentroVacunacion tempVacunacion = new CentroVacunacion();
                 tempVacunacion = Singleton.Instance.listaCentrosVacunacion.DevolverValue(posicionEncontrada);
                 tempVacunacion.insertarPaciente(nuevoPaciente, nuevoPacienteIndice, prioridad, nuevoPacienteApellido, nuevoPacienteNombre);
                 Singleton.Instance.listaCentrosVacunacion.Eliminarpos(posicionEncontrada);
                 Singleton.Instance.listaCentrosVacunacion.AgregarPos(posicionEncontrada, tempVacunacion);
             }
         }
         return(RedirectToAction(nameof(Index)));
     }
     catch
     {
         return(View());
     }
 }
        public IActionResult search(string Buscar, string Busqueda, string Busquedaminicipio)
        {
            bool exists = false;

            Singleton.Instance.pacientebusqueda.Clear();
            int opcion  = Convert.ToInt32(Buscar);
            int muniPiv = Convert.ToInt32(Busquedaminicipio);

            if (muniPiv == 338)
            {
                switch (opcion)
                {
                case 0:    //Busqueda por nombre
                    for (int i = 0; i < Singleton.Instance.listaPacientes.Cantidad; i++)
                    {
                        string nombre = Singleton.Instance.listaPacientes.ObtenerPos(i).Data.nombre;
                        if (nombre == Busqueda)
                        {
                            Paciente Buscado = Singleton.Instance.listaPacientes.ObtenerPos(i).Data;
                            Singleton.Instance.pacientebusqueda.Add(Buscado);
                        }
                    }
                    break;

                case 1:    //apellido
                    for (int i = 0; i < Singleton.Instance.listaPacientes.Cantidad; i++)
                    {
                        string apellido = Singleton.Instance.listaPacientes.ObtenerPos(i).Data.apellido;
                        if (apellido == Busqueda)
                        {
                            Paciente Buscado = Singleton.Instance.listaPacientes.ObtenerPos(i).Data;
                            Singleton.Instance.pacientebusqueda.Add(Buscado);
                        }
                    }
                    break;

                case 2:    //DPI
                    for (int i = 0; i < Singleton.Instance.listaPacientes.Cantidad; i++)
                    {
                        string DPI = Convert.ToString(Singleton.Instance.listaPacientes.ObtenerPos(i).Data.dpi);
                        if (DPI == Busqueda)
                        {
                            Paciente Buscado = Singleton.Instance.listaPacientes.ObtenerPos(i).Data;
                            Singleton.Instance.pacientebusqueda.Add(Buscado);
                        }
                    }
                    break;
                }
            }
            else
            {
                int  munPivB             = Convert.ToInt32(Busquedaminicipio);
                int  posicionEncontradaI = 0;
                bool encontradoF         = false;
                for (int i = 0; i < Singleton.Instance.cantidadCentros; i++)
                {
                    if (munPivB == Singleton.Instance.listaReferencia.DevolverValue(i))
                    {
                        encontradoF         = true;
                        posicionEncontradaI = i;
                        i = Singleton.Instance.cantidadCentros;
                    }
                }
                if (encontradoF == true)
                {
                    switch (opcion)
                    {
                    case 0:    //Busqueda por nombre
                        Hoja <PacienteIndiceNombre> val    = Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.avlPacienteNombre.raiz;
                        Hoja <PacienteIndiceNombre> valorB = new Hoja <PacienteIndiceNombre>();
                        PacienteIndiceNombre        pIn    = new PacienteIndiceNombre(Busqueda);
                        valorB.value = pIn;
                        Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.avlPacienteNombre.Busqueda(val, ref valorB, ref exists);
                        if (exists == true)
                        {
                            for (int i = 0; i < Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.totalPacientes; i++)
                            {
                                if (Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.listaPacientes.ObtenerPos(i).Data.nombre == Busqueda)
                                {
                                    Paciente Buscado = Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.listaPacientes.ObtenerPos(i).Data;
                                    Singleton.Instance.pacientebusqueda.Add(Buscado);
                                }
                            }
                        }
                        break;

                    case 1:    //apellido
                        Hoja <PacienteIndiceApellido> valAp    = Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.avlPacienteApellido.raiz;
                        Hoja <PacienteIndiceApellido> valorBAp = new Hoja <PacienteIndiceApellido>();
                        PacienteIndiceApellido        pIa      = new PacienteIndiceApellido(Busqueda);
                        valorBAp.value = pIa;
                        Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.avlPacienteApellido.Busqueda(valAp, ref valorBAp, ref exists);
                        if (exists == true)
                        {
                            for (int i = 0; i < Singleton.Instance.listaPacientes.Cantidad; i++)
                            {
                                if (Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.listaPacientes.ObtenerPos(i).Data.apellido == Busqueda)
                                {
                                    Paciente Buscado = Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.listaPacientes.ObtenerPos(i).Data;
                                    Singleton.Instance.pacientebusqueda.Add(Buscado);
                                }
                            }
                        }
                        break;

                    case 2:    //DPI
                        Hoja <PacienteIndice> valDpi    = Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.avlPaciente.raiz;
                        Hoja <PacienteIndice> valorBdpi = new Hoja <PacienteIndice>();
                        PacienteIndice        pId       = new PacienteIndice(Busqueda);
                        valorBdpi.value = pId;
                        Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.avlPaciente.Busqueda(valDpi, ref valorBdpi, ref exists);

                        if (exists == true)
                        {
                            for (int i = 0; i < Singleton.Instance.listaPacientes.Cantidad; i++)
                            {
                                if (Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.listaPacientes.ObtenerPos(i).Data.dpi == Convert.ToInt32(Busqueda))
                                {
                                    Paciente Buscado = Singleton.Instance.listaCentrosVacunacion.ObtenerPos(posicionEncontradaI).Data.listaPacientes.ObtenerPos(i).Data;
                                    Singleton.Instance.pacientebusqueda.Add(Buscado);
                                }
                            }
                        }
                        break;
                    }
                }
            }

            return(View(Singleton.Instance.pacientebusqueda));
        }