nord vpnnord vpn
Ad

Untitled

mail@pastecode.io avatar
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)

nord vpnnord vpn
Ad