public List<Madre> BuscarSemejantes(ParametrosBusqueda parBusqueda) { long identificador = Convert.ToInt64(parBusqueda.Identificador); MadreTemporal madreTemp = new MadreTemporal(); madreTemp = Listar().Where(m => m.Id == identificador).FirstOrDefault(); Dictionary<string, object> propiedadesBusqueda = ObtenerElementos(parBusqueda, MemberTypes.Property); List<Madre> madresCandidatas = new List<Madre>(); Madre peorSemejanza = new Madre(); int distanciaCalculada; int peorDistancia = -1; //string strParametrosMadreTemporal = madreTemp.NombreCompleto; string cadenaMadreTemporal = ConstruirParametroMadreTemporal(madreTemp, propiedadesBusqueda); //foreach (Madre ma in madre.Listar()) foreach (Madre ma in db.Madres.ToList()) { distanciaCalculada = Distancia.Levenshtein(cadenaMadreTemporal, ConstruirParametroMadre(ma, propiedadesBusqueda)); if (madresCandidatas.Count < 10) { ma.IdMunicipio = distanciaCalculada; //** madresCandidatas.Add(ma); if (distanciaCalculada > peorDistancia) { peorDistancia = distanciaCalculada; peorSemejanza = ma; } } else { if (distanciaCalculada < peorDistancia) { ma.IdMunicipio = distanciaCalculada; //** madresCandidatas.Remove(peorSemejanza); madresCandidatas.Add(ma); // Peor distancia entre los 10 peorDistancia = -1; foreach (var item in madresCandidatas) { distanciaCalculada = Distancia.Levenshtein(madreTemp.NombreCompleto, item.NombreCompleto); if (distanciaCalculada > peorDistancia) { peorDistancia = distanciaCalculada; peorSemejanza = item; } } } } } return madresCandidatas.OrderBy(m => m.IdMunicipio).ToList(); }
public string MadresTemporal() { ModeloRevisionManual mrm = new ModeloRevisionManual(); mrm.EliminarTodoMadreTempo(); string connectionString = "Data Source=HERNAN-PC04;Initial Catalog=BDPersonas_new;User ID=sa; password=123456"; string queryString = @"select Nombres, PrimerApellido, SegundoApellido, Nombres+PrimerApellido+SegundoApellido AS 'NombreCompleto', DocumentoIdentidad, 0 AS 'TipoDocumentoIdentidad', FechaNacimiento from SECC_1A where idS1_A < 100 and S1_02 = 2 and FechaNacimiento is not null"; string resultado = ""; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { MadreTemporal madreTempo = new MadreTemporal(); madreTempo.Id = IdentifierGenerator.NewId(); madreTempo.IdSesion = 1; madreTempo.FechaUltimaTransaccion = DateTime.Now; madreTempo.FechaRegistro = DateTime.Now; madreTempo.DescripcionEstadoSincronizacion = ""; madreTempo.Nombres = reader[0].ToString(); madreTempo.PrimerApellido = reader[1].ToString(); madreTempo.SegundoApellido = reader[2].ToString(); madreTempo.TercerApellido = ""; madreTempo.NombreCompleto = madreTempo.Nombres + madreTempo.PrimerApellido + madreTempo.SegundoApellido + madreTempo.TercerApellido; madreTempo.DocumentoIdentidad = reader[4].ToString(); madreTempo.TipoDocumentoIdentidad = TipoDocumentoIdentidad.CarnetIdentidad; madreTempo.FechaNacimiento = Convert.ToDateTime(reader[6].ToString()); //madreTempo.IdDepartamento = 69; //madreTempo.IdProvincia = 540; //madreTempo.IdMunicipio = 2254; madreTempo.IdDepartamento = 1640861101374000000; madreTempo.IdProvincia = 1640861101405000000; madreTempo.IdMunicipio = 1640861101436000000; madreTempo.LocalidadNacimiento = ""; madreTempo.Defuncion = false; mrm.Crear(madreTempo); } reader.Close(); } return "OK: " + resultado; }
public void Crear(MadreTemporal madreTemp) { db.MadresTemporal.Add(madreTemp); db.SaveChanges(); }
private string ConstruirParametroMadreTemporal(MadreTemporal madreTemp, Dictionary<string, object> propiedadesObejtoBusqueda) { string cadenaA = ""; foreach (var item in propiedadesObejtoBusqueda) { if (item.Key == "Identificador") continue; if ((bool)item.Value) { switch (item.Key) { case "Nombres": cadenaA += madreTemp.Nombres; break; case "PrimerApellido": cadenaA += madreTemp.PrimerApellido; break; case "SegundoApellido": cadenaA += madreTemp.SegundoApellido; break; case "TercerApellido": cadenaA += madreTemp.TercerApellido; break; case "NombreCompleto": cadenaA += madreTemp.NombreCompleto; break; case "DocumentoIdentidad": cadenaA += madreTemp.DocumentoIdentidad; break; case "FechaNacimiento": cadenaA += madreTemp.FechaNacimiento; break; case "LocalidadNacimiento": cadenaA += madreTemp.LocalidadNacimiento; break; } } } return cadenaA; }