private ComponenteLexico(String Lexedema, Categoria categoria, int numeroLinea, int posicionInicial, int posicionFinal, TipoComponente Componente) { this.Lexema = Lexedema; this.categoria = categoria; this.NumeroLinea = numeroLinea; this.posicionFinal = posicionFinal; this.posicionInicial = posicionInicial; this.Tipo = Componente; }
public ComponenteLexico(String Lexema, String Categoria, int NumeroLinea, int PosicionInicial, int PosicionFinal) { this.NumeroLinea = NumeroLinea; this.PosicionInicial = PosicionInicial; this.PosicionFinal = PosicionFinal; this.Lexema = Lexema; this.Categoria = Categoria; Tipo = TipoComponente.SIMBOLO; }
protected ComponenteLexico(String Lexema, Categoria Categoria, int NumeroLinea, int PosicionInicial, int PosicionFinal, TipoComponente Tipo) { this.Lexema = Lexema; this.Categoria = Categoria; this.NumeroLinea = NumeroLinea; this.PosicionInicial = PosicionInicial; this.PosicionFinal = PosicionFinal; this.Tipo = Tipo; }
public static IEnumerable<Entidades.ViewModels.Menu> GetMenusTipoComponente(TipoComponente componente) { var menu = new List<Entidades.ViewModels.Menu>(); var menuRepo = new MenuRepository(); var padres = menuRepo.GetMenusPorComponenteYPadre(componente, 0); foreach (var padre in padres) { var menuPadre = new Entidades.ViewModels.Menu() { Nombre = padre.Nombre, Controlador = padre.Controlador, Accion = padre.Accion, Icono = padre.Icono, Orden = padre.Orden, Url = padre.Url, Accedible = padre.Accedible }; // agregar hijos var hijosPadre = menuRepo.GetMenusPorComponenteYPadre(componente, padre.Id); foreach (var hijoPrimero in hijosPadre) { var menuHijoPrimero = new Entidades.ViewModels.Menu() { Nombre = hijoPrimero.Nombre, Controlador = hijoPrimero.Controlador, Accion = hijoPrimero.Accion, Icono = hijoPrimero.Icono, Orden = hijoPrimero.Orden, Url = hijoPrimero.Url, Accedible = padre.Accedible }; menuPadre.SubMenus.Add(menuHijoPrimero); } menu.Add(menuPadre); } return menu; }
public void poblarCromosomas(int generacion, int num_poblacion, List <Recurso> poblacion_celdas, List <Recurso> poblacion_componentes, List <Recurso> poblacion_empleados, List <Recurso> poblacion_componenteTipo, List <Cotizacion> lsoluciones, Cotizacion oCotizacion) { Cotizacion oCotizacionPropuesta = null; int n = 0; //para cada iteracion se trata de generar un nuevo cromosoma (solucion posible) List <Celda> lceldas; List <Componente> lcomponentes; List <Empleado> lempleados; List <Especialidad> lespecialidades; List <TipoComponente> lcomponentesTipo; Celda oCelda; Componente oComponente; Empleado oEmpleado; Especialidad oEspecialidad; TipoComponente oComponenteTipo; //decimal cantidad = 0; int calidad_soluciones = 70; int i = 0; while (n <= num_poblacion) { if (i == 1000) { break; } lceldas = new List <Celda>(); lcomponentes = new List <Componente>(); lempleados = new List <Empleado>(); lespecialidades = new List <Especialidad>(); lcomponentesTipo = new List <TipoComponente>(); poblacion_celdas = DesordenarLista(poblacion_celdas); poblacion_componentes = DesordenarLista(poblacion_componentes); poblacion_empleados = DesordenarLista(poblacion_empleados); poblacion_componenteTipo = DesordenarLista(poblacion_componenteTipo); oCotizacionPropuesta = new Cotizacion(); foreach (var icelda in oCotizacion.lceldas) { if (poblacion_celdas.Count == 0) { break; } foreach (var ocelda1 in poblacion_celdas) { if (ocelda1.id == icelda.id && icelda.obtenidos < icelda.cantidad) { if (elegir(poblacion_celdas, ocelda1)) { oCelda = new Celda(); oCelda.id = ocelda1.id; oCelda.costosoles = ocelda1.costo; oCelda.cantidad = 1; oCelda.obtenidos = icelda.obtenidos + 1; ocelda1.elegido = 1; lceldas.Add(oCelda); icelda.obtenidos = icelda.obtenidos + 1; } } } } foreach (var icomponente in oCotizacion.lcomponentes) { if (poblacion_componentes.Count == 0) { break; } foreach (var ocomponente1 in poblacion_componentes) { if (ocomponente1.id == icomponente.idcomponente) { if (ocomponente1.usados >= icomponente.cantidad) { if (elegir(poblacion_componentes, ocomponente1)) { oComponente = new Componente(); oComponente.idcomponente = ocomponente1.id; oComponente.costosoles = ocomponente1.costo; oComponente.cantidad = icomponente.cantidad; oComponente.obtenidos = icomponente.cantidad; // ocomponente1.elegido = 0; ocomponente1.usados = int.Parse(ocomponente1.usados.ToString()) - int.Parse(icomponente.cantidad.ToString()); // ocomponente1.cantidad = int.Parse(ocomponente1.cantidad.ToString()) - int.Parse(icomponente.cantidad.ToString()); lcomponentes.Add(oComponente); icomponente.obtenidos = icomponente.cantidad; } } else { if (elegir(poblacion_componentes, ocomponente1)) { oComponente = new Componente(); oComponente.idcomponente = ocomponente1.id; oComponente.costosoles = ocomponente1.costo; oComponente.cantidad = icomponente.cantidad; // ocomponente1.usados; oComponente.obtenidos = ocomponente1.usados; icomponente.obtenidos = ocomponente1.usados; // ocomponente1.elegido = 0; ocomponente1.usados = 0;// int.Parse(ocomponente1.usados.ToString()); // ocomponente1.cantidad = 0; lcomponentes.Add(oComponente); } } } } } foreach (var itcomponente in oCotizacion.ltipocomponentes) { if (poblacion_componentes.Count == 0) { break; } foreach (var ocomponente1 in poblacion_componentes) { if (ocomponente1.idcomponentetipo == itcomponente.id && itcomponente.obtenidos < itcomponente.cantidad) { if (ocomponente1.usados >= itcomponente.cantidad) { if (elegir(poblacion_componentes, ocomponente1)) { oComponente = new Componente(); oComponente.idcomponente = ocomponente1.id; oComponente.costosoles = ocomponente1.costo; oComponente.cantidad = itcomponente.cantidad; oComponente.obtenidos = itcomponente.cantidad; // ocomponente1.elegido = 0; ocomponente1.usados = int.Parse(ocomponente1.usados.ToString()) - int.Parse(itcomponente.cantidad.ToString()); // ocomponente1.cantidad = int.Parse(ocomponente1.cantidad.ToString()) - int.Parse(icomponente.cantidad.ToString()); lcomponentes.Add(oComponente); itcomponente.obtenidos = itcomponente.cantidad; TipoComponente o = new TipoComponente(); o.id = itcomponente.id; o.cantidad = itcomponente.cantidad; o.obtenidos = itcomponente.obtenidos; o.nombre = itcomponente.nombre; lcomponentesTipo.Add(o); } } else { if (elegir(poblacion_componentes, ocomponente1)) { oComponente = new Componente(); oComponente.idcomponente = ocomponente1.id; oComponente.costosoles = ocomponente1.costo; oComponente.cantidad = itcomponente.cantidad; // ocomponente1.usados; oComponente.obtenidos = ocomponente1.usados; itcomponente.obtenidos = ocomponente1.usados; // ocomponente1.elegido = 0; ocomponente1.usados = 0; // int.Parse(ocomponente1.usados.ToString()); // ocomponente1.cantidad = 0; lcomponentes.Add(oComponente); TipoComponente o = new TipoComponente(); o.id = itcomponente.id; o.cantidad = itcomponente.cantidad; o.obtenidos = itcomponente.obtenidos; o.nombre = itcomponente.nombre; lcomponentesTipo.Add(o); } } } } } foreach (var iespecialidad in oCotizacion.lespecialidades) { oEspecialidad = new Especialidad(); oEspecialidad.idespecialidad = iespecialidad.idespecialidad; oEspecialidad.cantidad = iespecialidad.cantidad; oEspecialidad.obtenidos = 0; if (poblacion_empleados.Count == 0) { break; } foreach (var oempleado1 in poblacion_empleados) { if (oempleado1.idespecialidad == iespecialidad.idespecialidad && iespecialidad.obtenidos < iespecialidad.cantidad) { if (elegir(poblacion_empleados, oempleado1)) { oEmpleado = new Empleado(); oEmpleado.codigo = oempleado1.id; oEmpleado.costosoles = oempleado1.costo; oEmpleado.cantidad = 1; oempleado1.elegido = 1; lempleados.Add(oEmpleado); oEspecialidad.obtenidos = iespecialidad.obtenidos + 1; iespecialidad.obtenidos = iespecialidad.obtenidos + 1; } } } lespecialidades.Add(oEspecialidad); } //falta componente tipo oCotizacionPropuesta = copiar(oCotizacion); oCotizacionPropuesta.lceldas = lceldas; oCotizacionPropuesta.lcomponentes = lcomponentes; oCotizacionPropuesta.lempleados = lempleados; oCotizacionPropuesta.lespecialidades = lespecialidades; oCotizacionPropuesta.ltipocomponentes = lcomponentesTipo; oCotizacionPropuesta.calidad = EvaluarPenalidad(oCotizacionPropuesta); //if (EvaluarPenalidad(oCotizacionPropuesta, oCotizacion) >= 1) if (oCotizacionPropuesta.calidad > calidad_soluciones) { oCotizacionPropuesta.rentabilidad = EvaluarTotal(oCotizacionPropuesta); oCotizacionPropuesta.generacion = 0; lsoluciones.Add(oCotizacionPropuesta); n++; } Reset(oCotizacion, poblacion_celdas, poblacion_componentes, poblacion_empleados); //} i++; if (i == 500 && lsoluciones.Count < 5) { calidad_soluciones = calidad_soluciones - 10; n = 0; i = 0; } } }
/// <summary> /// Comprueba si puede acceder a un tipo de componente (Administrador, Franquicia, Empresa, Facturador) /// Por Id Usuario. /// </summary> /// <param name="idUsuario">Id del usuario</param> /// <param name="tipoComponente">Tipo componente (Administrador, Franquicia, Empresa, Facturador)</param> /// <param name="idComponente">Id del componente</param> /// <returns>Boleano, true en caso de que si pueda acceder.</returns> public static bool PuedeAcceder(int idUsuario, TipoComponente tipoComponente, int idComponente) { var repo = new AccesoRepository(); var acceso = repo.GetAccesosPorUsuario(idUsuario) .FirstOrDefault(a => a.TipoComponente == tipoComponente && a.Componente == idComponente); if (acceso != null && acceso.Estado == EstadoAcceso.Habilitado) return true; return false; }
public ParametrosModel ObtenerDatosRecurso(int tipo) { var oParametroModel = new ParametrosModel(); DataSet tb = new DataSet(); using (var helper = new SqlHelper()) { helper.Connect(); var sql = "usp_Parametro_ConsultaRecurso"; SqlDataAdapter sq = new SqlDataAdapter(); List <SqlParameter> parameters = new List <SqlParameter>(); parameters.Add(new SqlParameter("@tipo", tipo)); SqlCommand cmd = helper.CreateCommand(sql, CommandType.StoredProcedure, parameters.ToArray()); sq.SelectCommand = cmd; sq.Fill(tb, "Table1"); } DataTable dt = tb.Tables[0]; if (tipo == 1) { Celda oCelda; List <Celda> lceldas = new List <Celda>(); foreach (DataRow row in dt.Rows) { oCelda = new Celda(); oCelda.nombre = row["codigo"].ToString(); oCelda.idvalor = row["idvalor"].ToString(); //oCelda.largo= decimal.Parse(row["largo"].ToString()); //oCelda.costosoles= decimal.Parse(row["costosoles"].ToString()); lceldas.Add(oCelda); } oParametroModel.lceldas = lceldas; } if (tipo == 2) { Componente oComponente; List <Componente> lcomponentes = new List <Componente>(); foreach (DataRow row in dt.Rows) { oComponente = new Componente(); oComponente.idcomponente = int.Parse(row["id"].ToString()); oComponente.codigo = row["codigo"].ToString(); oComponente.nombre = row["componente"].ToString(); oComponente.tipocomponente = row["tipocomponente"].ToString(); oComponente.costosoles = decimal.Parse(row["costosoles"].ToString()); oComponente.cantidad = decimal.Parse(row["stock"].ToString()); lcomponentes.Add(oComponente); } oParametroModel.lcomponentes = lcomponentes; } if (tipo == 3) { TipoComponente oTipoComponente; List <TipoComponente> ltipocomponentes = new List <TipoComponente>(); foreach (DataRow row in dt.Rows) { oTipoComponente = new TipoComponente(); oTipoComponente.id = int.Parse(row["idcomponentetipo"].ToString()); oTipoComponente.nombre = row["descripcion"].ToString(); ltipocomponentes.Add(oTipoComponente); } oParametroModel.ltipocomponentes = ltipocomponentes; } if (tipo == 4) { Empleado oEmpleado; List <Empleado> lempleados = new List <Empleado>(); foreach (DataRow row in dt.Rows) { oEmpleado = new Empleado(); oEmpleado.codigo = int.Parse(row["id"].ToString()); oEmpleado.nombre = row["nombre_completo"].ToString(); oEmpleado.especialidad = row["especialidad"].ToString(); oEmpleado.costosoles = decimal.Parse(row["costosoles"].ToString()); lempleados.Add(oEmpleado); } oParametroModel.lempleados = lempleados; } if (tipo == 5) { Especialidad oEspecialidad; List <Especialidad> lespecialidades = new List <Especialidad>(); foreach (DataRow row in dt.Rows) { oEspecialidad = new Especialidad(); oEspecialidad.idespecialidad = int.Parse(row["idespecialidad"].ToString()); oEspecialidad.nombre = row["descripcion"].ToString(); lespecialidades.Add(oEspecialidad); } oParametroModel.lespecialidades = lespecialidades; } if (tipo == 6) { Servicio oServicio; List <Servicio> lservicios = new List <Servicio>(); foreach (DataRow row in dt.Rows) { oServicio = new Servicio(); oServicio.idvalor = row["idvalor"].ToString(); oServicio.nombre = row["servicio"].ToString(); lservicios.Add(oServicio); } oParametroModel.lservicios = lservicios; } return(oParametroModel); }