| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/app/Http/Services/ |
Upload File : |
<?php
namespace App\Http\Services;
use App\Models\Feedback;
use App\Http\Services\EmailService;
use Queriplex;
use Illuminate\Validation\ValidationException;
use Auth;
class FeedbackService{
public function __construct(
EmailService $emailService
)
{
$this->emailService = $emailService;
}
public function feedbackList(Array $request)
{
$feedbacks = Feedback::query();
// // filter
$feedbacks = Queriplex::make($feedbacks)
->withFilters($request, [
'id' => 'id',
'type_id' => 'type_id',
'activity' => function($query, $value){
return $query->whereActivity($value);
},
])->apply();
// sort
if( isset($request['sortBy']) ){
$order_mode = (!isset($request['sortDesc']) || $request['sortDesc'] == true) ? 'DESC' : 'ASC';
switch ($request['sortBy']) {
case 'created_at':
$feedbacks->orderBy('id', $order_mode);
break;
}
}
$result = $feedbacks->paginate($request['itemsPerPage'] ?? null);
$result->load('user:id,full_name');
return $result;
}
public function feedbackCreate(Array $request, $user)
{
$feedback = new Feedback;
$feedback->type_id = $request['type_id'];
$feedback->content = $request['content'];
$feedback->user_id = $request['user_id'];
$feedback->save();
$this->emailService->send_feedback_alert($user, Feedback::TYPES[$feedback->type_id], $feedback->content);
return $feedback;
}
}