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{
constructor(){
super(list)
}
dodajProdukt(nazwa,model,cena,zuzycieEnergii){
let id = Math.floor(Math.random()*100)
let x = new Product(id,nazwa,model,cena,zuzycieEnergii)
list.dodajProdukt(x)
}
dodajProdukt(id,nazwa,model,cena,zuzycieEnergii){
let x = new Product(id,nazwa,model,cena,zuzycieEnergii)
list.dodajProdukt(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 = list[x]
if(!this.lista.find(x=>x.id==idprod)){
//zeby sprawdzic czy juz jest w liscie o tym indekscie
throw 'Object not in array';
}else{
y.ilosc = y.ilosc-ile
this.map.set(x, ile);
}}
/* if(iloscSztuk <= this.map.get(idProduktu)) {
this.map.set(idProduktu, (this.map.get(idProduktu) - iloscSztuk));
return this.lista.find(x => x.id == idProduktu );
}*/
}
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)
//list.wypiszWszystkieProdukty()
console.log(x)
try {
list.dodajProdukt(prod3)
} catch (e) {
console.error(e);
// expected output: "Parameter is not a number!"
}
list.zmienProdukt(2,prod3)
//list.wypiszWszystkieProdukty()
let mag = new Magazyn()
mag.dodajProdukt(prod,3)
mag.dodajProdukt(prod2,5)
mag.wypiszWszystkieProdukty()
try {
mag.zabierzProdukt(5,2)
} catch (e) {
console.error(e);
//not in array
}
mag.zabierzProdukt(2,2)
mag.wypiszWszystkieProdukty()
let sklp= new Sklep()
sklp.dodajProdukt("tomek","smiglowiec",10000,100)
sklp.wypiszWszystkieProdukty()
sklp.dodajProdukt(10,"Xd","Omg",1,111)
sklp.wypiszWszystkieProdukty()