//public CalculadorDePorcentaje(UsuarioEmpleado usuarioEmpleado) //{ // this.Empleado = usuarioEmpleado; //} //private void CalcularPuntajeMaximo(Aviso aviso) //{ // int puntajeMaximo = 0; // foreach(Tag tag in aviso.TagsBuscados) // { // //PuntajeMaximo += (int)aviso.TagsBuscadosPrioridad; // } // this.PuntajeMaximo = puntajeMaximo; //} public Coincidencia GenerarCoincidencia(UsuarioEmpleado empleado) { int PuntajeEmpleado = 0; Coincidencia coincidencia; if (empleado.Aptitud != null && Aviso.AptitudesBuscadas != null) { foreach (AptitudPorAviso aptitudAviso in Aviso.AptitudesBuscadas) { int i = 0; while (i < empleado.Aptitud.Count && aptitudAviso.Aptitud.Id != empleado.Aptitud[i].Id) { i++; } if (i != empleado.Aptitud.Count) { PuntajeEmpleado += (int)aptitudAviso.Prioridad; } } coincidencia = new Coincidencia((float)Math.Round((float)PuntajeEmpleado / (float)PuntajeMaximo * 100), empleado, Aviso); } else { coincidencia = null; } return(coincidencia); }
public List <Coincidencia> GenerarListadoCoincidencias(Aviso avisoOrigen, IQueryable <UsuarioEmpleado> usuariosEmpleado) { //Inicialización List <Coincidencia> listCoincidencias = new List <Coincidencia>(); CalculadorDePorcentajeAviso calculadorDePorcentaje = new CalculadorDePorcentajeAviso(avisoOrigen); //Se filtran todos los empleados que cumplan con los parámetros excluyentes List <UsuarioEmpleado> listCandidatos = usuariosEmpleado.Where(usEmp => usEmp.Busqueda_Id.HasValue && (avisoOrigen.HorasTrabajoPrioridad == Prioridad.Excluyente ? avisoOrigen.HorasTrabajo == usEmp.Busqueda.HorasTrabajo : true) && (avisoOrigen.SueldoOfrecidoPrioridad == Prioridad.Excluyente ? avisoOrigen.SueldoOfrecido >= usEmp.Busqueda.SueldoMinimo : true) && (avisoOrigen.TipoRelacionDeTrabajoPrioridad == Prioridad.Excluyente ? avisoOrigen.TipoRelacionDeTrabajo == usEmp.Busqueda.TipoRelacionDeTrabajo : true) ).ToList(); listCandidatos = listCandidatos.Where(usEmp => avisoOrigen.AptitudesBuscadas.Where(x => x.Prioridad == Prioridad.Excluyente).Select(x => x.Aptitud).Intersect(usEmp.Aptitud).Count() == avisoOrigen.AptitudesBuscadas.Where(x => x.Prioridad == Prioridad.Excluyente).Count() && !avisoOrigen.UsuariosEmpleadoAprobados.Any(aviso => aviso.Id == usEmp.Id) && !avisoOrigen.UsuariosEmpleadoDesaprobados.Any(aviso => aviso.Id == usEmp.Id) ).ToList(); //Se generan las coincidencias foreach (var empleado in listCandidatos) { Coincidencia coincidencia = calculadorDePorcentaje.GenerarCoincidencia(empleado); listCoincidencias.Add(coincidencia); } //Se ordenan las coincidencias listCoincidencias = listCoincidencias.OrderByDescending(x => x.Porcentaje).ToList(); return(listCoincidencias); }
/// <summary> /// Inicia el procesado de la informacion /// </summary> public void Procesar() { XDocument doc = XDocument.Load(ruta); try { foreach (XElement accion in doc.Element("Acciones").Elements()) { string titulo =accion.Attribute("Titulo").Value; int indice = BuscarEnLista(titulo); if (indice == -1) { Coincidencia c = new Coincidencia(); c.Titulo = titulo; c.NumeroApariciones = 1; Resultados.Add(c); } else { Resultados.ElementAt(indice).NumeroApariciones++; } } } catch { /*..Ignorar errores..*/ } finally { doc = null; GC.Collect(); } }
/// <summary> /// Genera listado de coincidencias desde una instancia de un Aviso /// </summary> /// <param name="avisoOrigen"></param> /// <param name="usuariosEmpleado"></param> /// <returns>Listado de coincidencias</returns> /// public List <Coincidencia> GenerarListadoCoincidencias(Aviso avisoOrigen, List <UsuarioEmpleado> listCandidatos) { //Inicialización List <Coincidencia> listCoincidencias = new List <Coincidencia>(); CalculadorDePorcentajeAviso calculadorDePorcentaje = new CalculadorDePorcentajeAviso(avisoOrigen); //Se generan las coincidencias foreach (var empleado in listCandidatos) { Coincidencia coincidencia = calculadorDePorcentaje.GenerarCoincidencia(empleado); listCoincidencias.Add(coincidencia); } //Se ordenan las coincidencias listCoincidencias = listCoincidencias.OrderByDescending(x => x.Porcentaje).ToList(); return(listCoincidencias); }
public static Coincidencia BuscarCoincidencias(Estado ignorarNombres, Estado coincidirPeso, Estado coincidirBytes, Archivo archivo, Archivo archivo2) { var coincidencia = new Coincidencia(); // Si la ubicacion es la misma, es el mismo archivo if (archivo.Ubicacion == archivo2.Ubicacion) { return(null); } if (ignorarNombres == Estado.Deshabilitado) { if (archivo.Nombre != archivo2.Nombre) { return(null); } coincidencia.CoincideNombre = true; } if (coincidirPeso == Estado.Habilitado) { if (archivo.Peso != archivo2.Peso) { return(null); } coincidencia.CoincidePeso = true; } if (coincidirBytes == Estado.Habilitado) { //Si los bytes no coinciden entonces no son iguales if (!BuscarCoinicidenciaEnBytes(archivo, archivo2)) { return(null); } coincidencia.CoincideBytes = true; } return(coincidencia); }
/// <summary> /// Genera listado de coincidencias desde una instancia de un UsuarioEmpleadoOrigen /// </summary> /// <param name="usuarioEmpleadoOrigen"></param> /// <param name="usuariosEmpleado"></param> /// <returns>Listado de coincidencias</returns> public List <Coincidencia> GenerarListadoCoincidencias(UsuarioEmpleado usuarioEmpleadoOrigen, IQueryable <Aviso> avisos) { List <Coincidencia> listCoincidencias = new List <Coincidencia>(); BusquedaUsuarioPostulante busqueda = usuarioEmpleadoOrigen.Busqueda; if (busqueda != null) { //Inicialización DateTime fechaActual = DateTime.Now; CalculadorDePorcentajeEmpleado calculadorDePorcentaje = new CalculadorDePorcentajeEmpleado(usuarioEmpleadoOrigen); List <Aviso> avisosAprobados = usuarioEmpleadoOrigen.AvisosAprobados; List <Aviso> avisosDesaprobados = usuarioEmpleadoOrigen.AvisosDesaprobados; //Se filtran todos los avisos que cumplan con los parámetros excluyentes List <Aviso> listCandidatos = avisos.Where(aviso => aviso.FechaInicio <= fechaActual && (aviso.FechaFin.HasValue ? aviso.FechaFin >= fechaActual : true) && (busqueda.HorasTrabajoPrioridad == Prioridad.Excluyente ? busqueda.HorasTrabajo == aviso.HorasTrabajo : true) && (busqueda.SueldoMinimoPrioridad == Prioridad.Excluyente ? busqueda.SueldoMinimo <= aviso.SueldoOfrecido : true) && (busqueda.TipoRelacionDeTrabajoPrioridad == Prioridad.Excluyente ? busqueda.TipoRelacionDeTrabajo == aviso.TipoRelacionDeTrabajo : true)) .ToList(); listCandidatos = listCandidatos.Where(aviso => !avisosAprobados.Any(avisoAprobado => avisoAprobado.Id == aviso.Id) && !avisosDesaprobados.Any(avisoDesaprobado => avisoDesaprobado.Id == aviso.Id) && aviso.AptitudesBuscadas.Where(x => x.Prioridad == Prioridad.Excluyente).Select(x => x.Aptitud).Intersect(usuarioEmpleadoOrigen.Aptitud).Count() == aviso.AptitudesBuscadas.Where(x => x.Prioridad == Prioridad.Excluyente).Count()) .ToList(); //Se generan las coincidencias foreach (var aviso in listCandidatos) { Coincidencia coincidencia = calculadorDePorcentaje.GenerarCoincidencia(aviso); listCoincidencias.Add(coincidencia); } //Se ordenan las coincidencias listCoincidencias = listCoincidencias.OrderByDescending(x => x.Porcentaje).ToList(); } return(listCoincidencias); }