mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-10-01 09:13:19 -04:00
Initial commit
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\StudioPlusWtiiabaddon\Http\Controllers\API;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\StudioPlusWtiiabaddon\Entities\StudioPlusIncentive;
|
||||
use Modules\StudioPlusWtiiabaddon\Entities\StudioPlusIncentiveCategory;
|
||||
use Modules\StudioPlusWtiiabaddon\Entities\StudioPlusIncentiveContentType;
|
||||
use Modules\StudioPlusWtiiabaddon\Entities\StudioPlusIncentiveContentVariant;
|
||||
use Modules\StudioPlusWtiiabaddon\Http\Requests\StudioPlusIncentiveRequest;
|
||||
use Modules\StudioPlusWtiiabaddon\Transformers\StudioPlusIncentiveResource;
|
||||
|
||||
class StudioPlusIncentiveController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$incentives = StudioPlusIncentive::query()
|
||||
->with([
|
||||
'asins',
|
||||
'incentiveCategory',
|
||||
'roles',
|
||||
'contentTypes',
|
||||
'contentVariants',
|
||||
])->get();
|
||||
// ->filter($request)
|
||||
// ->when($request->filled('orderBy') && $request->filled('sortBy'), function ($query) use ($request) {
|
||||
// if ($request->orderBy === 'category') {
|
||||
// $query->orderBy(StudioPlusIncentiveCategory::select('name')->whereColumn('id', 'incentive_category_id')->orderBy('name', $request->sortBy), $request->sortBy);
|
||||
// } else {
|
||||
// $query->orderBy($request->orderBy, $request->sortBy);
|
||||
// }
|
||||
// }, fn ($query) => $query->latest())
|
||||
// ->getOrPaginate($request->per_page);
|
||||
|
||||
return StudioPlusIncentiveResource::collection($incentives);
|
||||
}
|
||||
|
||||
public function store(StudioPlusIncentiveRequest $request)
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$validated = $request->validated();
|
||||
$validated['user_id'] = auth()->id();
|
||||
$studioPlusIncentive = StudioPlusIncentive::create($validated);
|
||||
$studioPlusIncentive->asins()->sync($validated['asins']);
|
||||
$studioPlusIncentive->roles()->sync($validated['roles']);
|
||||
|
||||
if (isset($validated['contentTypes'])) {
|
||||
$studioPlusIncentive->contentTypes()->sync($validated['contentTypes']);
|
||||
}
|
||||
|
||||
if (isset($validated['contentVariants'])) {
|
||||
$studioPlusIncentive->contentVariants()->sync($validated['contentVariants']);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
return response()->noContent();
|
||||
} catch (\Exception $ex) {
|
||||
DB::rollBack();
|
||||
throw new \Exception($ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function update(StudioPlusIncentiveRequest $request, StudioPlusIncentive $studioPlusIncentive)
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$validated = $request->validated();
|
||||
$studioPlusIncentive->update($validated);
|
||||
$studioPlusIncentive->asins()->sync($validated['asins']);
|
||||
$studioPlusIncentive->roles()->sync($validated['roles']);
|
||||
|
||||
if (isset($validated['contentTypes'])) {
|
||||
$studioPlusIncentive->contentTypes()->sync($validated['contentTypes']);
|
||||
}
|
||||
|
||||
if (isset($validated['contentVariants'])) {
|
||||
$studioPlusIncentive->contentVariants()->sync($validated['contentVariants']);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
return response()->noContent();
|
||||
} catch (\Exception $ex) {
|
||||
DB::rollBack();
|
||||
throw new \Exception($ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(StudioPlusIncentive $studioPlusIncentive)
|
||||
{
|
||||
try {
|
||||
$studioPlusIncentive->asins()->detach();
|
||||
$studioPlusIncentive->roles()->detach();
|
||||
$studioPlusIncentive->delete();
|
||||
|
||||
return response()->noContent();
|
||||
} catch (\Exception $ex) {
|
||||
throw new \Exception($ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user