Files
wticreatorstudio/Modules/StudioPlus/Http/Controllers/API/AsinController.php
T
2024-02-12 22:54:20 -05:00

66 lines
1.8 KiB
PHP

<?php
namespace Modules\StudioPlus\Http\Controllers\API;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Support\Arr;
use Modules\StudioPlus\Entities\StudioPlusCategory;
use Modules\StudioPlus\Entities\StudioPlusVideo;
use Modules\StudioPlus\Services\AmazonProductService;
use Modules\StudioPlus\Services\RainForestAmazonProductService;
use Modules\StudioPlus\Transformers\AmazonASINResource;
class AsinController extends Controller
{
public function getAsinData(Request $request)
{
$request->validate([
'search' => ['required']
]);
$studioPlus = StudioPlusVideo::query()
->where('asin', $request->search)
->exists();
if (!$studioPlus) {
return [
'message' => 'ASIN not found.',
'exists' => $studioPlus
];
}
$asin = config('studioplus.amazon_active_api') !== 'RAINFOREST'
? (new AmazonProductService)->getASIN($request->search)
: (new RainForestAmazonProductService)->getASIN($request->search);
if (!$asin) {
return [
'message' => 'ASIN not found.',
'exists' => $studioPlus
];
}
$validated = [
'user_id' => 1,
'name' => $asin['category']
];
if ($validated['name']) {
$category = StudioPlusCategory::firstOrCreate(
[
'name' => $validated['name']
],
$validated
);
$asin['category_id'] = $category->id;
}
$asin['exists'] = $studioPlus;
return new AmazonASINResource($asin);
}
}