query('active'); if ($activeQuery == 4) { // for customer $notifications = NotificationDetails::with('Notification') ->where('is_active', 1) ->where('is_schedule', 0) ->whereHas('Notification', function ($query) { $query->where('principal_type_xid', 3); }) ->latest() ->take(12) ->get(); } else if ($activeQuery == 3) { // for restaurant $notifications = NotificationDetails::with('Notification') ->where('is_active', 1) ->where('is_schedule', 0) ->whereHas('Notification', function ($query) { $query->where('principal_type_xid', 4); }) ->latest() ->take(12) ->get(); // return $notifications; } else { $notificationsOfType3 = NotificationDetails::with('Notification') ->where('is_active', 1) ->where('is_schedule', 0) ->whereHas('Notification', function ($query) { $query->where('principal_type_xid', 3); }) ->latest() ->take(12) ->get(); $notificationsOfType4 = NotificationDetails::with('Notification') ->where('is_active', 1) ->where('is_schedule', 0) ->whereHas('Notification', function ($query) { $query->where('principal_type_xid', 4); }) ->latest() ->take(12) ->get(); $notifications = $notificationsOfType3->merge($notificationsOfType4); } return view('Admin.pages.manage_notification.manage_notification', compact('notifications')); } /** * Created By : Sayli Raut * Created at : 10 June 2024 * Use : To view notification details.s */ public function add() { $state = ManageState::where('is_active', 1)->get()->toArray(); return view('Admin.pages.manage_notification.manage_notifications_add', compact('state')); } /** * Created By : Sayli Raut * Created at : 10 June 2024 * Use : To add notification . */ public function store_notification_data(Request $request) { try { $request->validate([ 'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', ]); DB::beginTransaction(); $imagePath = null; if ($request->hasFile('image')) { $image = $request->file('image'); $imagePath = saveSingleImageWithoutCrop($image, 'notification_images'); $imagePath = ListingImageUrl('notification_images', $imagePath); } $states = $request->states; $dateTime = now(); $formattedDateTime = $dateTime->format('Y-m-d H:i:s'); $iamPrincipals = Subscriptions::select('iam_principal_xid') ->where('next_payment_date', '>=', $formattedDateTime) ->get(); $iamPrincipalIds = $iamPrincipals->pluck('iam_principal_xid'); $subscribe = IamPrincipal::whereIn('id', $iamPrincipalIds) ->where('is_active', 1) ->where('notification_status', 1) ->where('principal_type_xid', 3) ->whereIn('state_xid', $states) ->get(); $scheduled = false; if ($request->user_type == 1) { $allCustomerOneSignalIds = $subscribe->pluck('id'); $UserData = IamPrincipal::whereIn('id', $allCustomerOneSignalIds)->get(); if ($request->schedule_radio1 == 1 && $request->schedule_date) { NotificationDetails::create([ 'user_type' => $request->user_type, 'description' => $request->description, 'type' => $request->title, 'image' => $imagePath, 'date_added' => $request->schedule_date, 'is_schedule' => 1, 'delivery_schedule' => $request->schedule_date, 'state_ids' => json_encode($states), ]); $scheduled = true; } else { 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 ); } onesignalhelper::StoreNotificationDetails($customerIdItem->id, 'Notification', $request->title, $imagePath); } } } elseif ($request->user_type == 2) { $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(); if ($request->schedule_radio1 == 1 && $request->schedule_date) { NotificationDetails::create([ 'user_type' => $request->user_type, 'description' => $request->description, 'type' => $request->title, 'image' => $imagePath, 'date_added' => $request->schedule_date, 'is_schedule' => 1, 'delivery_schedule' => $request->schedule_date, 'state_ids' => json_encode($states), ]); $scheduled = true; } else { foreach ($restaurantData as $restaurantsData) { if ($restaurantsData->one_signal_player_id) { onesignalhelper::sendNotificationApi( $restaurantsData->one_signal_player_id, $request->title, $request->description, $request->title, $imagePath, $id = null ); } onesignalhelper::StoreNotificationDetails($restaurantsData->id, 'Notification', $request->title, $imagePath); } } } elseif ($request->user_type == 3) { $userQuery = IamPrincipal::where('is_active', 1) ->where('notification_status', 1) ->where('principal_type_xid', 3) ->whereIn('state_xid', $states); $allUserOneSignalIds = $userQuery->pluck('id'); $UserData = IamPrincipal::whereIn('id', $allUserOneSignalIds)->get(); if ($request->schedule_radio1 == 1 && $request->schedule_date) { NotificationDetails::create([ 'user_type' => $request->user_type, 'description' => $request->description, 'type' => $request->title, 'image' => $imagePath, 'date_added' => $request->schedule_date, 'is_schedule' => 1, 'delivery_schedule' => $request->schedule_date, 'state_ids' => json_encode($states), ]); $scheduled = true; } else { foreach ($UserData as $CustomerData) { 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); } } } DB::commit(); if ($scheduled) { return jsonResponseWithSuccessMessage(__('success.save_data_scheduled')); } else { return jsonResponseWithSuccessMessage(__('success.save_data_immediate')); } } catch (Exception $e) { DB::rollBack(); Log::error("Notification send Failed " . $e->getMessage()); return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); } } /** * Created By : Sayli Raut * Created at : 10 June 2024 * Use : To view notification details.s */ public function view($id) { $notification = NotificationDetails::with('notification')->findOrFail($id); return view('Admin.pages.manage_notification.manage_notifications_view', compact('notification')); } }