Esempio n. 1
0
        public EndrePrisIflerePrisgrupperVindu(IList <CorianProdukt> produkter, FargeBeholder valgtPrisgruppe, DataAksess2 db)
        {
            InitializeComponent();
            this.db = db;

            Prisgrupper = new List <PrisgruppeItem>();
            foreach (var f in db.Produktbeholder.Prisgruppesamling)
            {
                if (f.Visible && f.PrisgruppeNavn != valgtPrisgruppe.PrisgruppeNavn)
                {
                    Prisgrupper.Add(new PrisgruppeItem {
                        Prisgruppe = f
                    });
                }
            }

            _valgtPrisgruppe = valgtPrisgruppe;

            //foreach (CorianProdukt produkt in produkter)
            //{
            //    foreach (CorianPrisgruppeProdukt prisgruppe in produkt.Prisgrupper)
            //    {
            //        if (prisgruppe != null && prisgruppe.Farger.Visible)
            //        {
            //            if (!Prisgrupper.Contains(prisgruppe.Farger))
            //                Prisgrupper.Add(prisgruppe.Farger);
            //        }

            //    }
            //}

            prisgruppeListe.ItemsSource = Prisgrupper;

            this.Produkter = produkter;
        }
        void slettFargeKnapp_Click(object sender, RoutedEventArgs e)
        {
            if (prisgruppeListboks.SelectedItem == null || !(prisgruppeListboks.SelectedItem is FargeBeholder))
            {
                return;
            }

            int selIndex = fargerListboks.SelectedIndex;

            FargeBeholder fb = (prisgruppeListboks.SelectedItem as FargeBeholder);

            int ant = fargerListboks.SelectedItems.Count;

            for (int i = 0; i < ant; i++)
            {
                if (fargerListboks.SelectedItems[0] is Farge)
                {
                    fb.Farger.Remove(fargerListboks.SelectedItems[0] as Farge);
                }
            }



            if (selIndex < fargerListboks.Items.Count)
            {
                fargerListboks.SelectedIndex = selIndex;
            }
            else
            {
                fargerListboks.SelectedIndex = fargerListboks.Items.Count - 1;
            }
        }
        void prisgruppeListboks_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!(prisgruppeListboks.SelectedItem is FargeBeholder))
            {
                return;
            }

            FargeBeholder fargeBeholder = prisgruppeListboks.SelectedItem as FargeBeholder;

            fargerListboks.DataContext = fargeBeholder;
        }
        void leggTilAlleFargerKnapp_Click(object sender, RoutedEventArgs e)
        {
            if (!(prisgruppeListboks.SelectedItem is FargeBeholder))
            {
                return;
            }

            FargeBeholder merketFargebeholder = prisgruppeListboks.SelectedItem as FargeBeholder;
            List <Farge>  nyFargeliste        = new List <Farge>();

            foreach (FargeBeholder fb in db.Produktbeholder.Prisgruppesamling)
            {
                if (fb != merketFargebeholder)
                {
                    foreach (Farge farge in fb.Farger)
                    {
                        bool leggTil = true;
                        foreach (Farge fargeIMerketFargebeholder in nyFargeliste)
                        {
                            if (farge.FargeTittel.Trim() == fargeIMerketFargebeholder.FargeTittel.Trim())
                            {
                                leggTil = false;
                                break;
                            }
                        }

                        if (leggTil)
                        {
                            Farge nyFarge = new Farge(farge.FargeTittel, merketFargebeholder);
                            nyFarge.SetMerknader = farge.SetMerknader;

                            foreach (Merknad m in farge.FargeMerknader)
                            {
                                nyFarge.FargeMerknader.Add(m);
                            }

                            nyFargeliste.Add(farge);
                        }
                    }
                }
            }

            //nyFargeliste.OrderBy(farge => farge.FargeTittel);
            nyFargeliste.Sort(delegate(Farge f1, Farge f2) { return(f1.FargeTittel.CompareTo(f2.FargeTittel)); });
            foreach (Farge farge in nyFargeliste)
            {
                merketFargebeholder.Farger.Add(farge);
            }
        }
        void nyttProduktKnapp_Click(object sender, RoutedEventArgs e)
        {
            CorianProdukt c = new CorianProdukt("Kategori", "Produktnavn", Modell.Produkt.DelingType.CorianKumHeltreKum);

            CorianProdukt merketProdukt = listview.SelectedItem as CorianProdukt;

            if (merketProdukt != null)
            {
                c.ProduktKategori = merketProdukt.ProduktKategori;
                c.Navn            = merketProdukt.Navn;
                c.Deling          = merketProdukt.Deling;
            }

            for (int i = 0; i < db.Produktbeholder.Prisgruppesamling.Count; i++)
            {
                c.Prisgrupper[i] = new CorianPrisgruppeProdukt(0, null, CorianPrisgruppeProdukt.PrisType.Normal, db.Produktbeholder.Prisgruppesamling[i]);
            }

            //Setter rett prisgruppe
            FargeBeholder fargebeholder = cmbPrisgruppe.SelectedItem as FargeBeholder;

            foreach (CorianPrisgruppeProdukt prisgruppe in c.Prisgrupper)
            {
                if (prisgruppe.Farger == fargebeholder)
                {
                    c.Prisgruppe = prisgruppe;
                    break;
                }
            }

            int toIndex = listview.SelectedIndex + 1;

            while (toIndex < listview.Items.Count && (listview.Items[toIndex] as CorianProdukt).Prisgruppe.Avhengighet != null)
            {
                toIndex++;
            }

            Liste.Insert(toIndex, c);
        }
        void cmbPrisgruppeVelger_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBox cmb = sender as ComboBox;

            if (cmb.SelectedItem == null || !(cmb.SelectedItem is FargeBeholder))
            {
                return;
            }

            FargeBeholder valgtFargeBeholder = cmb.SelectedItem as FargeBeholder;

            foreach (CorianProdukt produkt in Liste)
            {
                //bool doBreak = false;
                foreach (CorianPrisgruppeProdukt prisgruppe in produkt.Prisgrupper)
                {
                    if (prisgruppe.Farger == valgtFargeBeholder)
                    {
                        produkt.Prisgruppe = prisgruppe;
                        break;
                    }
                    //if (prisgruppe != null)
                    //    foreach (Farge farge in prisgruppe.Farger.Farger)
                    //    {
                    //        //string s = prisgruppe.Farger.PrisgruppeNavn + ": " + farge;
                    //        if (valgtFargeBeholder.FargeTittel == farge.FargeTittel)
                    //        {
                    //            produkt.Prisgruppe = prisgruppe;
                    //            doBreak = true;
                    //            break;
                    //        }
                    //    }

                    //if (doBreak)
                    //    break;
                } //Prisgrupper
            }     //Liste
        }
        void endrePrisgruppetittel_Click(object sender, RoutedEventArgs e)
        {
            if (!(prisgruppeListboks.SelectedItem is FargeBeholder))
            {
                return;
            }

            FargeBeholder merketFargebeholder = prisgruppeListboks.SelectedItem as FargeBeholder;


            string prisgruppenavn = Microsoft.VisualBasic.Interaction.InputBox("Skriv inn det nye navnet på prisgruppen:", "Corinor prisforslag", "");

            if (string.IsNullOrEmpty(prisgruppenavn))
            {
                return;
            }

            merketFargebeholder.PrisgruppeNavn = prisgruppenavn;

            //HACK: oppdaterer prisgruppenavnet med å endre datacontext. Bør bruke notify av PrisgruppeNavn
            prisgruppeListboks.DataContext = null;
            prisgruppeListboks.DataContext = this;
        }
        void nyttUnderproduktKnapp_Click(object sender, RoutedEventArgs e)
        {
            if (listview.SelectedItem == null || !(listview.SelectedItem is CorianProdukt))
            {
                return;
            }

            CorianProdukt merketProdukt = listview.SelectedItem as CorianProdukt;

            if (merketProdukt.Prisgrupper[0].Avhengighet != null)
            {
                return;
            }

            CorianProdukt c = new CorianProdukt(merketProdukt.ProduktKategori, "Produktnavn", merketProdukt.Deling);

            c.PrisPer = merketProdukt.PrisPer;

            for (int i = 0; i < db.Produktbeholder.Prisgruppesamling.Count; i++)
            {
                c.Prisgrupper[i] = new CorianPrisgruppeProdukt(0, merketProdukt.Prisgrupper[i], CorianPrisgruppeProdukt.PrisType.Adder, db.Produktbeholder.Prisgruppesamling[i]);
            }

            //Setter rett prisgruppe
            FargeBeholder fargebeholder = cmbPrisgruppe.SelectedItem as FargeBeholder;

            foreach (CorianPrisgruppeProdukt prisgruppe in c.Prisgrupper)
            {
                if (prisgruppe.Farger == fargebeholder)
                {
                    c.Prisgruppe = prisgruppe;
                    break;
                }
            }

            Liste.Insert(listview.SelectedIndex + 1, c);
        }
        void nyFargeKnapp_Click(object sender, RoutedEventArgs e)
        {
            if (prisgruppeListboks.SelectedItem == null || !(prisgruppeListboks.SelectedItem is FargeBeholder))
            {
                return;
            }

            //string prisgruppenavn = "";
            //if (prisgruppeListboks.SelectedItem is FargeBeholder)
            //    prisgruppenavn = (prisgruppeListboks.SelectedItem as FargeBeholder).PrisgruppeNavn;
            FargeBeholder fb    = (prisgruppeListboks.SelectedItem as FargeBeholder);
            int           index = fargerListboks.SelectedIndex + 1;

            if (fargerListboks.SelectedIndex == -1)
            {
                index = fargerListboks.Items.Count;
            }

            Farge nyFarge = new Farge("Farge" + nrFarge++, prisgruppeListboks.SelectedItem as FargeBeholder);

            fb.Farger.Insert(index, nyFarge);

            fargerListboks.ScrollIntoView(nyFarge);
        }
        void cmbPrisgruppe_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBox cmb = sender as ComboBox;

            if (cmb.SelectedItem == null || !(cmb.SelectedItem is FargeBeholder))
            {
                return;
            }

            prisgruppeColumn.Header = (cmbPrisgruppe.SelectedItem as FargeBeholder).PrisgruppeNavn;
            FargeBeholder merketFargebeholder = cmb.SelectedItem as FargeBeholder;

            //Ny logikk for å passe på at prisgrupper blir opprettet

            var           antallIkkeFunnet = 0;
            CorianProdukt forrigeProdukt   = null;

            foreach (CorianProdukt produkt in Liste)
            {
                var funnet = false;
                foreach (CorianPrisgruppeProdukt prisgruppe in produkt.Prisgrupper)
                {
                    if (prisgruppe != null && prisgruppe.Farger == merketFargebeholder)
                    {
                        produkt.Prisgruppe = prisgruppe;
                        funnet             = true;
                        break;
                    }
                }//Prisgrupper

                if (!funnet)
                {
                    var f = produkt.Prisgrupper.ToList();

                    var prisgruppe = produkt.Prisgrupper[0].Avhengighet;
                    if (forrigeProdukt != null && produkt.Prisgrupper[0].Avhengighet != null)
                    {
                        prisgruppe = forrigeProdukt.Prisgrupper.FirstOrDefault(x => x.Farger == merketFargebeholder);

                        if (prisgruppe == null)
                        {
                            MessageBox.Show("Prisgruppe er NULL");
                        }
                    }

                    var nyGruppe = new CorianPrisgruppeProdukt(0,
                                                               prisgruppe, //TODO: Skal avhengighet være samme for alle prisgruper?
                                                               produkt.Prisgrupper[0].prisType,
                                                               merketFargebeholder);


                    f.Add(nyGruppe);

                    produkt.Prisgrupper = f.ToArray();
                    produkt.Prisgruppe  = nyGruppe;
                    antallIkkeFunnet++;
                }

                forrigeProdukt = produkt;
            }//Liste

            if (antallIkkeFunnet > 0)
            {
                MessageBox.Show("Fant ikke alle prisgrupper. Mangler på antall produkter: " + antallIkkeFunnet);
            }



            //prisTypeVelger
            //prisgrunnlagTekstboks
        }