Commit c4b271c6 authored by Mahmoud Aglan's avatar Mahmoud Aglan

xfgjcfg

parent e7dd5f21
...@@ -23,17 +23,18 @@ final class RetroactiveMembershipService ...@@ -23,17 +23,18 @@ final class RetroactiveMembershipService
$joinDate = $data['join_date'] ?? date('Y-m-d'); $joinDate = $data['join_date'] ?? date('Y-m-d');
$formDate = $data['form_date'] ?? $joinDate; $formDate = $data['form_date'] ?? $joinDate;
$nationalId = self::emptyToNull($data['national_id'] ?? null);
$memberData = [ $memberData = [
'full_name_ar' => $data['full_name_ar'], 'full_name_ar' => $data['full_name_ar'],
'full_name_en' => $data['full_name_en'] ?? null, 'full_name_en' => self::emptyToNull($data['full_name_en'] ?? null),
'national_id' => $data['national_id'] ?? null, 'national_id' => $nationalId,
'passport_number' => $data['passport_number'] ?? null, 'passport_number' => self::emptyToNull($data['passport_number'] ?? null),
'id_type' => $data['national_id'] ? 'national_id' : 'passport', 'id_type' => $nationalId ? 'national_id' : 'passport',
'date_of_birth' => $data['date_of_birth'] ?? null, 'date_of_birth' => self::emptyToNull($data['date_of_birth'] ?? null),
'gender' => $data['gender'] ?? 'male', 'gender' => $data['gender'] ?? 'male',
'phone_mobile' => $data['phone_mobile'] ?? null, 'phone_mobile' => self::emptyToNull($data['phone_mobile'] ?? null),
'phone_home' => $data['phone_home'] ?? null, 'phone_home' => self::emptyToNull($data['phone_home'] ?? null),
'email' => $data['email'] ?? null, 'email' => self::emptyToNull($data['email'] ?? null),
'branch_id' => (int) ($data['branch_id'] ?? 1), 'branch_id' => (int) ($data['branch_id'] ?? 1),
'membership_type' => $data['membership_type'] ?? 'working', 'membership_type' => $data['membership_type'] ?? 'working',
'member_category' => $data['member_category'] ?? 'working_member', 'member_category' => $data['member_category'] ?? 'working_member',
...@@ -42,11 +43,11 @@ final class RetroactiveMembershipService ...@@ -42,11 +43,11 @@ final class RetroactiveMembershipService
'form_date' => $formDate, 'form_date' => $formDate,
'status' => 'active', 'status' => 'active',
'membership_value' => $data['membership_value'] ?? '0.00', 'membership_value' => $data['membership_value'] ?? '0.00',
'qualification_id' => isset($data['qualification_id']) ? (int) $data['qualification_id'] : null, 'qualification_id' => isset($data['qualification_id']) && $data['qualification_id'] ? (int) $data['qualification_id'] : null,
'occupation' => $data['occupation'] ?? null, 'occupation' => self::emptyToNull($data['occupation'] ?? null),
'residence_address' => $data['residence_address'] ?? null, 'residence_address' => self::emptyToNull($data['residence_address'] ?? null),
'area' => $data['area'] ?? null, 'area' => self::emptyToNull($data['area'] ?? null),
'governorate' => $data['governorate'] ?? null, 'governorate' => self::emptyToNull($data['governorate'] ?? null),
'payment_method' => $data['payment_method'] ?? 'cash', 'payment_method' => $data['payment_method'] ?? 'cash',
'discount_amount' => $data['discount_amount'] ?? '0.00', 'discount_amount' => $data['discount_amount'] ?? '0.00',
]; ];
...@@ -152,19 +153,20 @@ final class RetroactiveMembershipService ...@@ -152,19 +153,20 @@ final class RetroactiveMembershipService
// Step 4: Create dependents // Step 4: Create dependents
if (!empty($data['spouses'])) { if (!empty($data['spouses'])) {
foreach ($data['spouses'] as $spouse) { foreach ($data['spouses'] as $spouse) {
$spouseJoinDate = self::emptyToNull($spouse['join_date'] ?? null) ?? $joinDate;
$spouseId = $db->insert('spouses', [ $spouseId = $db->insert('spouses', [
'member_id' => $memberId, 'member_id' => $memberId,
'full_name_ar' => $spouse['full_name_ar'], 'full_name_ar' => $spouse['full_name_ar'],
'national_id' => $spouse['national_id'] ?? null, 'national_id' => self::emptyToNull($spouse['national_id'] ?? null),
'date_of_birth' => $spouse['date_of_birth'] ?? null, 'date_of_birth' => self::emptyToNull($spouse['date_of_birth'] ?? null),
'marriage_date' => $spouse['marriage_date'] ?? $joinDate, 'marriage_date' => self::emptyToNull($spouse['marriage_date'] ?? null) ?? $joinDate,
'phone_mobile' => $spouse['phone_mobile'] ?? null, 'phone_mobile' => self::emptyToNull($spouse['phone_mobile'] ?? null),
'status' => 'active', 'status' => 'active',
'join_date' => $spouse['join_date'] ?? $joinDate, 'join_date' => $spouseJoinDate,
'addition_fee' => $spouse['addition_fee'] ?? '0.00', 'addition_fee' => $spouse['addition_fee'] ?? '0.00',
'activated_by_payment_id' => $membershipPaymentId, 'activated_by_payment_id' => $membershipPaymentId,
'is_archived' => 0, 'is_archived' => 0,
'created_at' => ($spouse['join_date'] ?? $joinDate) . ' 09:00:00', 'created_at' => $spouseJoinDate . ' 09:00:00',
'updated_at' => $ts, 'updated_at' => $ts,
]); ]);
...@@ -187,18 +189,19 @@ final class RetroactiveMembershipService ...@@ -187,18 +189,19 @@ final class RetroactiveMembershipService
if (!empty($data['children'])) { if (!empty($data['children'])) {
foreach ($data['children'] as $child) { foreach ($data['children'] as $child) {
$childJoinDate = self::emptyToNull($child['join_date'] ?? null) ?? $joinDate;
$childId = $db->insert('children', [ $childId = $db->insert('children', [
'member_id' => $memberId, 'member_id' => $memberId,
'full_name_ar' => $child['full_name_ar'], 'full_name_ar' => $child['full_name_ar'],
'national_id' => $child['national_id'] ?? null, 'national_id' => self::emptyToNull($child['national_id'] ?? null),
'date_of_birth' => $child['date_of_birth'] ?? null, 'date_of_birth' => self::emptyToNull($child['date_of_birth'] ?? null),
'gender' => $child['gender'] ?? 'male', 'gender' => $child['gender'] ?? 'male',
'status' => 'active', 'status' => 'active',
'join_date' => $child['join_date'] ?? $joinDate, 'join_date' => $childJoinDate,
'addition_fee' => $child['addition_fee'] ?? '0.00', 'addition_fee' => $child['addition_fee'] ?? '0.00',
'activated_by_payment_id' => $membershipPaymentId, 'activated_by_payment_id' => $membershipPaymentId,
'is_archived' => 0, 'is_archived' => 0,
'created_at' => ($child['join_date'] ?? $joinDate) . ' 09:00:00', 'created_at' => $childJoinDate . ' 09:00:00',
'updated_at' => $ts, 'updated_at' => $ts,
]); ]);
...@@ -256,12 +259,17 @@ final class RetroactiveMembershipService ...@@ -256,12 +259,17 @@ final class RetroactiveMembershipService
} }
} }
private static function emptyToNull(?string $value): ?string
{
return ($value !== null && trim($value) !== '') ? trim($value) : null;
}
private static function createRetroactivePayment(int $memberId, array $data): int private static function createRetroactivePayment(int $memberId, array $data): int
{ {
$db = App::getInstance()->db(); $db = App::getInstance()->db();
$employee = App::getInstance()->currentEmployee(); $employee = App::getInstance()->currentEmployee();
$empId = $employee ? (int) $employee->id : null; $empId = $employee ? (int) $employee->id : null;
$paymentDate = $data['payment_date'] ?? date('Y-m-d'); $paymentDate = self::emptyToNull($data['payment_date'] ?? null) ?? date('Y-m-d');
$receiptNumber = self::generateRetroReceiptNumber($paymentDate); $receiptNumber = self::generateRetroReceiptNumber($paymentDate);
...@@ -271,14 +279,14 @@ final class RetroactiveMembershipService ...@@ -271,14 +279,14 @@ final class RetroactiveMembershipService
'amount' => $data['amount'], 'amount' => $data['amount'],
'currency' => 'EGP', 'currency' => 'EGP',
'payment_method' => $data['payment_method'] ?? 'cash', 'payment_method' => $data['payment_method'] ?? 'cash',
'check_number' => $data['check_number'] ?? null, 'check_number' => self::emptyToNull($data['check_number'] ?? null),
'check_bank' => $data['check_bank'] ?? null, 'check_bank' => self::emptyToNull($data['check_bank'] ?? null),
'check_date' => $data['check_date'] ?? null, 'check_date' => self::emptyToNull($data['check_date'] ?? null),
'check_status' => ($data['payment_method'] ?? 'cash') === 'check' ? 'cleared' : null, 'check_status' => ($data['payment_method'] ?? 'cash') === 'check' ? 'cleared' : null,
'visa_reference' => $data['visa_reference'] ?? null, 'visa_reference' => self::emptyToNull($data['visa_reference'] ?? null),
'transfer_reference' => $data['transfer_reference'] ?? null, 'transfer_reference' => self::emptyToNull($data['transfer_reference'] ?? null),
'transfer_bank' => $data['transfer_bank'] ?? null, 'transfer_bank' => self::emptyToNull($data['transfer_bank'] ?? null),
'related_entity_type' => $data['related_entity_type'] ?? null, 'related_entity_type' => self::emptyToNull($data['related_entity_type'] ?? null),
'related_entity_id' => $data['related_entity_id'] ?? null, 'related_entity_id' => $data['related_entity_id'] ?? null,
'notes' => ($data['description'] ?? '') . ' [RETROACTIVE]', 'notes' => ($data['description'] ?? '') . ' [RETROACTIVE]',
'payment_date' => $paymentDate, 'payment_date' => $paymentDate,
...@@ -486,7 +494,7 @@ final class RetroactiveMembershipService ...@@ -486,7 +494,7 @@ final class RetroactiveMembershipService
'fine_amount' => $sub['fine_amount'] ?? '0.00', 'fine_amount' => $sub['fine_amount'] ?? '0.00',
'status' => $status, 'status' => $status,
'payment_id' => $paymentId, 'payment_id' => $paymentId,
'paid_at' => ($status === 'paid') ? ($sub['paid_date'] ?? date('Y-m-d H:i:s')) : null, 'paid_at' => ($status === 'paid') ? (self::emptyToNull($sub['paid_date'] ?? null) ?? date('Y-m-d H:i:s')) : null,
'created_at' => ($sub['financial_year'] ?? date('Y')) . '-01-01 09:00:00', 'created_at' => ($sub['financial_year'] ?? date('Y')) . '-01-01 09:00:00',
'updated_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'),
'created_by' => $empId, 'created_by' => $empId,
...@@ -501,14 +509,15 @@ final class RetroactiveMembershipService ...@@ -501,14 +509,15 @@ final class RetroactiveMembershipService
$employee = App::getInstance()->currentEmployee(); $employee = App::getInstance()->currentEmployee();
$empId = $employee ? (int) $employee->id : null; $empId = $employee ? (int) $employee->id : null;
$violationDate = self::emptyToNull($violation['violation_date'] ?? null) ?? date('Y-m-d');
$violationId = $db->insert('violations', [ $violationId = $db->insert('violations', [
'member_id' => $memberId, 'member_id' => $memberId,
'violation_date' => $violation['violation_date'] ?? date('Y-m-d'), 'violation_date' => $violationDate,
'description' => $violation['description'] ?? 'مخالفة مسجلة بأثر رجعي', 'description' => $violation['description'] ?? 'مخالفة مسجلة بأثر رجعي',
'reported_by' => $empId, 'reported_by' => $empId,
'evidence_notes' => $violation['evidence_notes'] ?? null, 'evidence_notes' => self::emptyToNull($violation['evidence_notes'] ?? null),
'status' => 'confirmed', 'status' => 'confirmed',
'created_at' => ($violation['violation_date'] ?? date('Y-m-d')) . ' 09:00:00', 'created_at' => $violationDate . ' 09:00:00',
'updated_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'),
]); ]);
...@@ -531,13 +540,13 @@ final class RetroactiveMembershipService ...@@ -531,13 +540,13 @@ final class RetroactiveMembershipService
'fine_type' => 'violation_fine', 'fine_type' => 'violation_fine',
'amount' => $violation['fine_amount'] ?? '0.00', 'amount' => $violation['fine_amount'] ?? '0.00',
'penalty_type' => $violation['penalty_type'] ?? 'fine', 'penalty_type' => $violation['penalty_type'] ?? 'fine',
'suspension_from'=> $violation['suspension_from'] ?? null, 'suspension_from'=> self::emptyToNull($violation['suspension_from'] ?? null),
'suspension_to' => $violation['suspension_to'] ?? null, 'suspension_to' => self::emptyToNull($violation['suspension_to'] ?? null),
'status' => $fineStatus, 'status' => $fineStatus,
'paid_amount' => $fineStatus === 'paid' ? ($violation['fine_amount'] ?? '0.00') : '0.00', 'paid_amount' => $fineStatus === 'paid' ? ($violation['fine_amount'] ?? '0.00') : '0.00',
'payment_id' => $finePaymentId, 'payment_id' => $finePaymentId,
'paid_at' => $fineStatus === 'paid' ? ($violation['fine_paid_date'] ?? date('Y-m-d H:i:s')) : null, 'paid_at' => $fineStatus === 'paid' ? (self::emptyToNull($violation['fine_paid_date'] ?? null) ?? date('Y-m-d H:i:s')) : null,
'created_at' => ($violation['violation_date'] ?? date('Y-m-d')) . ' 09:00:00', 'created_at' => $violationDate . ' 09:00:00',
'updated_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'),
]); ]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment