Untitled
unknown
javascript
a year ago
4.1 kB
1
Indexable
Never
const kosztEn=1.23; class Product{ constructor(id,nazwa,model,cena,zuzycieEnergii){ this.id=id, this.nazwa=nazwa, this.model=model, this.cena=cena, this.zuzycieEnergii=zuzycieEnergii //this.ilosc = 1 } koszt(){ return this.cena; } kosztEnergii(){ return this.zuzycieEnergii*kosztEn + "kWh"; } wiekProduktu(rocznik){ return 2022-rocznik; } wiekProduktuLata(rocznik){ let lata=2022-rocznik if(lata==1) return lata + " rok"; else if(lata>1||lata<5) return lata + " lata"; else{ return lata + " lat"; } } tostring() { return("(" + this.id + ", " + this.nazwa + ", "+ this.model + ", " + this.cena + ", " + this.zuzycieEnergii +")") } } class ListaTowarow{ constructor() { this.lista=new Array(); } wypiszWszystkieProdukty() { this.lista.forEach(function(element) { console.log(element) }) } dodajProdukt(p){ if(this.lista.find(x=>x.id==p.id)){ //zeby sprawdzic czy juz jest w liscie o tym indekscie throw 'Object already in array'; }else{ this.lista.push(p) }} zmienProdukt(idprod,produkto){ let n=this.lista.findIndex(x => x.id == idprod) this.lista[n]=produkto; } wypiszProdukt(idprod){ return this.lista.find(x=>x.id == idprod) }} class Sklep extends ListaTowarow{ dodajProduktbezid(nazwa,model,cena,zuzycieEnergii){ let id = 0 for(let i =0;i<this.lista.length;i++){ if(this.lista[i].id>id) id=this.lista[i].id } id=id+1 let x = new Product(id,nazwa,model,cena,zuzycieEnergii) this.lista.push(x) } dodajProduktzid(id,nazwa,model,cena,zuzycieEnergii){ let x = new Product(id,nazwa,model,cena,zuzycieEnergii) this.lista.push(x) } } class Magazyn extends ListaTowarow { constructor() { super(list); this.map = new Map(); } dodajProdukt(p,ile){ if(this.lista.find(x=>x.id==p.id)){ //zeby sprawdzic czy juz jest w liscie o tym indekscie throw 'Object already in array'; }else{ this.map.set(p.id, ile); p.ilosc = ile; this.lista.push(p) }} zabierzProdukt(idprod, ile) { let x = this.lista.findIndex(x=>x.id == idprod) let y = this.lista[x]; if(!this.lista.some(x=>x.id==idprod)){ //zeby sprawdzic czy juz jest w liscie o tym indekscie throw 'Object not in array'; }else{ y.ilosc -= ile; if(y.ilosc<=0) y.ilosc=0 this.map.set(x, y.ilosc); }} } class Zamowienia { constructor(){ this.zamowienia=[] } dodajProdukt(id,magaz){ if(magaz.lista.some(prod=>prod.id==id)){this.zamowienia.push({ProductID:id,magazyn:magaz,ilosc:magaz.ilosc}) }else{ console.log("cant find product with such id") } } zrealizujZamowienie(c){ for(let i=0;i<this.zamowienia.length;i++){ let x = this.zamowienia[i] this.zamowienia[i].ilosc-=c } } } let prod = new Product(2,"pralkobetoniarka","X77",800,10) let prod2=new Product(4,"Tarkowiertarka","ub99",300,2) let prod3=new Product(111,"Piekarnikolodowka","jedyny",2000,15) let list=new ListaTowarow() list.dodajProdukt(prod) list.dodajProdukt(prod3) list.dodajProdukt(prod2) let x =list.wypiszProdukt(2) console.log(x) try { list.dodajProdukt(prod3) } catch (e) { console.error(e); } list.zmienProdukt(2,prod3) let mag = new Magazyn() mag.dodajProdukt(prod,3) mag.dodajProdukt(prod2,5) mag.wypiszWszystkieProdukty() try { mag.zabierzProdukt(2,5); } catch (e) { console.error(e); //not in array } mag.zabierzProdukt(2,2) mag.wypiszWszystkieProdukty() let sklp= new Sklep() sklp.dodajProduktbezid("tomek","smiglowiec",10000,100) sklp.dodajProduktzid(10,"Xd","Omg",1,111) sklp.wypiszWszystkieProdukty() let zam = new Zamowienia() zam.dodajProdukt(4,mag) zam.dodajProdukt(2,mag) zam.dodajProdukt(5,mag) console.log(zam) zam.zrealizujZamowienie(2) console.log(zam)