diff --git a/react-typescript/src/App.tsx b/react-typescript/src/App.tsx
index 339ed6cd..6cdb3476 100644
--- a/react-typescript/src/App.tsx
+++ b/react-typescript/src/App.tsx
@@ -4,12 +4,12 @@ import Item from './Item';
function App() {
return (
-
+
-
+
-
+
);
}
diff --git a/react-typescript/src/Item.tsx b/react-typescript/src/Item.tsx
index e3552b75..2ea7b70e 100644
--- a/react-typescript/src/Item.tsx
+++ b/react-typescript/src/Item.tsx
@@ -1,22 +1,60 @@
import { useEffect, useState } from "react";
-function calculateQuality(quality: number, isConjured: boolean): number {
- const calculatedQuality = quality;
- const calculatedBias = isConjured ? 2 : 1;
+function calculateQuality(name:string, quality: number, sellIn: number,isConjured: boolean): number {
+ const sellInAmount = sellIn;
- if(calculatedQuality > 50) {
+ let calculatedQuality = quality;
+ let degradeRate = 1;
+ let qualityIdentifier = 1;
+
+ if(sellInAmount <= 0) {
+ return calculatedQuality;
+ }
+
+ if(name.includes("Sulfuras")) {
+ return 80;
+ };
+
+ if(calculatedQuality >= 50) {
return 50;
- } else if(calculatedQuality < 0) {
+ } else if(calculatedQuality <= 0) {
return 0;
}
-
+ if(isConjured) {
+ degradeRate = 2;
+ }
- return calculatedQuality * calculatedBias;
+ if(name.includes('Aged Brie')) {
+ qualityIdentifier = -1;
+ }
+
+ if(name.includes('Backstage passes')) {
+ if(sellInAmount <= 10 && sellInAmount > 5) {
+ qualityIdentifier = -3;
+ } else if(sellInAmount <= 5 && sellInAmount > 0) {
+ qualityIdentifier = -2;
+ } else if(sellInAmount <= 0) {
+ qualityIdentifier = 0;
+ degradeRate = 0;
+ }
+ }
+
+ return degradeRate * calculatedQuality - qualityIdentifier;
};
-function calculateSellIn(sellIn: number): number {
- return sellIn - 1;
+function calculateSellIn(name:string, sellIn: number): number {
+ let sellInAmount = sellIn;
+
+ if(name.includes("Sulfuras")) {
+ return sellInAmount;
+ };
+
+ if(sellInAmount <= 0) {
+ return 0;
+ }
+
+ return sellIn - 1;
};
type ItemProps = {
@@ -49,17 +87,17 @@ const Item = (props: ItemProps) => {
return (
-
The name {name}
+
{name}
-
The quality {quality}
+
{quality}
-
The sellIn {sellIn}
+
{sellIn}