public bool CalculateIncomeTax(IncomeTaxDto incomeTaxDto) { var isSuccessful = false; try { if (string.IsNullOrEmpty(incomeTaxDto.PostalCode)) { return(isSuccessful); } if (incomeTaxDto.Income <= 0) { return(isSuccessful); } if (incomeTaxDto.PostalCode == "7441" || incomeTaxDto.PostalCode == "1000") { //Calculated Income Tax amount var progressiveTaxLexel = ProgressiveTaxLevel(incomeTaxDto.Income); var incomeTax = new ProgressiveIncomeTax(incomeTaxDto.PostalCode, incomeTaxDto.Income); incomeTax.CalculateProgressiveIncomeTax(progressiveTaxLexel); //Save IncomeTax var result = _incomeTaxRepository.CreateIncomeTax(incomeTax); isSuccessful = result != null; return(isSuccessful); } if (incomeTaxDto.PostalCode == "A100") { var incomeTax = new FlatRateIncomeTax(incomeTaxDto.PostalCode, incomeTaxDto.Income); incomeTax.CalculateFlatRateIncomeTax(); var result = _incomeTaxRepository.CreateIncomeTax(incomeTax); isSuccessful = result != null; } if (incomeTaxDto.PostalCode == "7000") { var incomeTax = new FlatValueIncomeTax(incomeTaxDto.PostalCode, incomeTaxDto.Income); incomeTax.CalculateFlatValueIncomeTax(); var result = _incomeTaxRepository.CreateIncomeTax(incomeTax); isSuccessful = result != null; } return(isSuccessful); } catch (Exception ex) { return(isSuccessful); } }
public void Calculate_ProgressiveTax_Level6_Success() { //Arrange var taxCalculated = new ProgressiveIncomeTax(postalCode: "7441", income: 400000); var progressiveTaxTotal = ProgressiveTaxLevelEnum.Level6; //Act var result = taxCalculated.CalculateProgressiveIncomeTax(progressiveTaxTotal); //Assert Assert.IsTrue(Math.Round(result, 2) == 117682.14); }
public void Calculate_ProgressiveTax_Level5_Success() { //Arrange var taxCalculated = new ProgressiveIncomeTax(postalCode: "7441", income: 200000); var progressiveTaxTotal = ProgressiveTaxLevelEnum.Level5; //Act var result = taxCalculated.CalculateProgressiveIncomeTax(progressiveTaxTotal); //Assert Assert.IsTrue(result == 51141.49); }