<?php

namespace App\ClassLib;

class PayrollComputation
{
    public array $workdays_type = [
        '261.0000' => 'No work and not paid on Sat and Sun or RD',
        '313.0000' => 'No work and not paid on Sun or RD',
        '365.0000' => 'No work but paid on RD, Reg. &amp; Special Holidays',
        '392.5000' => 'Has work including RD, Reg. &amp; Special Holidays',
    ];

    public array $basic_salary_computations = [
        'DAILY' => 'Rate Based on Daily Hrs Worked',
        'SEMIMONTHLY' => 'Apply Semi-Monthly Rate',
        'MONTHLY' => 'Apply Monthly Rate'
    ];

    public function __construct()
    {
    }

    public function computeIncomeTax($grossTaxableIncome)
    {
        $tax = 0;
        if($grossTaxableIncome <= 10417)
        {
            $tax = 0;
        }
        else if($grossTaxableIncome <= 16666)
        {
            $tax = ($grossTaxableIncome - 10417) * 0.15;
        }
        else if($grossTaxableIncome <= 33332)
        {
            $tax = (($grossTaxableIncome - 16667) * 0.20) + 937.50;
        }
        else if($grossTaxableIncome <= 83332)
        {
            $tax = (($grossTaxableIncome - 33333) * 0.25) + 4270.70;
        }
        else if($grossTaxableIncome <= 333332)
        {
            $tax = (($grossTaxableIncome - 83333) * 0.30) + 16770.70;
        }
        else
        {
            $tax = (($grossTaxableIncome - 333333) * 0.35) + 91770.70;
        }

        return $tax;
    }

    // rawData should contain is_fixed_amt, is_percent_amt, worked_days_based and amount 
    // $empPayTrans is from EmployeePayTransactionModel();
    public function computeIncomeDeductionByComputationType($rawData, $empPayTrans)
    {
        $amount = 0;
        if($rawData['is_fixed_amt']) $amount = $rawData['amount'];
        else if($rawData['is_percent_amt']) $amount = ($rawData['amount'] / 100) * $empPayTrans->basic_pay;
        else if($rawData['worked_days_based']) $amount = $rawData['amount'] * $empPayTrans->actual_work_days;

        return $amount;
    }
}