158 lines
6.3 KiB
PHP
158 lines
6.3 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
use App\Models\Support_Reply;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class Support extends BaseModel
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $fillable = ['sender_id','assigned_id','title','priority','is_read','status','created_at','updated_at'];
|
|
|
|
public function supportreplays() {
|
|
return $this->hasMany('App\Models\Support_Reply');
|
|
}
|
|
|
|
public function list($inputData){
|
|
|
|
$queryData = Support::query();
|
|
|
|
if($inputData['user_type'] == 0){
|
|
$queryData->where('sender_id',$inputData['user_id']);
|
|
}
|
|
if(isset($inputData['status']) && is_numeric($inputData['status']))
|
|
{
|
|
$queryData->where('status',$inputData['status']);
|
|
}
|
|
if(!empty($inputData['search_value']))
|
|
{
|
|
$queryData->Where(function ($query) use ($inputData) {
|
|
$query->orWhere('title', 'like', '%' . $inputData['search_value'] . '%');
|
|
});
|
|
|
|
}
|
|
// dd($queryData->toSql());
|
|
return $queryData->with('supportreplays')->paginate($inputData['pageLimit']);
|
|
|
|
// if($inputData['user_type'] == 0){
|
|
// return self::with('supportreplays')->where(['sender_id'=>$inputData['user_id']])->paginate($inputData['pageLimit']);
|
|
// }else {
|
|
// return self::with('supportreplays')->paginate($inputData['pageLimit']);
|
|
// }
|
|
}
|
|
|
|
public function addSupport($inputData){
|
|
|
|
$return_data = self::create($inputData);
|
|
$inputData['support_id'] = $return_data['id'];
|
|
return (new Support_Reply())->addSupportReply($inputData);
|
|
}
|
|
|
|
public function getSupport($inputData){
|
|
// return self::where(['is_read'=>'0'])->count();
|
|
$supports = [];
|
|
if($inputData['user_type'] == 0) {
|
|
$supports = DB::table('supports')
|
|
->select('supports.id as support_id', 'supports.title as title', 'support_replies.message as message', 'support_replies.sender_id as sender_id', 'support_replies.is_read as readc')
|
|
->join('support_replies', 'supports.id', '=', 'support_replies.support_id')
|
|
->where('supports.sender_id', '=', $inputData['id'])
|
|
->where('support_replies.sender_id', '!=', $inputData['id'])
|
|
->where('support_replies.is_read', '=', 0)
|
|
->get();
|
|
}else{
|
|
$supports = DB::table('supports')
|
|
->select('supports.id as support_id', 'supports.title as title', 'support_replies.message as message', 'support_replies.sender_id as sender_id', 'support_replies.is_read as readc')
|
|
->join('support_replies', 'supports.id', '=', 'support_replies.support_id')
|
|
->where('support_replies.sender_id', '!=', $inputData['id'])
|
|
->where('support_replies.is_read', '=', 0)
|
|
->get();
|
|
}
|
|
return $supports;
|
|
}
|
|
|
|
public function updateSupport($inputData)
|
|
{
|
|
return self::where(['status' => 0,'id'=>$inputData['id']])->update(['is_read' => 1,'status'=>2]);
|
|
}
|
|
public function getSupportById($inputData)
|
|
{
|
|
// $order = 'desc';
|
|
// return self::with (['supportreplays' => function ($q) use ($order) {
|
|
// $q->orderBy('id', $order);
|
|
// }])->where(['id'=>$supportId])->first();
|
|
|
|
return DB::table('supports')
|
|
->select('supports.*', 'support_replies.id as srid', 'support_replies.sender_id as srsender_id', 'support_replies.message', 'support_replies.attachment_path','support_replies.created_at as sr_create', 'users.first_name', 'users.last_name', 'users.user_type', 'users.email')
|
|
->join('support_replies','supports.id','=','support_replies.support_id')
|
|
->join('users','support_replies.sender_id','=','users.id')
|
|
->orderBy('support_replies.id','desc')
|
|
->where(['supports.id'=>$inputData['support_id']])
|
|
->get();
|
|
|
|
}
|
|
|
|
public function getSupportId($supportId)
|
|
{
|
|
return DB::table('supports')
|
|
->select('supports.*', 'users.first_name', 'users.last_name', 'users.user_type', 'users.email')
|
|
->join('users','supports.sender_id','=','users.id')
|
|
->where(['supports.id' => $supportId ])
|
|
->first();
|
|
|
|
}
|
|
|
|
public function getNotifcation($user_id,$user_type)
|
|
{
|
|
|
|
$result = [];
|
|
if($user_type == 0) {
|
|
// $result = self::with(['supportreplays' => function ($q) use ($user_id) {
|
|
// $q->orderBy('id','desc')
|
|
// ->where('sender_id', '!=', $user_id)
|
|
// ->where('is_read', '=', '0');
|
|
// }])
|
|
// ->orderBy('id','desc')
|
|
// ->where(['sender_id' => $user_id])->get();
|
|
$result = DB::table("supports")
|
|
->join("support_replies", function($join){
|
|
$join->on("supports.id", "=", "support_replies.support_id");
|
|
})
|
|
->select("supports.id", "supports.sender_id", "supports.title", "supports.created_at")
|
|
->orderBy('supports.id','desc')
|
|
->where("supports.sender_id", "=", $user_id)
|
|
->where("support_replies.sender_id", "!=", $user_id)
|
|
->where("support_replies.is_read", "=", 0)
|
|
->groupBy("supports.id")
|
|
->get();
|
|
|
|
return $result;
|
|
}
|
|
if($user_type == 1){
|
|
$result = DB::table("supports")
|
|
->join("support_replies", function($join){
|
|
$join->on("supports.id", "=", "support_replies.support_id");
|
|
})
|
|
->select("supports.id", "supports.sender_id", "supports.title", "supports.created_at")
|
|
->orderBy('supports.id','desc')
|
|
->where("support_replies.sender_id", "!=", $user_id)
|
|
->where("support_replies.is_read", "=", 0)
|
|
->groupBy("supports.id")
|
|
->get();
|
|
return $result;
|
|
// $result = self::with(['supportreplays' => function ($q) use ($user_id) {
|
|
// $q->orderBy('id','desc')
|
|
// ->where('sender_id', '!=', $user_id)
|
|
// ->where('is_read', '=', '0');
|
|
// }])->orderBy('id','desc')->get();
|
|
}
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|