| 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\LockerBanner;
use App\Models\ServerFile;
use App\Events\GetLockerBanner;
use App\Http\Services\FileUploadService;
use Image;
use Str;
use Queriplex;
use App\Http\Services\GooglePubSubService;
class LockerBannerService
{
public function __construct(
FileUploadService $fileUploadService,
GooglePubSubService $googlePubSubService
)
{
$this->fileUploadService = $fileUploadService;
$this->googlePubSubService = $googlePubSubService;
}
public function searchQuery($query, $value, $search_by){
$common_searchable = [
'id',
'name',
];
if(in_array($search_by,$common_searchable)){
$query->search($search_by,$value);
}
return null;
}
public function queriplex($query, $request){
$order_mode = ( $request['sortDesc'] ?? false ) ? 'DESC' : 'ASC';
$search_by = $request['searchBy'] ?? null;
$queriplex = Queriplex::make($query)
->withFilters($request, [
'id' => 'id',
'locker_id' => 'locker_id',
'terminal_id' => function($query, $value){ // callback
return $query->whereHas('locker',function($q) use ($value){
return $q->where('terminal_id', $value);
});
},
'has_image' => fn($query) => $query->has('image'),
'activity' => function($query, $value){
$query->whereActivity($value);
},
'search' => ( fn($query, $value) => self::searchQuery($query,$value,$search_by) ),
])
->withSort($request['sortBy'] ?? null, [
"id" => fn($query) => $query->orderBy('id', $order_mode),
]);
return $queriplex->apply();
}
public function listLockerBanner(Array $request)
{
$lockerBanners = LockerBanner::query();
$lockerBanners = self::queriplex($lockerBanners, $request);
$result = $lockerBanners->paginate($request['itemsPerPage'] ?? null);
$result->load('image');
return $result;
}
public function createLockerBanner(Array $request)
{
$lockerBanner = new LockerBanner();
$lockerBanner->name = $request['name'];
$lockerBanner->locker_id = $request['locker_id'];
$lockerBanner->save();
self::sendEvent($request);
return $lockerBanner;
}
public function updateLockerBanner(Array $request)
{
$lockerBanner = LockerBanner::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$lockerBanner->name = $request['name'];
$lockerBanner->save();
self::sendEvent($request);
return $lockerBanner;
}
public function deleteLockerBanner(Array $request)
{
$lockerBanner = LockerBanner::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$lockerBanner->restoreOrDelete();
self::sendEvent($request);
return $lockerBanner;
}
public function uploadLockerBannerImage(Array $request)
{
$lockerBanner = LockerBanner::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$file = $request['image'];
$img = Image::make($file);
// $img->fit(1280, 720);
$path = "lockerBanners/".$lockerBanner->id;
$file_name = Str::uuid()->toString().'.jpg';
$this->fileUploadService->uploadFile( $img->encode(), $path, $file_name , $reset_directory = true);
$lockerBanner = $lockerBanner->image()->updateOrCreate([],[
'name' => $file_name,
'path' => 'lockerBanners',
'type_id' => ServerFile::IMAGE,
'extension' => $file->getMimeType(),
'mime_type' => $file->getClientOriginalExtension(),
'size' => $file->getSize(),
]);
self::sendEvent($request);
return $lockerBanner;
}
public function clearLockerBannerImage(Array $request)
{
$lockerBanner = LockerBanner::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$lockerBanner = $lockerBanner->image()->delete();
self::sendEvent($request);
return $lockerBanner;
}
public function sendEvent(Array $request)
{
$json = [
"terminal_id" => $request['terminal_id']
];
$this->googlePubSubService->publishMessage($request['terminal_id'], "GetLockerBanner", $json);
$this->googlePubSubService->publishMessagev2($request['terminal_id'], "GetLockerBanner", $json);
Event(new GetLockerBanner($request['terminal_id']));
}
// public function getOnClickValue($result)
// {
// $related_ids = $result->where('action_type_id',LockerBanner::COURSE_PROVIDER)->pluck('on_click')->unique();
// $related_data = Company::whereIn('id',$related_ids)->get(['id','name']);
// foreach ($result as $item) {
// $exist = $related_data->first(function($value, $key) use ($item){
// return $value->id == $item->on_click;
// });
// if($exist){
// $item->on_click_value = $exist->name;
// }
// }
// $related_ids = $result->where('action_type_id',LockerBanner::COURSE)->pluck('on_click')->unique();
// $related_data = Course::whereIn('id',$related_ids)->get(['id','name']);
// foreach ($result as $item) {
// $exist = $related_data->first(function($value, $key) use ($item){
// return $value->id == $item->on_click;
// });
// if($exist){
// $item->on_click_value = $exist->name;
// }
// }
// return $result;
// }
}