Current File : /home/getxxhzo/app.genicards.com/app/Http/Controllers/AddOnController.php |
<?php
namespace App\Http\Controllers;
use App\Models\AddOn;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use ZipArchive;
use Illuminate\Support\Facades\File;
class AddOnController extends AppBaseController
{
public function index()
{
return view('add-on.index');
}
public function extractZip(Request $request)
{
$request->validate([
'file' => 'required|file|mimes:zip'
]);
$file = $request->file('file');
$filePathInfo = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
$extractionPath = base_path('Modules/');
$moduleFolder = $extractionPath . $filePathInfo;
if (is_dir($moduleFolder)) {
return $this->sendError(__('messages.addon.module_folder_already_exists'));
}
$isExistFiles = [
$filePathInfo . '/' . 'composer.json',
$filePathInfo . '/' . 'Providers/RouteServiceProvider.php'
];
$zip = new ZipArchive;
if ($zip->open($file) === TRUE) {
$fileNames = [];
for ($i = 0; $i < $zip->numFiles; $i++) {
$fileNames[] = $zip->getNameIndex($i);
}
$checkFiles = [];
foreach ($isExistFiles as $isExistFile) {
if (!in_array($isExistFile, $fileNames)) {
$checkFiles[] = $isExistFile;
}
}
$zip->close();
if (!empty($checkFiles)) {
return $this->sendError(__('messages.addon.zip_required_file'));
}
if ($zip->open($file) === TRUE) {
$zip->extractTo($extractionPath);
$zip->close();
$addOn = AddOn::updateOrCreate([
'name' => $filePathInfo,
]);
$content = file_get_contents(base_path("modules_statuses.json"));
$content = json_decode($content, true);
$content[$filePathInfo] = true;
file_put_contents(base_path("modules_statuses.json"), json_encode($content));
} else {
return $this->sendError(__('messages.addon.failed_to_extraction'));
}
\Artisan::call('module:migrate', ['--force' => true]);
return $this->sendSuccess(__('messages.addon.addon_uploaded_successfully'));
} else {
return $this->sendError(__('messages.addon.failed_to_open'));
}
}
public function update($id)
{
$addOnModule = AddOn::find($id);
if (!$addOnModule) {
return $this->sendError(__('messages.addon.module_not_found'));
}
$addOnModule->status = !$addOnModule->status;
$addOnModule->save();
return $this->sendSuccess(__('messages.addon.module_status_updated_success'));
}
public function destroy($id)
{
$addOnModule = AddOn::find($id);
if ($addOnModule) {
return $this->sendError(__('messages.placeholder.default_module_can_not_be_delete'));
}
$modulePath = base_path('Modules/' . $addOnModule->name);
if (File::exists($modulePath)) {
File::deleteDirectory($modulePath);
}
$addOnModule->delete();
return response()->json(['success' => __('messages.common.deleted_successfully')]);
}
}