| 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\LockerGuide;
use App\Models\ServerFile;
use App\Models\Locker;
use Auth;
use Illuminate\Validation\ValidationException;
use Queriplex;
use App\Classes\GCSFileUploader;
use Image;
use Str;
use Carbon\Carbon;
use App\Http\Services\FileUploadService;
use App\Http\Services\GooglePubSubService;
use App\Jobs\GetLockerGuide;
class LockerGuideService
{
public function __construct(
FileUploadService $fileUploadService,
GooglePubSubService $googlePubSubService
)
{
$this->fileUploadService = $fileUploadService;
$this->googlePubSubService = $googlePubSubService;
}
public function lockerGuideList(Array $request)
{
$locker_guides = LockerGuide::query();
$locker_guides = self::lockerGuideQueriplex($locker_guides, $request);
$result = $locker_guides->paginate($request['itemsPerPage'] ?? null);
$result->load('images', 'video');
return $result;
}
public function lockerGuideQueriplex($query, Array $request)
{
$order_mode = ( $request['sortDesc'] ?? false ) ? 'DESC' : 'ASC';
$search_by = $request['searchBy'] ?? null;
$queriplex = Queriplex::make($query)
->withFilters($request,[
'id' => 'id',
'activity' => function($query, $value){
$query->whereActivity($value);
},
'search' => ( fn($query, $value) => self::lockerGuideSearchQuery($query,$value,$search_by) ),
])
->withSort($request['sortBy'] ?? null, [
"id" => fn($query) => $query->orderBy('id', $order_mode),
]);
return $queriplex->apply();
}
public function lockerGuideSearchQuery($query, $value, $search_by)
{
$common_searchable = [
'id',
'name',
];
if(in_array($search_by,$common_searchable)){
$query->search($search_by,$value);
}
return null;
}
public function uploadLockerGuideMedia(Array $request)
{
$lockerGuide = LockerGuide::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$file = $request['media'];
$path = "lockerGuides/".$lockerGuide->id;
$file_name = Str::uuid()->toString().'.'.$file->getClientOriginalExtension();
if($request['type_id'] == LockerGuide::IMAGE)
{
$this->fileUploadService->uploadMedia( $file, $path, $file_name , $reset_directory = false);
$lockerGuide = $lockerGuide->images()->create([
'name' => $file_name,
'path' => 'lockerGuides',
'type_id' => ServerFile::IMAGE,
'extension' => $file->getMimeType(),
'mime_type' => $file->getClientOriginalExtension(),
'size' => $file->getSize(),
]);
}
else if($request['type_id'] == LockerGuide::VIDEO)
{
$this->fileUploadService->uploadMedia( $file, $path, $file_name , $reset_directory = true);
$lockerGuide = $lockerGuide->video()->updateOrCreate([],[
'name' => $file_name,
'path' => 'lockerGuides',
'type_id' => LockerGuide::VIDEO,
'extension' => $file->getMimeType(),
'mime_type' => $file->getClientOriginalExtension(),
'size' => $file->getSize(),
]);
}
if($lockerGuide->type_id == LockerGuide::VIDEO)
self::sendSync($request['time']);
return $lockerGuide;
}
public function removeLockerGuideMedia(Array $request)
{
$lockerGuide = LockerGuide::where('id',$request['guide_id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
if($request['type_id'] == LockerGuide::IMAGE)
{
$lockerGuide = $lockerGuide->images()->where('id', $request['id'])->delete();
}
else if($request['type_id'] == LockerGuide::VIDEO)
{
$lockerGuide = $lockerGuide->video()->where('id', $request['id'])->delete();
}
if(!$lockerGuide)
{
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
}
return $lockerGuide;
}
public function lockerGuideInfo(Array $request)
{
$lockerGuide = LockerGuide::where('id',$request['id'])
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$lockerGuide->load([
'images',
'video'
]);
return $lockerGuide;
}
public function createLockerGuide(Array $request)
{
$lockerGuide = new LockerGuide;
$lockerGuide->name = $request['name'];
$lockerGuide->type_id = $request['type_id'];
$lockerGuide->save();
return $lockerGuide;
}
public function updateLockerGuide(Array $request)
{
$lockerGuide = LockerGuide::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$lockerGuide->name = $request['name'] ?? $lockerGuide->name;
$lockerGuide->type_id = $request['type_id'] ?? $lockerGuide->type_id;
$lockerGuide->save();
if($lockerGuide->type_id == LockerGuide::VIDEO)
self::sendSync();
return $lockerGuide;
}
public function archiveLockerGuide(Array $request)
{
$lockerGuide = LockerGuide::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
$lockerGuide->restoreOrDelete();
return $lockerGuide;
}
public function lockerGuideTypeList()
{
$refs = collect(LockerGuide::TYPES);
$refs = $refs->mapKeyValue("value", "text");
return $refs->values();
}
public function lockerGuideMediaList(Array $request)
{
$lockerGuide = LockerGuide::where('id',$request['id'])
->withTrashed()
->firstOr( function(){
throw ValidationException::withMessages(
[ "id" => "The selected id is invalid." ]
);
});
if($lockerGuide->type_id == LockerGuide::IMAGE)
$result = $lockerGuide->images()->paginate($request['itemsPerPage'] ?? null);
else if($lockerGuide->type_id == LockerGuide::VIDEO)
$result = $lockerGuide->video()->paginate($request['itemsPerPage'] ?? null);
return $result;
}
public function sendSync($time = "00:00")
{
$today = Carbon::today()->toDateString();
$reset = Carbon::createFromFormat('Y-m-d H:i', $today . ' ' . $time);
if($reset < now())
{
$reset = Carbon::parse($reset)->addDay();
}
$diff = $reset->diffInSeconds(now());
GetLockerGuide::dispatch()->delay(now()->addSeconds($diff));
return true;
}
}