first commit
Some checks failed
Build / run (push) Has been cancelled

This commit is contained in:
maher
2025-10-29 11:42:25 +01:00
commit 703f50a09d
4595 changed files with 385164 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
<?php namespace Common\Localizations;
use Common\Core\BaseController;
use Common\Database\Datasource\Datasource;
use Illuminate\Http\Request;
class LocalizationsController extends BaseController
{
public function __construct(
protected Request $request,
protected LocalizationsRepository $repository,
) {
}
public function index()
{
$this->authorize('index', Localization::class);
$dataSource = new Datasource(
app(Localization::class)->newQuery(),
request()->all(),
);
return $this->success(['pagination' => $dataSource->paginate()]);
}
public function show(string|int $idOrLangCode)
{
$localization = Localization::where('id', $idOrLangCode)
->orWhere('language', $idOrLangCode)
->firstOrFail();
$this->authorize('show', $localization);
$localization->loadLines();
return $this->success([
'localization' => $localization,
]);
}
public function update(int $id)
{
$this->authorize('update', Localization::class);
$this->validate($this->request, [
'name' => 'string|min:1',
'language' => 'string|min:2|max:5',
'lines' => 'array|min:1',
]);
$localization = $this->repository->update(
$id,
$this->request->all(),
true,
);
return $this->success(['localization' => $localization]);
}
public function store()
{
$this->authorize('store', Localization::class);
$this->validate($this->request, [
'name' => 'required|unique:localizations',
'language' => 'string|min:2|max:5|unique:localizations',
]);
$localization = $this->repository->create($this->request->all());
return $this->success(['localization' => $localization]);
}
public function destroy(string $ids)
{
$localizationIds = explode(',', $ids);
$this->authorize('destroy', Localization::class);
foreach ($localizationIds as $id) {
if (Localization::count() === 1) {
return $this->error(
__('There must be at least one localization.'),
);
}
$this->repository->delete((int) $id);
}
return $this->success();
}
public function download(int $id)
{
$localization = Localization::findOrFail($id);
$this->authorize('show', $localization);
return response()->download($localization->getLinesFilePath());
}
public function upload(int $id)
{
$localization = Localization::findOrFail($id);
$this->authorize('update', $localization);
$data = $this->validate($this->request, [
'file' => 'required|file|mimes:json',
]);
$this->repository->storeLocalizationLines(
$localization,
json_decode(file_get_contents($data['file']->getRealPath()), true),
true,
);
return $this->success();
}
}