From 7e774215b8a126bd4f8bd3da4232d9699b34ec23 Mon Sep 17 00:00:00 2001 From: Harshit Raj Date: Tue, 14 Apr 2026 18:58:01 +0530 Subject: [PATCH] feat-tax-logic --- Calculator.xcodeproj/project.pbxproj | 6 ------ .../UserInterfaceState.xcuserstate | Bin 0 -> 18040 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++++++++++ Calculator/ContentView.swift | 18 ++++++++++++++---- Calculator/TaxLogic.swift | 7 ++++--- 5 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 Calculator.xcodeproj/project.xcworkspace/xcuserdata/harshitraj.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Calculator.xcodeproj/xcuserdata/harshitraj.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Calculator.xcodeproj/project.pbxproj b/Calculator.xcodeproj/project.pbxproj index eedaf77..38f83b7 100644 --- a/Calculator.xcodeproj/project.pbxproj +++ b/Calculator.xcodeproj/project.pbxproj @@ -32,9 +32,6 @@ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ 7FB724422F8C2C38005B3C2D /* Exceptions for "Calculator" folder in "Calculator" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - TaxLogic.swift, - ); target = 7FB722212F8ACDE7005B3C2D /* Calculator */; }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -43,9 +40,6 @@ 7FB724432F8C2C38005B3C2D /* Exceptions for "Calculator" folder in "Copy Bundle Resources" phase from "Calculator" target */ = { isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; buildPhase = 7FB722202F8ACDE7005B3C2D /* Resources */; - membershipExceptions = ( - TaxLogic.swift, - ); }; /* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ diff --git a/Calculator.xcodeproj/project.xcworkspace/xcuserdata/harshitraj.xcuserdatad/UserInterfaceState.xcuserstate b/Calculator.xcodeproj/project.xcworkspace/xcuserdata/harshitraj.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3a9644725d29a802b0df665099f249d886e1e78c GIT binary patch literal 18040 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 literal 0 HcmV?d00001 diff --git a/Calculator.xcodeproj/xcuserdata/harshitraj.xcuserdatad/xcschemes/xcschememanagement.plist b/Calculator.xcodeproj/xcuserdata/harshitraj.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..8d9f15f --- /dev/null +++ b/Calculator.xcodeproj/xcuserdata/harshitraj.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Calculator.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Calculator/ContentView.swift b/Calculator/ContentView.swift index f841a76..12091d2 100644 --- a/Calculator/ContentView.swift +++ b/Calculator/ContentView.swift @@ -6,11 +6,14 @@ // import SwiftUI +import Foundation struct ContentView: View { @State private var income = "" @State private var taxRate = "" - + @State private var taxAmount: Double = 0 + @State private var netIncome: Double = 0 + var body: some View { VStack(alignment: .leading, spacing: 0) { Text("Tax Calculator") @@ -48,7 +51,14 @@ struct ContentView: View { .shadow(color: .black.opacity(0.08), radius: 3, x: 0, y: 1) .padding(.bottom, 40) - Button("Calculate Tax") {} + Button("Calculate Tax") { + let incomeValue = Double(income) ?? 0 + let taxRateValue = Double(taxRate) ?? 0 + let result = calculateTax(income: incomeValue, taxRate: taxRateValue) + + taxAmount = result.taxAmount + netIncome = result.netIncome + } .frame(maxWidth: .infinity) .frame(height: 55) .background(Color(hex: "0A7CFF")) @@ -62,11 +72,11 @@ struct ContentView: View { .font(.system(size: 18, weight: .bold)) .foregroundColor(Color(hex: "1C1E21")) - Text("Tax Amount: ₹ 0.00") + Text("Tax Amount: ₹\(taxAmount, specifier: "%.2f")") .font(.system(size: 16)) .foregroundColor(Color(hex: "D93025")) - Text("Final Income: ₹ 0.00") + Text("Final Income: ₹\(netIncome, specifier: "%.2f")") .font(.system(size: 18, weight: .bold)) .foregroundColor(Color(hex: "1E8E3E")) } diff --git a/Calculator/TaxLogic.swift b/Calculator/TaxLogic.swift index d4c4bb8..edee081 100644 --- a/Calculator/TaxLogic.swift +++ b/Calculator/TaxLogic.swift @@ -13,6 +13,7 @@ /// - Returns: A tuple with the calculated `taxAmount` and the resulting `netIncome`. import Foundation func calculateTax(income: Double, taxRate: Double) -> (taxAmount: Double, netIncome: Double) { - - return (0, 0) -} \ No newline at end of file + let taxAmount = income * (taxRate / 100) + let netIncome = income - taxAmount + return (taxAmount, netIncome) +}