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;
 }
Пример #2
0
 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;
 }
Пример #3
0
 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;
 }
Пример #4
0
        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;
                }
            }
        }
Пример #6
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);
        }