/** * @param int * @param string * @return double */ public static function calculateStaffDiscount($student_id, $fee_schedule_code) { //initialise discount to zero $discount = 0; //get stuednt info $student = Student::find($student_id); //get the staff discount value for this fee schedule $staff_discount = self::getStaffDiscountAmount($fee_schedule_code); //get details of staff discount policy $discount_policy = DiscountPolicy::where('discount_name', 'Parent')->first(); //get all wards with same staff $same_staff = Student::select('id')->where('staff_id', $student->staff_id)->get(); //divide staff discount accross all wards that have thesame staff if ($discount_policy->all_wards == 1) { $discount += $staff_discount / count($same_staff); return $discount; } //dont divide staff discount accross all wards that have thesame staff if ($discount_policy->dont_divide == 1) { $discount += $staff_discount; return $discount; } if ($discount_policy->all_wards == 0) { $student_ids = []; foreach ($same_staff as $stud) { $student_ids[] = $stud->id; } sort($student_ids); foreach ($student_ids as $key => $student_id) { if ($key == $discount_policy->ward_to_deduct - 1) { $ward_to_deduct = $student_id; } } if ($ward_to_deduct == $student->id) { $discount += $staff_discount; } return $discount; } }