public void RemoveEsclusioneCategorie(CategoriaAttributi CatIn) { this.RichiestaEsclusioneCategorie.CategorieEscluse.Remove(CatIn); }
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); }
public void AddEsclusioneCategorie(CategoriaAttributi CatIn) { this.RichiestaEsclusioneCategorie.CategorieEscluse.Add(CatIn); }