public ActionResult AddUser(IFormCollection collection) { //VARIABLES PARA TABLA HASH int team = 0; string Text = ""; //VARIABLES QUE AYUDAN A VERIFICAR EL GRUPO string sickness = collection["Enfermedad"]; string job = collection["Trabajo"]; //REVISAR SI PUEDE RECIBIR LA VACUNA int age = Convert.ToInt32(collection["Edad"]); string Pregnant = collection["SiEsApto"]; int VerDPI = Convert.ToString(collection["DPI"]).Length; bool Correct = true; if (Pregnant == null) { Pregnant = "No"; } if (VerDPI != 13) { Correct = false; } //VERIFICAR SI ES APTO if (age >= 18 && Pregnant == "No" && Correct == true) { //VERIFICAR A QUE GRUPO PERTENECEN //Grupo 1 - Sistema de salud if (job == "Trabajador de salud primera línea") { team = 1; } else if (job == "Trabajador de salud no de primera línea" || job == "Comadrona" || job == "Promotor voluntario" || job == "Terapeuta maya") { team = 2; } else if (job == "Estudiante de ciencias de la salud") { team = 3; } else if (job == "Trabajador como cuerpos de socorro" || job == "Trabajador de una funeraria" || job == "Trabajador en instituciones de adultos mayores") { team = 4; } else if (job == "Personas internadas en hogares o en asilos") { team = 5; } else if (job == "Trabajador administrativo del sector salud") { team = 6; } //Grupo 2 y 4 - Clasificar por edad if (team == 0) { if (age >= 70 && sickness != " ") { team = 7; } else if (age >= 70) { team = 8; } else if (age >= 50) { team = 9; } //Grupo 3 - Clasificar por trabajo if (job == "Trabajador del sector de seguridad nacional" && team == 0) { team = 10; } else if ((job == "Trabajador de la municipalidad" || job == "Trabajador de entidades que prestan servicios esenciales") && team == 0) { team = 11; } else if (job == "Trabajador del sector de educación" && team == 0) { team = 12; } else if (job == "Trabajador del sector de justicia" && team == 0) { team = 13; } if (age >= 40 && job == "Otro") { team = 14; } else if (age >= 18 && job == "Otro") { team = 15; } } //INFORMACIÓN DEL USUARIO var NewUser = new Models.UserInformation { Nombre = collection["Nombre"], Apellido = collection["Apellido"], DPI = Convert.ToInt64(collection["DPI"]), Edad = age, Departamento = Singleton.Instance.LocationData.ElementAt(0).Departamento, Municipio = Singleton.Instance.LocationData.ElementAt(0).Municipio, Dirección = collection["Dirección"], Teléfono = Convert.ToInt32(collection["Teléfono"]), Email = collection["Email"], Trabajo = job, Enfermedad = sickness, SiEsApto = "Si", Grupo = team, N_Registro = Singleton.Instance.Order.Count() }; //REVISAR QUE NO SEA UN DATO REPETIDO if (Singleton.Instance.HashTableUserInformation.ValueRepeat(NewUser) == false) { //INGRESAR A LA TABLA HASH Singleton.Instance.HashTableUserInformation.AddHashTable(NewUser); //INGRESAR A LA LISTA DE PRIORIDAD var NewPriority = new Models.PriorityInformation { Priority = team, DPI = Convert.ToInt64(collection["DPI"]), N_order = Singleton.Instance.Order.Count() }; Singleton.Instance.PriorityUsers.HeapInsert(NewPriority, NewPriority); //INGRESAR AL ÁRBOL AVL POR NOMBRE var NewUserName = new Models.Data.NameUser { Name = collection["Nombre"], DPI_AVL = Convert.ToInt64(collection["DPI"]) }; Singleton.Instance.IndexName.Insert(NewUserName); //INGRESAR AL ÁRBOL AVL POR APELLIDO var NewUserLastName = new Models.Data.LastNameUser { LastName = collection["Apellido"], DPI_AVL = Convert.ToInt64(collection["DPI"]) }; Singleton.Instance.IndexLastName.Insert(NewUserLastName); //INGRESAR AL ÁRBOL AVL POR DPI var NewDPI = new Models.Data.DPIUser { DPI = Convert.ToInt64(collection["DPI"]) }; Singleton.Instance.IndexDPI.Insert(NewDPI); if (Singleton.Instance.Order.Count() == 0) { Singleton.Instance.Order.InsertAtStart(0); } else { Singleton.Instance.Order.InsertAtEnd(0); } var NewUserExtra = new Models.UserInformation { Nombre = collection["Nombre"], Apellido = collection["Apellido"], DPI = Convert.ToInt64(collection["DPI"]) }; if (Singleton.Instance.OrderNum.Count() == 0) { Singleton.Instance.OrderNum.InsertAtStart(NewUserExtra); } else { Singleton.Instance.OrderNum.InsertAtEnd(NewUserExtra); } //GUARDAR EN UN ARCHIVO DE TEXTO if (Singleton.Instance.Order.Count() == 1) { Text = collection["Nombre"] + "," + collection["Apellido"] + "," + Convert.ToInt64(collection["DPI"]) + "," + age + "," + Singleton.Instance.LocationData.ElementAt(0).Departamento + "," + Singleton.Instance.LocationData.ElementAt(0).Municipio + "," + collection["Dirección"] + "," + Convert.ToInt32(collection["Teléfono"]) + "," + collection["Email"] + "," + job + "," + sickness + "," + team + "," + Singleton.Instance.Order.Count(); } else { Text = "\n" + collection["Nombre"] + "," + collection["Apellido"] + "," + Convert.ToInt64(collection["DPI"]) + "," + age + "," + Singleton.Instance.LocationData.ElementAt(0).Departamento + "," + Singleton.Instance.LocationData.ElementAt(0).Municipio + "," + collection["Dirección"] + "," + Convert.ToInt32(collection["Teléfono"]) + "," + collection["Email"] + "," + job + "," + sickness + "," + team + "," + Singleton.Instance.Order.Count(); } //ESCRIBIR EN UN TEXTO StreamWriter writer = new StreamWriter("Datos Ingresados.txt", true); writer.Write(Text); writer.Close(); //MOSTRAR EL MENU return(RedirectToAction(nameof(Index))); } else { //MOSTRAR QUE EL DATO YA EXISTE return(RedirectToAction(nameof(Exist))); } } else { if (Correct == false) { return(RedirectToAction(nameof(DPI_ERROR))); } else { //MOSTRAR VISTA DE QUE EL CIUDADANO NO ES APTO PARA RECIBIR LA VACUNA return(RedirectToAction(nameof(CanNot))); } } }
public ActionResult SearchPatient(IFormCollection collection) { string searchby = collection["SearchBy"]; if (searchby == "Nombre")//Búsqueda por nombre { var SearchedUser = new Models.Data.NameUser { Name = collection["Buscar"], }; TreeNode <NameUser> found_element = Singleton.Instance.IndexName.Search(SearchedUser, Singleton.Instance.IndexName.ReturnRoot()); if (found_element != null) { //Por lo menos encuentra un elemento var SearchInformation = new Models.UserInformation { DPI = found_element.value.DPI_AVL }; //Busca el elemento en la Tabla Hash para agregarlo a la lista de resultados var Result = new Models.UserInformation { Nombre = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Nombre, Apellido = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Apellido, DPI = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.DPI, Edad = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Edad, Departamento = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Departamento, Trabajo = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Trabajo, Grupo = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Grupo, }; Singleton.Instance.SearchResults.InsertAtStart(Result); return(RedirectToAction(nameof(ShowSearchResults))); } else { return(RedirectToAction(nameof(ElementNotFound))); } } else if (searchby == "Apellido") { var SearchedUser = new Models.Data.LastNameUser { LastName = collection["Buscar"], }; TreeNode <LastNameUser> found_element = Singleton.Instance.IndexLastName.Search(SearchedUser, Singleton.Instance.IndexLastName.ReturnRoot()); if (found_element != null) { var SearchInformation = new Models.UserInformation { DPI = found_element.value.DPI_AVL }; var Result = new Models.UserInformation { Nombre = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Nombre, Apellido = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Apellido, DPI = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.DPI, Edad = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Edad, Departamento = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Departamento, Trabajo = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Trabajo, Grupo = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Grupo, }; Singleton.Instance.SearchResults.InsertAtStart(Result); return(RedirectToAction(nameof(ShowSearchResults))); } else { return(RedirectToAction(nameof(ElementNotFound))); } } else { var SearchedUser = new Models.Data.DPIUser { DPI = Convert.ToInt64(collection["Buscar"]), }; TreeNode <DPIUser> found_element = Singleton.Instance.IndexDPI.Search(SearchedUser, Singleton.Instance.IndexDPI.ReturnRoot()); if (found_element != null) { var SearchInformation = new Models.UserInformation { DPI = found_element.value.DPI }; var Result = new Models.UserInformation { Nombre = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Nombre, Apellido = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Apellido, DPI = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.DPI, Edad = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Edad, Departamento = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Departamento, Trabajo = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Trabajo, Grupo = Singleton.Instance.HashTableUserInformation.ReturnHash(SearchInformation).value.Grupo, }; Singleton.Instance.SearchResults.InsertAtStart(Result); return(RedirectToAction(nameof(ShowSearchResults))); } else { return(RedirectToAction(nameof(ElementNotFound))); } } }
//RECUPERANDO DATOS ANTERIORES public void ReadFileC() { //RECOPILAR INFORMACIÓN ANTERIOR string filePath = bingPathToAppDir(); StreamReader streamReader = new StreamReader(filePath); string CurrentLine; while (!streamReader.EndOfStream) { CurrentLine = streamReader.ReadLine(); if (CurrentLine != "") { string[] FileInformationList = CurrentLine.Split(','); int pos = 0; string NombreF = FileInformationList[pos]; pos++; string ApellidoF = FileInformationList[pos]; pos++; long DPIF = Convert.ToInt64(FileInformationList[pos]); pos++; int EdadF = Convert.ToInt16(FileInformationList[pos]); pos++; string DepartamentoF = FileInformationList[pos]; pos++; string MunicipioF = FileInformationList[pos]; pos++; string DirecciónF = FileInformationList[pos]; pos++; int TelefonoF = Convert.ToInt32(FileInformationList[pos]); pos++; string EmailF = FileInformationList[pos]; pos++; string TrabajoF = FileInformationList[pos]; pos++; string EnfermedadF = FileInformationList[pos]; pos++; int GrupoF = Convert.ToInt32(FileInformationList[pos]); pos++; int NRF = Convert.ToInt32(FileInformationList[pos]); if (MunicipioF == Singleton.Instance.LocationData.ElementAt(0).Municipio) { var NewUser = new Models.UserInformation { Nombre = NombreF, Apellido = ApellidoF, DPI = DPIF, Edad = EdadF, Departamento = DepartamentoF, Municipio = MunicipioF, Dirección = DirecciónF, Teléfono = TelefonoF, Email = EmailF, Trabajo = TrabajoF, Enfermedad = EnfermedadF, Grupo = GrupoF, N_Registro = NRF }; //REVISAR QUE NO SEA UN DATO REPETIDO if (Singleton.Instance.HashTableUserInformation.ValueRepeat(NewUser) == false) { //INGRESAR A LA TABLA HASH Singleton.Instance.HashTableUserInformation.AddHashTable(NewUser); //INGRESAR A LA LISTA DE PRIORIDAD var NewPriority = new Models.PriorityInformation { Priority = GrupoF, DPI = DPIF, N_order = NRF }; Singleton.Instance.PriorityUsers.HeapInsert(NewPriority, NewPriority); //INGRESAR AL ÁRBOL AVL POR NOMBRE var NewUserName = new Models.Data.NameUser { Name = NombreF, DPI_AVL = DPIF }; Singleton.Instance.IndexName.Insert(NewUserName); //INGRESAR AL ÁRBOL AVL POR APELLIDO var NewUserLastName = new Models.Data.LastNameUser { LastName = ApellidoF, DPI_AVL = DPIF }; Singleton.Instance.IndexLastName.Insert(NewUserLastName); //INGRESAR AL ÁRBOL AVL POR DPI var NewDPI = new Models.Data.DPIUser { DPI = DPIF }; Singleton.Instance.IndexDPI.Insert(NewDPI); var NewUserExtra = new Models.UserInformation { Nombre = NombreF, Apellido = ApellidoF, DPI = DPIF }; //ORDEN DE LLEGADA if (Singleton.Instance.Order.Count() == 0) { Singleton.Instance.Order.InsertAtStart(1); } else { Singleton.Instance.Order.InsertAtEnd(1); } if (Singleton.Instance.OrderNum.Count() == 0) { Singleton.Instance.OrderNum.InsertAtStart(NewUserExtra); } else { Singleton.Instance.OrderNum.InsertAtEnd(NewUserExtra); } } } else { if (Singleton.Instance.Order.Count() == 0) { Singleton.Instance.Order.InsertAtStart(1); } } } } //CERRAR LA LECTURA DEL ARCHIVO streamReader.Close(); }