From 8c090978fd94532bc736f4786ed287b14aad4551 Mon Sep 17 00:00:00 2001 From: sirlolcat Date: Fri, 3 Jun 2022 05:01:28 +0430 Subject: [PATCH] feat: add calculation methods --- react-typescript/src/App.tsx | 6 ++-- react-typescript/src/Item.tsx | 68 +++++++++++++++++++++++++++-------- 2 files changed, 56 insertions(+), 18 deletions(-) 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}