Files
wticreatorstudio/Modules/StudioPlus/Http/Controllers/API/VideoUrlsController.php
T
2024-04-19 03:06:08 -04:00

175 lines
5.0 KiB
PHP

<?php
namespace Modules\StudioPlus\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\StudioPlus\Entities\StudioPlusVideo;
use Modules\StudioPlus\Entities\StudioPlusVideoStatusTrack;
use Modules\StudioPlus\Entities\VideoUrl;
use Modules\StudioPlus\Http\Requests\StoreVideoUrlRequest;
use Modules\StudioPlus\Http\Requests\UpdateVideoUrlRequest;
use Modules\WTIJobBoard\Repositories\JobRequestsRepository;
use Modules\WTIJobBoard\Repositories\JobRequestShipmentsRepository;
class VideoUrlsController extends Controller
{
public function index()
{
$urls = VideoUrl::orderBy('name')->get();
return response()->json([
'urls' => $urls
]);
}
public function store(StoreVideoUrlRequest $request)
{
if ($request->has('video')) {
$video_id = $request->video['id'];
$data = [
'video_id' => $video_id,
'label' => $request->label,
'url' => $request->url,
];
$url = VideoUrl::create($data);
$video = StudioPlusVideo::find($video_id);
$video->load([
'thumbnail',
'category',
'videoType',
'otts.links',
'asinData',
'channel.user',
'urls',
]);
if($video->job){
$data['id'] = $video->job->id;
if(!$video->job->is_received){
$data['received_at'] = \Carbon\Carbon::now()->format('Y-m-d H:i:s');
(new JobRequestShipmentsRepository())->received($data);
}
$data['fulfilled_at'] = \Carbon\Carbon::now()->format('Y-m-d H:i:s');
(new JobRequestsRepository())->fulfilled($data);
}
$video->update([
'status' => StudioPlusVideo::STATUS_PUBLISHED
]);
StudioPlusVideoStatusTrack::firstOrCreate([
'studio_plus_video_id' => $video->id,
'name' => StudioPlusVideo::STATUS_PUBLISHED
]);
StudioPlusVideoStatusTrack::create([
'studio_plus_video_id' => $video->id,
'name' => $request->label.' URL Added'
]);
return response()->json([
'message' => 'Video url has been saved.',
'url' => $url,
'video' => $video,
]);
}
}
public function update(UpdateVideoUrlRequest $request)
{
$url = VideoUrl::find($request->id);
if ($url) {
$url->fill($request->all());
$url->update();
$video = $url->video;
$video->load([
'thumbnail',
'category',
'videoType',
'otts.links',
'asinData',
'channel.user',
'urls',
]);
if($video->job){
$data['id'] = $video->job->id;
if(!$video->job->is_received){
$data['received_at'] = \Carbon\Carbon::now()->format('Y-m-d H:i:s');
(new JobRequestShipmentsRepository())->received($data);
}
$data['fulfilled_at'] = \Carbon\Carbon::now()->format('Y-m-d H:i:s');
(new JobRequestsRepository())->fulfilled($data);
}
$video->update([
'status' => StudioPlusVideo::STATUS_PUBLISHED
]);
StudioPlusVideoStatusTrack::firstOrCreate([
'studio_plus_video_id' => $video->id,
'name' => StudioPlusVideo::STATUS_PUBLISHED
]);
StudioPlusVideoStatusTrack::create([
'studio_plus_video_id' => $video->id,
'name' => $request->label.' URL Updated'
]);
return response()->json([
'message' => 'Video url has been udpated.',
'url' => $url,
'video' => $video,
]);
}
return response()->json([
'message' => 'Video url not found.',
], 404);
}
public function destroy(Request $request)
{
$url = VideoUrl::find($request->id);
if ($url) {
$url->delete();
$video = $url->video;
$video->load([
'thumbnail',
'category',
'videoType',
'otts.links',
'asinData',
'channel.user',
'urls',
]);
return response()->json([
'message' => 'Video url has been deleted.',
'video' => $video,
]);
}
return response()->json([
'message' => 'Video url not found.',
], 404);
}
}