diff --git a/php/src/GildedRose.php b/php/src/GildedRose.php index dc33e3a9..1a2a6321 100644 --- a/php/src/GildedRose.php +++ b/php/src/GildedRose.php @@ -26,7 +26,7 @@ final class GildedRose { foreach ($this->items as $item) { - if ($item->name === 'Sulfuras, Hand of Ragnaros') { + if ($item->name === 'Sulfuras, Hand of Ragnaros' || $item->name === 'Backstage passes to a TAFKAL80ETC concert') { $gildedRoseItem = $this->gildedRoseItemFactory->createGildedRoseItem($item); $gildedRoseItem->ageByOneDay(); continue; diff --git a/php/src/GildedRoseItem/BackstagePassItem.php b/php/src/GildedRoseItem/BackstagePassItem.php index c5ed82d2..c68d2c40 100644 --- a/php/src/GildedRoseItem/BackstagePassItem.php +++ b/php/src/GildedRoseItem/BackstagePassItem.php @@ -16,21 +16,23 @@ class BackstagePassItem implements GildedRoseItem public function ageByOneDay(): void { $this->item->sellIn -= 1; + $this->item->quality = min(50, $this->getNewQuality($this->item->quality, $this->item->sellIn)); + } - if ($this->item->quality < 50) { - $this->item->quality += 1; - - if ($this->item->sellIn <= 10 && $this->item->quality < 50) { - $this->item->quality += 1; - } - - if ($this->item->sellIn <= 5 && $this->item->quality < 50) { - $this->item->quality += 1; - } + private function getNewQuality(int $previousQuality, int $sellIn): int + { + if ($sellIn < 0) { + return 0; } - if ($this->item->sellIn < 0) { - $this->item->quality = 0; + if ($sellIn < 5) { + return $previousQuality + 3; } + + if ($sellIn < 10) { + return $previousQuality + 2; + } + + return $previousQuality + 1; } }