Ejemplo n.º 1
0
 public void RemoveEsclusioneCategorie(CategoriaAttributi CatIn)
 {
     this.RichiestaEsclusioneCategorie.CategorieEscluse.Remove(CatIn);
 }
Ejemplo n.º 2
0
        public AttributiCategorie GetAttributiValidi()
        {
            /* La funzione ritorna gli attributi che si devono mostrare nella sezione degli attributi disponibili.
             * Gli attributi vengono filtrati (in base a quelli già selezionati e) in base alla configurazione delle esclusioni
             *
             * Le categorie e gli attributi sono già filtrati per il tipo lavorazione.
             * devo solo escludere le categorie e gli attributi non compatibili con quelli già selezionati. Aggiunta l'esclusione di attributi imposta da web.
             *
             * la query è questa:
             * select * from LAVAttributi at
             *  where at.Categoria not in (select escat.CategoriaEsclusa from LAVLavorazioneAttributi lat join LAVAttributi attsel on lat.AttributoLavorazione = attsel.idAttributo
             *	 join LAVEsclusioniCategorie escat on attsel.Categoria = escat.Categoria)
             *    and at.idAttributo not in (select esat.AttributoEscluso from LAVLavorazioneAttributi lat join LAVEsclusioniAttributi esat on lat.AttributoLavorazione = esat.Attributo)
             *    and at.idAttributo not in (lista degli attributi esclusi da funzionalità web)
             */
            DataTable Attributi           = DSLavorazioni.Tables["Attributi"];
            DataTable Categorie           = DSLavorazioni.Tables["CategorieAttributi"];
            DataTable LavorazAttr         = DSLavorazioni.Tables["LavorazioneAttributi"];
            DataTable EsclusioneCategorie = DSLavorazioni.Tables["EsclusioniCategorie"];
            DataTable EsclusioneAttributi = DSLavorazioni.Tables["EsclusioniAttributi"];

            var AttributiValidi =
                from attributi in Attributi.AsEnumerable()
                join categoria in Categorie.AsEnumerable() on attributi.Field <int>("Categoria") equals categoria.Field <int>("idCategoria")
                    where !(from lat in LavorazAttr.AsEnumerable()
                            join attsel in Attributi.AsEnumerable()
                            on lat.Field <int>("AttributoLavorazione") equals attsel.Field <int>("idAttributo")
                            join escat in EsclusioneCategorie.AsEnumerable()
                            on attsel.Field <int>("Categoria") equals escat.Field <int>("Categoria")
                            select escat.Field <int>("CategoriaEsclusa")
                            ).Contains(attributi.Field <int>("Categoria")) && //esclusione delle categorie mutuamente esclusive
                !(from cat_web in this.RichiestaEsclusioneCategorie.CategorieEscluse
                  select cat_web.idCategoria
                  ).Contains(attributi.Field <int>("Categoria")) &&   //esclusione delle categorie richieste da funzionalità
                !(from lat2 in LavorazAttr.AsEnumerable()
                  join esat in EsclusioneAttributi.AsEnumerable() on lat2.Field <int>("AttributoLavorazione") equals esat.Field <int>("Attributo")
                  select esat.Field <int>("AttributoEscluso")
                  ).Contains(attributi.Field <int>("idAttributo")) &&   //esclusione degli attributi mutuamente esclusi
                !(from lat3 in LavorazAttr.AsEnumerable()
                  select lat3.Field <int>("AttributoLavorazione")
                  ).Contains(attributi.Field <int>("idAttributo")) &&   //Esclusione degli attributi già selezionati
                !(from atr_web in this.RichiestaEsclusioneAttributi.AttributiEsclusi
                  select atr_web.idAttributo
                  ).Contains(attributi.Field <int>("idAttributo"))      //Esclusione degli attributi richiesti da funzionalità
                orderby categoria.Field <int>("Ordine"), attributi.Field <int>("idAttributo")
            select new
            {
                CategoriaId          = attributi.Field <int>("Categoria"),
                DescrizioneCategoria = categoria.Field <string>("Descrizione"),
                idAttributo          = attributi.Field <int>("idAttributo"),
                DescrizioneAttributo = attributi.Field <string>("Descrizione"),
                HasValore            = attributi.Field <bool>("HasValue"),
                DescrizioneValore    = attributi.Field <string>("DescrizioneValore")
            };

            AttributiCategorie result    = new AttributiCategorie();
            int idCategoriaAtt           = -100;
            CategoriaAttributi Categoria = null;

            foreach (var attributiOk in AttributiValidi)
            {
                if (attributiOk.CategoriaId != idCategoriaAtt)
                {
                    Categoria             = new CategoriaAttributi();
                    Categoria.idCategoria = attributiOk.CategoriaId;
                    Categoria.Descrizione = attributiOk.DescrizioneCategoria;
                    result.CategorieAttributi.Add(Categoria);
                }
                idCategoriaAtt = attributiOk.CategoriaId;
                Attributo att = new Attributo();
                att.idCategoria       = attributiOk.CategoriaId;
                att.idAttributo       = attributiOk.idAttributo;
                att.Descrizione       = attributiOk.DescrizioneAttributo;
                att.HasValore         = attributiOk.HasValore;
                att.DescrizioneValore = attributiOk.DescrizioneValore;
                Categoria.Attributi.Add(att);
            }
            return(result);
        }
Ejemplo n.º 3
0
 public void AddEsclusioneCategorie(CategoriaAttributi CatIn)
 {
     this.RichiestaEsclusioneCategorie.CategorieEscluse.Add(CatIn);
 }