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); } } }
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)); } } }
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); } } }
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); } } }