refactor: refactor js legacy code

This commit is contained in:
Chaplin Artem 2023-04-22 18:32:03 +03:00
parent 5a4e92199b
commit b439f0631c

View File

@ -1,66 +1,104 @@
class Item {
constructor(name, sellIn, quality){
constructor(name, sellIn, quality) {
this.name = name;
this.sellIn = sellIn;
this.quality = quality;
}
}
const itemsTypes = {
BRIE: "Aged brie",
PASS: "Backstage passes to a TAFKAL80ETC concert",
HAND: "Sulfuras, Hand of Ragnaros",
CON: "Conjured"
};
function updateBrie(item) {
if (item.quality < 50) {
item.quality = item.quality + 1;
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0 && item.quality < 50) {
item.quality = item.quality + 1;
}
};
function updatePass(item) {
if (item.quality < 50) {
item.quality = item.quality + 1;
if (item.sellIn < 11 && item.quality < 50) {
item.quality = item.quality + 1;
}
if (item.sellIn < 6 && item.quality < 50) {
item.quality = item.quality + 1;
}
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0) {
item.quality = item.quality - item.quality;
}
};
function updateHand(item) {};
function updateDefault(item) {
if (item.quality > 0) {
item.quality = item.quality - 1;
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0 && item.quality > 0) {
item.quality = item.quality - 1;
}
};
function updateConjured(item) {
if (item.quality > 0) {
item.quality = item.quality - 2;
}
item.sellIn = item.sellIn - 1;
if (item.sellIn < 0 && item.quality > 0) {
item.quality = item.quality - 1;
}
}
class Shop {
constructor(items=[]){
constructor(items = []) {
this.items = items;
}
updateQuality() {
for (var i = 0; i < this.items.length; i++) {
if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
if (this.items[i].quality > 0) {
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
this.items[i].quality = this.items[i].quality - 1;
}
}
} else {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') {
if (this.items[i].sellIn < 11) {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
}
if (this.items[i].sellIn < 6) {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
}
}
}
}
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
this.items[i].sellIn = this.items[i].sellIn - 1;
}
if (this.items[i].sellIn < 0) {
if (this.items[i].name != 'Aged Brie') {
if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
if (this.items[i].quality > 0) {
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
this.items[i].quality = this.items[i].quality - 1;
}
}
} else {
this.items[i].quality = this.items[i].quality - this.items[i].quality;
}
} else {
if (this.items[i].quality < 50) {
this.items[i].quality = this.items[i].quality + 1;
}
}
for (const item of this.items) {
switch (item.name) {
case itemsTypes.BRIE:
updateBrie(item);
continue;
case itemsTypes.PASS:
updatePass(item);
continue;
case itemsTypes.HAND:
updateHand(item);
continue;
case itemsTypes.CON:
updateConjured(item);
default:
updateDefault(item);
continue;
}
}
return this.items;
}
}
module.exports = {
Item,
Shop
}
Shop,
};