示例#1
0
        public void kolejka()
        {
            while (start)
            {
                if (wiadomosci.Count > 0)
                {
                    Wiadomosc w = wiadomosci.Dequeue();
                    if (w.wiadomosc == EnWiadomosc.Sprzedane)
                    {
                        lock (this)
                        {
                            Console.Write("Klinet: " + id + " naprawił części: ");
                            for (int i = 0; i < towary.Count(); i++)
                            {
                                Console.Write(towary[i].nazwa + ", ");
                            }
                            Console.Write(" od hurtowni " + w.idHurtowni + " za " + w.suma + "\n");
                        }
                    }
                    else if (w.wiadomosc == EnWiadomosc.ZamowNormalnie)
                    {
                        znajdz(EnWiadomosc.ZamowNormalnie);
                    }
                    else if (w.wiadomosc == EnWiadomosc.ZamowPriorytet)
                    {
                        znajdz(EnWiadomosc.ZamowPriorytet);
                    }
                }

                else
                {
                    Thread.Sleep(10);
                }
            }
        }
示例#2
0
        public void znajdz(List <Towar> tow, int idklient, EnWiadomosc wiad)
        {
            foreach (Hurtownia h in Hurtownie)
            {
                if (wiad == EnWiadomosc.ZnajdzPriorytetowo)
                {
                    h.wiadomosci.Enqueue(new Wiadomosc(idklient, h.id, EnWiadomosc.ZnajdzPriorytetowo, tow, 0));
                }
                else if (wiad == EnWiadomosc.ZnajdzNormalnie)
                {
                    h.wiadomosci.Enqueue(new Wiadomosc(idklient, h.id, EnWiadomosc.ZnajdzNormalnie, tow, 0));
                }
            }

            Thread.Sleep(200);
            int    ile    = wiadomosci.Count;
            int    niezn  = 0;
            int    idhurt = -1;
            double suma   = -1;

            for (int i = 0; i < ile; i++)
            {
                Wiadomosc w = wiadomosci.Dequeue();
                if (w.wiadomosc == EnWiadomosc.Znalazlem && w.IdKlienta == idklient)
                {
                    if (suma == -1)
                    {
                        suma   = w.suma;
                        idhurt = w.idHurtowni;
                    }
                    else if (suma > w.suma)
                    {
                        suma   = w.suma;
                        idhurt = w.idHurtowni;
                    }
                }
                else if (w.wiadomosc == EnWiadomosc.NieZnalazlem && w.IdKlienta == idklient)
                {
                }
                else
                {
                    wiadomosci.Enqueue(w);
                    niezn++;
                }

                if (niezn == ile)
                {
                    Console.WriteLine("Hurtownie nie znalazły części dla klienta " + idklient);
                }
            }

            foreach (Hurtownia h in Hurtownie)
            {
                if (h.id == idhurt)
                {
                    h.wiadomosci.Enqueue(new Wiadomosc(idklient, h.id, EnWiadomosc.Sprzedaj, tow, suma));
                }
            }
        }
示例#3
0
        public void kolejka()
        {
            while (start)
            {
                if (wiadomosci.Count > 0)
                {
                    Wiadomosc w = wiadomosci.Dequeue();
                    switch (w.wiadomosc)
                    {
                    case EnWiadomosc.Sprzedalem:
                        foreach (Klient k in Klienci)
                        {
                            if (k.id == w.IdKlienta)
                            {
                                Console.WriteLine("Hurtownia: " + w.idHurtowni + " naprawiła części dla klienta " + w.IdKlienta);
                                k.wiadomosci.Enqueue(new Wiadomosc(w.IdKlienta, w.idHurtowni, EnWiadomosc.Sprzedane, w.t, w.suma));
                            }
                        }
                        break;

                    case EnWiadomosc.ZnajdzNormalnie:
                        Console.WriteLine("Klient: {0} chce naprawić w normalnym czasie {1} części ", w.IdKlienta, w.t.Count());
                        znajdz(w.t, w.IdKlienta, EnWiadomosc.ZnajdzNormalnie);
                        break;

                    case EnWiadomosc.ZnajdzPriorytetowo:
                        Console.WriteLine("Klient: {0} chce naprawić w priorytetowym czasie {1} części ", w.IdKlienta, w.t.Count());
                        znajdz(w.t, w.IdKlienta, EnWiadomosc.ZnajdzPriorytetowo);
                        break;

                    case EnWiadomosc.ZarejestrujHurtownia:
                        ZarejestrujHurtownie(w.hurt);
                        break;

                    case EnWiadomosc.ZarejestrujKlient:
                        ZarejestrujKlient(w.kli);
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    Thread.Sleep(10);
                }
            }
        }
示例#4
0
 public void kolejka()
 {
     while (start)
     {
         if (wiadomosci.Count > 0)
         {
             Wiadomosc w = wiadomosci.Dequeue();
             if (w.wiadomosc == EnWiadomosc.ZnajdzNormalnie)
             {
                 double ile = znajdzListeTowarow(w.t, EnWiadomosc.ZnajdzNormalnie);
                 if (ile != 0)
                 {
                     Console.Write("Hurtownia: " + id + " dla Klienta: " + w.IdKlienta + "  " + "znalazla części za  " + ile + "\n");
                     Broker.wiadomosci.Enqueue(new Wiadomosc(w.IdKlienta, id, EnWiadomosc.Znalazlem, w.t, ile));
                 }
                 else
                 {
                     Console.Write("Hurtownia: " + id + " dla Klienta: " + w.IdKlienta + " nie znalazla wszystkich części \n");
                     Broker.wiadomosci.Enqueue(new Wiadomosc(w.IdKlienta, id, EnWiadomosc.NieZnalazlem, w.t, ile));
                 }
             }
             else if (w.wiadomosc == EnWiadomosc.ZnajdzPriorytetowo)
             {
                 double ile = znajdzListeTowarow(w.t, EnWiadomosc.ZnajdzPriorytetowo);
                 Console.Write("Hurtownia: " + id + " dla Klienta: " + w.IdKlienta + "  " + "znalazla części za  " + ile + "\n");
                 Broker.wiadomosci.Enqueue(new Wiadomosc(w.IdKlienta, id, EnWiadomosc.Znalazlem, w.t, ile));
             }
             else if (w.wiadomosc == EnWiadomosc.Sprzedaj)
             {
                 bool b = sprzedajTowary(w.t);
                 if (b == true)
                 {
                     Broker.wiadomosci.Enqueue(new Wiadomosc(w.IdKlienta, id, EnWiadomosc.Sprzedalem, w.t, w.suma));
                 }
             }
         }
         else
         {
             Thread.Sleep(10);
         }
     }
 }