示例#1
0
文件: DBProksi.cs 项目: vodolijabg/LS
        public ObservableCollection<Artikal> NadjiArtikal(string brojZaPretragu, bool slicnoTrazenje, bool samoSaCenom, bool biloKojiBroj,
            bool brojProizvodjaca, bool oeBroj, bool korisceniBroj, bool uporedniBroj, bool eanBroj)
        {

            List<int> _vrstaBrojaZaPretragu = new List<int>();

            #region vrstaBrojaZaPretragu
            if (!biloKojiBroj)
            {
                if (brojProizvodjaca)
                {
                    _vrstaBrojaZaPretragu.Add(1);
                }
                if (oeBroj)
                {
                    _vrstaBrojaZaPretragu.Add(3);

                }
                if (korisceniBroj)
                {
                    _vrstaBrojaZaPretragu.Add(2);

                }
                if (uporedniBroj)
                {
                    _vrstaBrojaZaPretragu.Add(4);

                }
                if (eanBroj)
                {
                    _vrstaBrojaZaPretragu.Add(5);

                }
            }
            #endregion

            try
            {
                LavDataClassesDataContext _baza = new LavDataClassesDataContext(konekcioniString);
                
                ////Da bi izbegao load podataka za tabelu NajpovoljnijiDobavljac koja ne postoji u Bazi
                ////prvo gasim dlo za sve tabele
                //_baza.DeferredLoadingEnabled = false;
                ////a onda dodajem dlo za one koje mi trebaju
                //DataLoadOptions _dlo = new DataLoadOptions();
                //_dlo.LoadWith<Artikal>(p => p.Proizvodjac);
                //_dlo.LoadWith<Artikal>(p => p.OpisTabela);
                //_dlo.LoadWith<Artikal>(p => p.VezaArtikalBrojZaPretragus);
                //_dlo.LoadWith<Artikal>(p => p.VezaArtikalDobavljacs);
                //_dlo.LoadWith<VezaArtikalDobavljac>(p => p.PoslovniPartner);
                //_dlo.LoadWith<VezaArtikalDobavljac>(p => p.KorisnikPrograma);
                //_baza.LoadOptions = _dlo;

                if (_baza.DatabaseExists())
                {
                    ObservableCollection<Artikal> _lista = new ObservableCollection<Artikal>(_baza.uspNadjiArtikal(brojZaPretragu, slicnoTrazenje, samoSaCenom, biloKojiBroj, brojProizvodjaca, oeBroj, korisceniBroj, uporedniBroj, eanBroj).ToList());

                    //IQueryable<Artikal> _upit = (from a in _baza.Artikals
                    //                             select a).OrderBy(w => w.Artikal_ID);

                    //if (samoSaCenom)
                    //{
                    //    _upit = (from u in _upit
                    //             join c in _baza.VezaArtikalDobavljacs
                    //             on u.Artikal_ID equals c.ArtikalID
                    //             select u);
                    //}

                    //if (slicnoTrazenje)
                    //{
                    //    if (_vrstaBrojaZaPretragu.Count().Equals(0))
                    //    {
                    //        _upit = (from u in _upit
                    //                 join v in _baza.VezaArtikalBrojZaPretragus
                    //                 on u.Artikal_ID equals v.Artikal_ID
                    //                 where v.BrojZaPretragu.Contains(brojZaPretragu)
                    //                 select u);
                    //    }
                    //    else if (_vrstaBrojaZaPretragu.Count().Equals(1))
                    //    {
                    //        _upit = (from u in _upit
                    //                 join v in _baza.VezaArtikalBrojZaPretragus
                    //                 on u.Artikal_ID equals v.Artikal_ID
                    //                 where v.BrojZaPretragu.Contains(brojZaPretragu) & _vrstaBrojaZaPretragu[0].Equals(v.VrstaBrojaZaPretragu_ID)
                    //                 select u);
                    //    }
                    //    else
                    //    {
                    //        _upit = (from u in _upit
                    //                 join v in _baza.VezaArtikalBrojZaPretragus
                    //                 on u.Artikal_ID equals v.Artikal_ID
                    //                 where v.BrojZaPretragu.Contains(brojZaPretragu) & _vrstaBrojaZaPretragu.Contains(v.VrstaBrojaZaPretragu_ID)
                    //                 select u);
                    //    }
                    //}
                    //else
                    //{
                    //    if (_vrstaBrojaZaPretragu.Count().Equals(0))
                    //    {
                    //        _upit = (from u in _upit
                    //                 join v in _baza.VezaArtikalBrojZaPretragus
                    //                 on u.Artikal_ID equals v.Artikal_ID
                    //                 where v.BrojZaPretragu.Equals(brojZaPretragu)
                    //                 select u);
                    //    }
                    //    else if (_vrstaBrojaZaPretragu.Count().Equals(1))
                    //    {
                    //        _upit = (from u in _upit
                    //                 join v in _baza.VezaArtikalBrojZaPretragus
                    //                 on u.Artikal_ID equals v.Artikal_ID
                    //                 where v.BrojZaPretragu.Equals(brojZaPretragu) & _vrstaBrojaZaPretragu[0].Equals(v.VrstaBrojaZaPretragu_ID)
                    //                 select u);
                    //    }
                    //    else
                    //    {
                    //        _upit = (from u in _upit
                    //                 join v in _baza.VezaArtikalBrojZaPretragus
                    //                 on u.Artikal_ID equals v.Artikal_ID
                    //                 where v.BrojZaPretragu.Equals(brojZaPretragu) & _vrstaBrojaZaPretragu.Contains(v.VrstaBrojaZaPretragu_ID)
                    //                 select u);
                    //    }
                    //}


                    //_upit = (from u in _upit
                    //         select u).Take(200);//.Distinct().Take(100);

                    return _lista;
                }
                else
                {
                    throw new Exception("Baza ne postoji.");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }