سلام من تونستم قسمت نوتیفکیشن تیکت پیاده سازی کنم .
ولی کدم به اصطلاح تمیز نیست .
برای نشان دادن نوتیفیکیشن پاسخ جدید برای تیکت من دیتا جدیدی ایجاد نکردم وهمون دیتا قدیدمی فیلد read_at
مساوی null
کردم .
قبل از پاسخ
بعد از پاسخ
این کد من هستش
این قسمت برای پیدا کردن ادمین و کارمندانی که دسترسی به تیکت ها دارن
public function PermissionForTicket()
{
return User::whereHas('roles', function ($query) {
$query->where('name', 'ticket-controller');
})->orWhere('is_superuser', 1)->get();
}
این قسمت برای آپدیت نوتیفیکیشن ها
public function NotificationCommentForAdmins($id)
{
$admins = $this->PermissionForTicket();
foreach ($admins as $admin) {
foreach ($admin->notifications[0]->where('data->id', $id)->get() as $notification) {
$notification->update([
'read_at' => null,
'updated_at' => Carbon::now(),
]);
}
}
}
همانطور که میبینید من برای پیدا کردن نوتیفیکیشن ها از دو تا foreach
استفاده کردم (اولی برای پیمایش کارمند ها ، دومی برای پیمایش نوتیفیکیشن ها ).
یک جورایی رو مخه 😅.
چه راهکار دیگه ای پیشنهاد میدین ؟
میخواستم بدونم collection های لاراول متد خاصی برای این کار نداره که کد کمتر و تمیز ترش کنه؟
@juza66
@mohaligateway
@Rp76
@muhammad
@ali.bayat
سلام وقتتون بخیر!
نظر من این هست که بکوبی از اول بسازی
جدول ها باید به این صورت باشه از نظر من البته
//table conversation
id
user_id
title
status => string bashe
timestamps
این جدولی که همه تیکت ها توش ذخیره میشه
حالا نوبت پیام ها هست
//table messages
id,
user_id -> har ki ino sabt karde [ manzoram ine ke harkas javabi sabt kard ba id khodesh ]
conversation_id -> in ham bara in ke bedonim bara kodom ticket hast
text -> longtext bashe
attach -> string ke age file khastan upload konan
فکر کنم برای جدول پیام ها بالایی کافی باشه
حالا بریم سراغ نمایش
$conversations=Conversation::where("user_id",Auth::id())->paginate();
ارسالش میکنی به یه blade و تمام
حالا برای قسمت نمایش پیام های یه تیکت
$messagess=Messages::where("conversation_id",$id)->orderBy("id","DESC")->get();
حالا چک میکنی که اگر ارسال کننده این پیام با کسی که conversation رو ساخته یکی هست پس یعنی این پیام برای صاحب تیکت هست در غیر اینصورت یکی از مدیرا هست
@Rp76
سلام
جدول تیکت من دقیقا به شکل جدول conversation
شما هستش(با این تفاوت که status
از نوع bool
هستش و یک فیلد دیگه به اسم priority
برای سطح تیکت وجود داره وcategory_id
برای دسته بندی تیکت )
و جدول کامنت ها رو به شکل پالیمورفیک پیاده سازی کردم تا جاهای دیگه مثل نظرات محصولات بتونم پیاده سازی کنم و چیزی که من میگیم اینکه:
شما وقتی داخل تلگرام یا هر پیام رسان دیگه کسی به شما پیام بده یک نوتیفکیشن برای شما فعال میشه . تا شما بفهمید یک نفر پیام داده .
من از جدول نوتیفیکیشن های لاراول برای ایجاد نوتیفیکیشن برای کاربر استفاده میکنم .
که با فیلد 'read_at' مشخص میکنه که کاربر نوتیفیکیشن دیده یا نه
حالا سناریو اینکه که کاربر وقتی پاسخ جدید برای تیکت که ایجاد کرده میده یک نوتیفیکیشن جدید ایجاد نشه همون نوتیفیکیشن قبلی رو آپدیت کنه.
حالا اون دوتا foreach
که میبینید برای پیداکردن نوتیفیکیشن هاست و آپادیت اونها با id
که از فایل blade
ارسال شده .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟