revised notification for new approval system

This commit is contained in:
Jagad R R
2025-01-16 16:42:06 +07:00
parent 45dd0a67b6
commit 47eb2950ef
6 changed files with 350 additions and 159 deletions
@@ -167,18 +167,28 @@ class FormEntertainmentPresentationController extends Controller
'status' => 'On Progress', 'status' => 'On Progress',
]); ]);
// Send notification to MIS and Admin Region
$roles = ['Marketing Information System', 'Admin Region'];
$recipients = [];
$phoneNumbers = [];
$name = auth()->user()->name; $name = auth()->user()->name;
$tanggal = $form->tanggal; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Send notification to MIS and Admin Region and Area Manager Cabang
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone];
// Collect all recipients (emails and phone numbers) for the specified roles // Collect all recipients (emails and phone numbers) for the specified roles
foreach ($roles as $role) { foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role); $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
}
// Ensure user has a cabang and matches the current cabang ID
return $user->cabang && $user->cabang->cabang->id === $cabang->id;
});
// Extract emails and phone numbers
foreach ($users as $user) { foreach ($users as $user) {
$recipients[] = $user->email; $recipients[] = $user->email;
$phoneNumbers[] = $user->phone; $phoneNumbers[] = $user->phone;
@@ -187,6 +197,7 @@ class FormEntertainmentPresentationController extends Controller
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
$recipients = array_unique($recipients); $recipients = array_unique($recipients);
$phoneNumbers = array_unique($phoneNumbers);
// Generate URL and send WhatsApp notification // Generate URL and send WhatsApp notification
$url = route('forms.entertainment.view', $form->id); $url = route('forms.entertainment.view', $form->id);
@@ -294,24 +305,33 @@ class FormEntertainmentPresentationController extends Controller
'status' => 'Approved 1', 'status' => 'Approved 1',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Collect all recipients // Collect all recipients
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email']; foreach ($roles as $role) {
$phoneNumbers[] = $heads['cabang_head']['phone']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -353,18 +373,28 @@ class FormEntertainmentPresentationController extends Controller
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Collect all recipients $roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email'];
$phoneNumbers[] = $heads['cabang_head']['phone']; foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -413,24 +443,31 @@ class FormEntertainmentPresentationController extends Controller
'approved_total' => $form->total, 'approved_total' => $form->total,
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->approved_total; $total = $form->approved_total;
// Collect all recipients $roles = ['Head of Sales Marketing', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { foreach ($roles as $role) {
$recipients[] = $heads['cabang_head']['email']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
$phoneNumbers[] = $heads['cabang_head']['phone']; // Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
@@ -205,18 +205,28 @@ class FormMeetingSeminarController extends Controller
'status' => 'On Progress', 'status' => 'On Progress',
]); ]);
// Send notification to MIS and Admin Region
$roles = ['Marketing Information System', 'Admin Region'];
$recipients = [];
$phoneNumbers = [];
$name = auth()->user()->name; $name = auth()->user()->name;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Send notification to MIS and Admin Region and Area Manager Cabang
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone];
// Collect all recipients (emails and phone numbers) for the specified roles // Collect all recipients (emails and phone numbers) for the specified roles
foreach ($roles as $role) { foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role); $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
}
// Ensure user has a cabang and matches the current cabang ID
return $user->cabang && $user->cabang->cabang->id === $cabang->id;
});
// Extract emails and phone numbers
foreach ($users as $user) { foreach ($users as $user) {
$recipients[] = $user->email; $recipients[] = $user->email;
$phoneNumbers[] = $user->phone; $phoneNumbers[] = $user->phone;
@@ -366,24 +376,33 @@ class FormMeetingSeminarController extends Controller
'status' => 'Approved 1', 'status' => 'Approved 1',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Collect all recipients // Collect all recipients
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email']; foreach ($roles as $role) {
$phoneNumbers[] = $heads['cabang_head']['phone']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -419,24 +438,33 @@ class FormMeetingSeminarController extends Controller
'status' => 'Approved 2', 'status' => 'Approved 2',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Collect all recipients $roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email'];
$phoneNumbers[] = $heads['cabang_head']['phone']; foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -494,24 +522,31 @@ class FormMeetingSeminarController extends Controller
'approved_total' => array_sum($approved_data), 'approved_total' => array_sum($approved_data),
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->approved_total; $total = $form->approved_total;
// Collect all recipients $roles = ['Head of Sales Marketing', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { foreach ($roles as $role) {
$recipients[] = $heads['cabang_head']['email']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
$phoneNumbers[] = $heads['cabang_head']['phone']; // Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
@@ -165,18 +165,28 @@ class FormOtherController extends Controller
'status' => 'On Progress', 'status' => 'On Progress',
]); ]);
// Send notification to MIS and Admin Region
$roles = ['Marketing Information System', 'Admin Region'];
$recipients = [];
$phoneNumbers = [];
$name = auth()->user()->name; $name = auth()->user()->name;
$tanggal = $request->tanggal; $tanggal = $request->tanggal;
$total = $request->total; $total = $request->total;
// Send notification to MIS and Admin Region and Area Manager Cabang
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone];
// Collect all recipients (emails and phone numbers) for the specified roles // Collect all recipients (emails and phone numbers) for the specified roles
foreach ($roles as $role) { foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role); $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
}
// Ensure user has a cabang and matches the current cabang ID
return $user->cabang && $user->cabang->cabang->id === $cabang->id;
});
// Extract emails and phone numbers
foreach ($users as $user) { foreach ($users as $user) {
$recipients[] = $user->email; $recipients[] = $user->email;
$phoneNumbers[] = $user->phone; $phoneNumbers[] = $user->phone;
@@ -185,6 +195,7 @@ class FormOtherController extends Controller
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
$recipients = array_unique($recipients); $recipients = array_unique($recipients);
$phoneNumbers = array_unique($phoneNumbers);
// Generate URL and send WhatsApp notification // Generate URL and send WhatsApp notification
$url = route('forms.other.view', $form->id); $url = route('forms.other.view', $form->id);
@@ -294,17 +305,27 @@ class FormOtherController extends Controller
$total = $form->total; $total = $form->total;
// Collect all recipients // Collect all recipients
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email']; foreach ($roles as $role) {
$phoneNumbers[] = $heads['cabang_head']['phone']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -340,24 +361,33 @@ class FormOtherController extends Controller
'status' => 'Approved 2', 'status' => 'Approved 2',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Collect all recipients $roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email'];
$phoneNumbers[] = $heads['cabang_head']['phone']; foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -406,24 +436,31 @@ class FormOtherController extends Controller
'approved_total' => $form->total, 'approved_total' => $form->total,
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->approved_total; $total = $form->approved_total;
// Collect all recipients $roles = ['Head of Sales Marketing', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { foreach ($roles as $role) {
$recipients[] = $heads['cabang_head']['email']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
$phoneNumbers[] = $heads['cabang_head']['phone']; // Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
@@ -236,10 +236,10 @@ class FormUpCountryController extends Controller
'status' => 'On Progress', 'status' => 'On Progress',
]); ]);
// Send notification to MIS and Admin Region // Send notification to MIS and Admin Region and Area Manager Cabang
$roles = ['Marketing Information System', 'Admin Region']; $roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = []; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = []; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
$name = auth()->user()->name; $name = auth()->user()->name;
$tanggal = $form->tanggal; $tanggal = $form->tanggal;
@@ -247,7 +247,17 @@ class FormUpCountryController extends Controller
// Collect all recipients (emails and phone numbers) for the specified roles // Collect all recipients (emails and phone numbers) for the specified roles
foreach ($roles as $role) { foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role); $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
}
// Ensure user has a cabang and matches the current cabang ID
return $user->cabang && $user->cabang->cabang->id === $cabang->id;
});
// Extract emails and phone numbers
foreach ($users as $user) { foreach ($users as $user) {
$recipients[] = $user->email; $recipients[] = $user->email;
$phoneNumbers[] = $user->phone; $phoneNumbers[] = $user->phone;
@@ -256,6 +266,7 @@ class FormUpCountryController extends Controller
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
$recipients = array_unique($recipients); $recipients = array_unique($recipients);
$phoneNumbers = array_unique($phoneNumbers);
// Generate URL and send WhatsApp notification // Generate URL and send WhatsApp notification
$url = route('forms.up-country.view', $form->id); $url = route('forms.up-country.view', $form->id);
@@ -423,24 +434,33 @@ class FormUpCountryController extends Controller
'status' => 'Approved 1', 'status' => 'Approved 1',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->tanggal; $tanggal = $form->tanggal;
$total = $form->total; $total = $form->total;
// Collect all recipients // Collect all recipients
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email']; foreach ($roles as $role) {
$phoneNumbers[] = $heads['cabang_head']['phone']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -476,24 +496,33 @@ class FormUpCountryController extends Controller
'status' => 'Approved 2', 'status' => 'Approved 2',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->tanggal; $tanggal = $form->tanggal;
$total = $form->total; $total = $form->total;
// Collect all recipients $roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email'];
$phoneNumbers[] = $heads['cabang_head']['phone']; foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -553,24 +582,31 @@ class FormUpCountryController extends Controller
'approved_total' => array_sum($approved_data), 'approved_total' => array_sum($approved_data),
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->tanggal; $tanggal = $form->tanggal;
$total = $form->approved_total; $total = $form->approved_total;
// Collect all recipients $roles = ['Head of Sales Marketing', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { foreach ($roles as $role) {
$recipients[] = $heads['cabang_head']['email']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
$phoneNumbers[] = $heads['cabang_head']['phone']; // Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
@@ -169,18 +169,28 @@ class FormVehicleController extends Controller
'status' => 'On Progress', 'status' => 'On Progress',
]); ]);
// Send notification to MIS and Admin Region
$roles = ['Marketing Information System', 'Admin Region'];
$recipients = [];
$phoneNumbers = [];
$name = auth()->user()->name; $name = auth()->user()->name;
$tanggal = $form->tanggal; $tanggal = $form->tanggal;
$total = $form->total; $total = $form->total;
// Send notification to MIS and Admin Region and Area Manager Cabang
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone];
// Collect all recipients (emails and phone numbers) for the specified roles // Collect all recipients (emails and phone numbers) for the specified roles
foreach ($roles as $role) { foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role); $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
}
// Ensure user has a cabang and matches the current cabang ID
return $user->cabang && $user->cabang->cabang->id === $cabang->id;
});
// Extract emails and phone numbers
foreach ($users as $user) { foreach ($users as $user) {
$recipients[] = $user->email; $recipients[] = $user->email;
$phoneNumbers[] = $user->phone; $phoneNumbers[] = $user->phone;
@@ -189,6 +199,7 @@ class FormVehicleController extends Controller
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
$recipients = array_unique($recipients); $recipients = array_unique($recipients);
$phoneNumbers = array_unique($phoneNumbers);
// Generate URL and send WhatsApp notification // Generate URL and send WhatsApp notification
$url = route('forms.vehicle.view', $form->id); $url = route('forms.vehicle.view', $form->id);
@@ -297,24 +308,33 @@ class FormVehicleController extends Controller
'status' => 'Approved 1', 'status' => 'Approved 1',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Collect all recipients // Collect all recipients
$roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email']; foreach ($roles as $role) {
$phoneNumbers[] = $heads['cabang_head']['phone']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -350,24 +370,33 @@ class FormVehicleController extends Controller
'status' => 'Approved 2', 'status' => 'Approved 2',
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->total; $total = $form->total;
// Collect all recipients $roles = ['Marketing Information System', 'Admin Region', 'Area Manager Cabang', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
$recipients[] = $heads['cabang_head']['email'];
$phoneNumbers[] = $heads['cabang_head']['phone']; foreach ($roles as $role) {
$users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
// Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate data, if any // Remove duplicate data, if any
@@ -416,24 +445,31 @@ class FormVehicleController extends Controller
'approved_total' => $form->total, 'approved_total' => $form->total,
]); ]);
$heads = $form->user->getCabangAndRegionHead();
$name = $form->user->name; $name = $form->user->name;
$expense_number = $form->expense_number; $expense_number = $form->expense_number;
$tanggal = $form->created_at; $tanggal = $form->created_at;
$total = $form->approved_total; $total = $form->approved_total;
// Collect all recipients $roles = ['Head of Sales Marketing', 'Marketing Operational Manager Region'];
$recipients = [$form->user->email, auth()->user()->email]; $recipients = [$form->user->email, auth()->user()->email];
$phoneNumbers = [$form->user->phone, auth()->user()->phone]; $phoneNumbers = [$form->user->phone, auth()->user()->phone];
if ($heads['cabang_head']) { foreach ($roles as $role) {
$recipients[] = $heads['cabang_head']['email']; $users = Admin::getUserByRoleName($role)->filter(function ($user) use ($role, $cabang_id) {
$phoneNumbers[] = $heads['cabang_head']['phone']; // Include 'Marketing Information System' without cabang filtering
if ($role === 'Marketing Information System') {
return true;
} }
if ($heads['region_head']) { // Ensure user has a cabang and matches the current cabang ID
$recipients[] = $heads['region_head']['email']; return $user->cabang && $user->cabang->cabang->id === $cabang_id;
$phoneNumbers[] = $heads['region_head']['phone']; });
// Extract emails and phone numbers
foreach ($users as $user) {
$recipients[] = $user->email;
$phoneNumbers[] = $user->phone;
}
} }
// Remove duplicate email addresses, if any // Remove duplicate email addresses, if any
+11 -1
View File
@@ -9,6 +9,7 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Spatie\Permission\Traits\HasRoles; use Spatie\Permission\Traits\HasRoles;
use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Role;
use App\Models\UserHasCabang;
class Admin extends Authenticatable class Admin extends Authenticatable
{ {
@@ -167,12 +168,21 @@ class Admin extends Authenticatable
$role = Role::where('name', $roleName)->first(); $role = Role::where('name', $roleName)->first();
if ($role) { if ($role) {
return $role->users()->with('cabang')->get(); return $role->users()->with('cabang.cabang')->get();
} }
return []; return [];
} }
public static function getUserByRoleNameAndCabang($roleName, $cabang_id)
{
$users = self::getUserByRoleName($roleName);
return $users->filter(function ($user) use ($cabang_id) {
return $user->cabang ? $user->cabang->id == $cabang_id : false;
});
}
public static function getUserWhereRoleIsNot($roleName) public static function getUserWhereRoleIsNot($roleName)
{ {
return self::whereDoesntHave('roles', function ($query) use ($roleName) { return self::whereDoesntHave('roles', function ($query) use ($roleName) {