diff --git a/app/Http/Controllers/Admin/ManageNotificationsController.php b/app/Http/Controllers/Admin/ManageNotificationsController.php index c470b3a..a6d1046 100644 --- a/app/Http/Controllers/Admin/ManageNotificationsController.php +++ b/app/Http/Controllers/Admin/ManageNotificationsController.php @@ -81,99 +81,174 @@ class ManageNotificationsController extends Controller * Created at : 10 June 2024 * Use : To add notification . */ - public function store_notificaton_data(Request $request) - { - try { - $request->validate([ - 'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', - ]); + public function store_notificaton_data(Request $request) + { + try { + $request->validate([ + 'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', + ]); - DB::beginTransaction(); + DB::beginTransaction(); - if (isset($request->image)) { - $image = $request->image; - $image_db = null; - } else { - $image = null; - $image_db = $request->image; - } + if (isset($request->image)) { + $image = $request->image; + $image_db = null; + } else { + $image = null; + $image_db = $request->image; + } - $tnormalImage = saveSingleImageWithoutCrop($image, 'notification_images', $image_db); - $imagePath = ListingImageUrl('notification_images', $tnormalImage); + $tnormalImage = saveSingleImageWithoutCrop($image, 'notification_images', $image_db); + $imagePath = ListingImageUrl('notification_images', $tnormalImage); - $states = $request->states; + $states = $request->states; - // $dateTime = now(); - // $formattedDateTime = $dateTime->format('Y-m-d H:i:s'); - // $unsubscribe = Subscriptions::select('iam_principal_xid')->where('next_payment_date', '>=', $formattedDateTime)->get(); + $dateTime = now(); + $formattedDateTime = $dateTime->format('Y-m-d H:i:s'); + $iamPrincipals = Subscriptions::select('iam_principal_xid') + ->where('next_payment_date', '>=', $formattedDateTime) + ->get(); - $userQuery = IamPrincipal::where('is_active', 1) - ->where('notification_status', 1) - ->where('principal_type_xid', 3) - ->whereIn('state_xid', $states); + $iamPrincipalIds = $iamPrincipals->pluck('iam_principal_xid'); - if ($request->user_type == 1) { - $allCustomerOneSignalIds = $userQuery->pluck('id'); - $UserData = IamPrincipal::whereIn('id', $allCustomerOneSignalIds)->get(); + $subscribe = IamPrincipal::whereIn('id', $iamPrincipalIds) + ->where('is_active', 1) + ->where('notification_status', 1) + ->where('principal_type_xid', 3) + ->whereIn('state_xid', $states) + ->get(); - foreach ($UserData as $customerIdItem) { - if ($customerIdItem->one_signal_player_id) { - onesignalhelper::sendNotificationApi( - $customerIdItem->one_signal_player_id, - $request->title, - $request->description, - 'Dashboard Notification', - $imagePath, - $id = null - ); + if ($request->user_type == 1) { + $allCustomerOneSignalIds = $subscribe->pluck('id'); + $UserData = IamPrincipal::whereIn('id', $allCustomerOneSignalIds)->get(); + + foreach ($UserData as $customerIdItem) { + // user_type 1 = subscribed user + if ($request->schedule_radio1 == 1 && $request->schedule_date) { + // Scheduled Notification + NotificationDetails::create([ + 'principal_xid' => $customerIdItem->id, + 'description' => $request->description, + 'type' => 'Dashboard Notification', + 'image' => $imagePath, + 'date_added' => $request->schedule_date, + 'is_schedule' => 1, + 'delivery_schedule' => $request->schedule_date, + + ]); + } else { + // Immediate Notification + if ($customerIdItem->one_signal_player_id) { + onesignalhelper::sendNotificationApi( + $customerIdItem->one_signal_player_id, + $request->title, + $request->description, + 'Dashboard Notification', + $imagePath, + $id = null + ); + } + onesignalhelper::StoreNotificationDetails($customerIdItem->id, 'Notification', $request->title, $imagePath); + } + } + } elseif ($request->user_type == 2) { + //user_type 2 unsubscribed users + $allPrincipalIds = IamPrincipal::where('principal_type_xid', 3) + ->pluck('id'); + + $subscribedIds = Subscriptions::select('iam_principal_xid') + ->where('next_payment_date', '>=', $formattedDateTime) + ->pluck('iam_principal_xid'); + + $unsubscribedIds = $allPrincipalIds->diff($subscribedIds); + + $unsubscribedPrincipals = IamPrincipal::whereIn('id', $unsubscribedIds) + ->where('is_active', 1) + ->where('notification_status', 1) + ->whereIn('state_xid', $states) + ->get(); + + $allRestaurantOneSignalIds = $unsubscribedPrincipals->pluck('id'); + $restaurantData = IamPrincipal::whereIn('id', $allRestaurantOneSignalIds)->get(); + + foreach ($restaurantData as $restaurantsData) { + if ($request->schedule_radio1 == 1 && $request->schedule_date) { + // Scheduled Notification + NotificationDetails::create([ + 'principal_xid' => $restaurantsData->id, + 'description' => $request->description, + 'type' => 'Dashboard Notification', + 'image' => $imagePath, + 'date_added' => $request->schedule_date, + 'is_schedule' => 1, + 'delivery_schedule' => $request->schedule_date, + + ]); + } else { + // Immediate Notification + if ($restaurantsData->one_signal_player_id) { + onesignalhelper::sendNotificationApi( + $restaurantsData->one_signal_player_id, + $request->title, + $request->description, + 'Dashboard Notification', + $imagePath, + $id = null + ); + } + onesignalhelper::StoreNotificationDetails($restaurantsData->id, 'Notification', $request->title, $imagePath); } - onesignalhelper::StoreNotificationDetails($customerIdItem->id, 'Notification', $request->title, $imagePath); } - } elseif ($request->user_type == 2) { - $allRestaurantOneSignalIds = $userQuery->pluck('id'); - $restaurantData = IamPrincipal::whereIn('id', $allRestaurantOneSignalIds)->get(); + } elseif ($request->user_type == 3) { + // user_type 3 = subscribed and unsubscribed users + $userQuery = IamPrincipal::where('is_active', 1) + ->where('notification_status', 1) + ->where('principal_type_xid', 3) + ->whereIn('state_xid', $states); - foreach ($restaurantData as $restIdItem) { - if ($restIdItem->one_signal_player_id) { - onesignalhelper::sendNotificationApi( - $restIdItem->one_signal_player_id, - $request->title, - $request->description, - 'Dashboard Notification', - $imagePath, - $id = null - ); - } - onesignalhelper::StoreNotificationDetails($restIdItem->id, 'Notification', $request->title, $imagePath); - } - } elseif ($request->user_type == 3) { - $allUserOneSignalIds = $userQuery->pluck('id'); - $UserData = IamPrincipal::whereIn('id', $allUserOneSignalIds)->get(); + $allUserOneSignalIds = $userQuery->pluck('id'); + $UserData = IamPrincipal::whereIn('id', $allUserOneSignalIds)->get(); - foreach ($UserData as $userItem) { - if ($userItem->one_signal_player_id) { - onesignalhelper::sendNotificationApi( - $userItem->one_signal_player_id, - $request->title, - $request->description, - 'Dashboard Notification', - $imagePath, - $id = null - ); + foreach ($UserData as $CustomerData) { + if ($request->schedule_radio1 == 1 && $request->schedule_date) { + // Scheduled Notification + NotificationDetails::create([ + 'principal_xid' => $CustomerData->id, + 'description' => $request->description, + 'type' => 'Dashboard Notification', + 'image' => $imagePath, + 'date_added' => $request->schedule_date, + 'is_schedule' => 1, + 'delivery_schedule' => $request->schedule_date, + + ]); + } else { + // Immediate Notification + if ($CustomerData->one_signal_player_id) { + onesignalhelper::sendNotificationApi( + $CustomerData->one_signal_player_id, + $request->title, + $request->description, + 'Dashboard Notification', + $imagePath, + $id = null + ); + } + onesignalhelper::StoreNotificationDetails($CustomerData->id, 'Notification', $request->title, $imagePath); } - onesignalhelper::StoreNotificationDetails($userItem->id, 'Notification', $request->title, $imagePath); } } - DB::commit(); - return jsonResponseWithSuccessMessage(__('success.save_data')); - } catch (Exception $e) { - DB::rollBack(); - Log::error("Notification send Failed " . $e->getMessage()); - return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); - } - } + DB::commit(); + return jsonResponseWithSuccessMessage(__('success.save_data')); + } catch (Exception $e) { + DB::rollBack(); + Log::error("Notification send Failed " . $e->getMessage()); + return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); + } + } + diff --git a/resources/views/Admin/pages/manage_notification/manage_notifications_add.blade.php b/resources/views/Admin/pages/manage_notification/manage_notifications_add.blade.php index 0908717..0b05694 100644 --- a/resources/views/Admin/pages/manage_notification/manage_notifications_add.blade.php +++ b/resources/views/Admin/pages/manage_notification/manage_notifications_add.blade.php @@ -67,7 +67,7 @@
-