mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-09-30 15:13:21 -04:00
718 lines
28 KiB
PHP
718 lines
28 KiB
PHP
<?php
|
|
|
|
namespace Modules\WTIJobBoard\Repositories;
|
|
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Modules\WTIJobBoard\Entities\Creator;
|
|
use Modules\WTIJobBoard\Entities\JobRequest;
|
|
use Modules\WTIJobBoard\Entities\JobRequestCategory;
|
|
use Modules\WTIJobBoard\Entities\JobRequestProductDetails;
|
|
use Modules\WTIJobBoard\Entities\JobRequestStatus;
|
|
use Modules\WTIJobBoard\Entities\JobRequestTrack;
|
|
use Modules\WTIJobBoard\Entities\JobRequestTrackMeta;
|
|
use Modules\WTIJobBoard\Entities\JobRequestBadge;
|
|
use Modules\StudioPlus\Entities\VideoUrl;
|
|
use App\Traits\SendMail;
|
|
use Carbon\Carbon;
|
|
|
|
class JobRequestsRepository
|
|
{
|
|
use SendMail;
|
|
|
|
public function all($data)
|
|
{
|
|
if (permissionCheck('job_board.admin.index')) {
|
|
$items = JobRequest::with(['client', 'video.urls', 'category', 'product', 'tracks.status', 'tracks.metas', 'shipment' , 'applications.creator', 'applications.address', 'pov_video.urls'])->latest('id');
|
|
|
|
if (!in_array(auth()->user()->role->type, ['superadmin', 'admin'])) {
|
|
|
|
$type_ids = [];
|
|
$categories = Cache::remember('categories', 300, function() {
|
|
return JobRequestCategory::where('active',1)->get();
|
|
});
|
|
foreach ($categories as $key => $category) {
|
|
if($category->route_permission != null && permissionCheck($category->route_permission)){
|
|
array_push($type_ids, $category->id);
|
|
}
|
|
}
|
|
|
|
$items = $items->whereIn('type', $type_ids)->where('status','publish')->whereNull('deleted_at');
|
|
}
|
|
|
|
//dont show draft job request and deleted
|
|
$items = $items->where('status','publish')->whereNull('deleted_at');
|
|
|
|
} else {
|
|
|
|
$items = JobRequest::with(['category', 'video.ottUrl', 'product', 'tracks.status', 'tracks.metas', 'shipment', 'pov_video'])->latest('id');
|
|
|
|
if (permissionCheck('job_board.creator.index')) {
|
|
$items = $items->where('is_approved', true)->where(function($query) {
|
|
$query->whereDoesntHave('applications', function($query) {
|
|
$query->where('is_hired', true);
|
|
})->orWhereHas('applications', function($query) {
|
|
$query->where('is_hired', true)->where('applicant_id', auth()->id());
|
|
});
|
|
})->whereHas('category', function ($query) {
|
|
$query->where('will_be_shipped', 1);
|
|
})->where('status','publish')->whereNull('deleted_at');
|
|
|
|
$type_ids = [];
|
|
$staff_badges = (array)json_decode(auth()->user()->staff->badges);
|
|
$badges = \Modules\WTIJobBoard\Entities\JobRequestBadge::whereIn('id',$staff_badges)->get();
|
|
foreach ($badges as $key => $badge) {
|
|
if($badge->categories != null){
|
|
array_push($type_ids, $badge->categories[0]);
|
|
}
|
|
}
|
|
|
|
$items = $items->whereIn('type', $type_ids);
|
|
|
|
|
|
} else {
|
|
|
|
$items = $items->where('client_id', auth()->id())->whereNull('deleted_at');
|
|
}
|
|
}
|
|
|
|
if (isset($data['filter'])) {
|
|
|
|
$filter = $data['filter'];
|
|
|
|
$items = $items->where(function($query) use($filter) {
|
|
|
|
|
|
if(isset($filter['job_types'])){
|
|
$job_types = $filter['job_types'];
|
|
$query->whereIn('type', $job_types);
|
|
}
|
|
|
|
if(isset($filter['job_status'])){
|
|
$job_status = $filter['job_status'];
|
|
$query->whereIn('job_status', $job_status);
|
|
}
|
|
|
|
if(isset($filter['source_id'])){
|
|
$sources = $filter['source_id'];
|
|
$query->whereIn('source_id', $sources);
|
|
}
|
|
|
|
if(isset($filter['brand'])){
|
|
$brand = $filter['brand'];
|
|
$query->whereHas('client', function($query) use($brand) {
|
|
$query->whereIn('id', $brand);
|
|
});
|
|
}
|
|
|
|
if(isset($filter['product_brand'])){
|
|
$product_brand = $filter['product_brand'];
|
|
$query->whereHas('product', function($query) use($product_brand) {
|
|
$query->whereIn('brand', $product_brand);
|
|
});
|
|
}
|
|
|
|
if(isset($filter['track_package'])){
|
|
$track_package = $filter['track_package'];
|
|
$query->whereIn('track_package_status', $track_package);
|
|
}
|
|
|
|
if(isset($filter['order_date'][0])){
|
|
|
|
$startDate = Carbon::parse($filter['order_date'][0])->addDay()->format('Y-m-d');
|
|
$endDate = isset($filter['order_date'][1]) ? Carbon::parse($filter['order_date'][1])->addDay()->format('Y-m-d') : $startDate;
|
|
$query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate);
|
|
}
|
|
|
|
|
|
if(isset($filter['shipped_date'][0])){
|
|
|
|
$startDate = Carbon::parse($filter['shipped_date'][0])->addDay()->format('Y-m-d');
|
|
$endDate = isset($filter['shipped_date'][1]) ? Carbon::parse($filter['shipped_date'][1])->addDay()->format('Y-m-d') : $startDate;
|
|
|
|
$query->whereHas('tracks', function($query) use($startDate,$endDate) {
|
|
$query->where('status_id', 3)->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate);
|
|
});
|
|
}
|
|
|
|
if(isset($filter['received_date'][0])){
|
|
|
|
$startDate = Carbon::parse($filter['received_date'][0])->addDay()->format('Y-m-d');
|
|
$endDate = isset($filter['received_date'][1]) ? Carbon::parse($filter['received_date'][1])->addDay()->format('Y-m-d') : $startDate;
|
|
|
|
$query->whereHas('tracks', function($query) use($startDate,$endDate) {
|
|
$query->where('status_id', 4)->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate);
|
|
});
|
|
}
|
|
|
|
|
|
if(isset($filter['search'])){
|
|
$search = $filter['search'];
|
|
$query->where('id', 'like', '%' . $search . '%');
|
|
$query->orWhere('title', 'like', '%' . $search . '%');
|
|
$query->orWhere('asin', 'like', '%' . $search . '%');
|
|
$query->orWhereHas('client', function ($query) use($search) {
|
|
$query->where('name', 'like', '%' . $search . '%');
|
|
});
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
$items = $items->paginate($data['pagination']);
|
|
|
|
return $items;
|
|
}
|
|
|
|
public function counts($data)
|
|
{
|
|
if (permissionCheck('job_board.admin.index')) {
|
|
$items = JobRequest::query();
|
|
|
|
if (!in_array(auth()->user()->role->type, ['superadmin', 'admin'])) {
|
|
|
|
$type_ids = [];
|
|
$categories = Cache::remember('categories', 300, function() {
|
|
return JobRequestCategory::where('active',1)->get();
|
|
});
|
|
foreach ($categories as $key => $category) {
|
|
if($category->route_permission != null && permissionCheck($category->route_permission)){
|
|
array_push($type_ids, $category->id);
|
|
}
|
|
}
|
|
|
|
$items = $items->whereIn('type', $type_ids)->where('status','publish')->whereNull('deleted_at');
|
|
}
|
|
|
|
//dont show draft job request and deleted
|
|
$items = $items->where('status','publish')->whereNull('deleted_at');
|
|
|
|
} else {
|
|
|
|
$items = JobRequest::query();
|
|
|
|
if (permissionCheck('job_board.creator.index')) {
|
|
$items = $items->where('is_approved', true)->where(function($query) {
|
|
$query->whereDoesntHave('applications', function($query) {
|
|
$query->where('is_hired', true);
|
|
})->orWhereHas('applications', function($query) {
|
|
$query->where('is_hired', true)->where('applicant_id', auth()->id());
|
|
});
|
|
})->whereHas('category', function ($query) {
|
|
$query->where('will_be_shipped', 1);
|
|
})->where('status','publish')->whereNull('deleted_at');
|
|
|
|
$type_ids = [];
|
|
$staff_badges = (array)json_decode(auth()->user()->staff->badges);
|
|
$badges = \Modules\WTIJobBoard\Entities\JobRequestBadge::whereIn('id',$staff_badges)->get();
|
|
foreach ($badges as $key => $badge) {
|
|
if($badge->categories != null){
|
|
array_push($type_ids, $badge->categories[0]);
|
|
}
|
|
}
|
|
|
|
$items = $items->whereIn('type', $type_ids);
|
|
|
|
} else {
|
|
|
|
$items = $items->where('client_id', auth()->id())->whereNull('deleted_at');
|
|
}
|
|
}
|
|
|
|
if (isset($data['filter'])) {
|
|
|
|
$filter = $data['filter'];
|
|
|
|
$items = $items->where(function($query) use($filter) {
|
|
|
|
if(isset($filter['job_types'])){
|
|
$job_types = $filter['job_types'];
|
|
$query->whereIn('type', $job_types);
|
|
}
|
|
|
|
if(isset($filter['job_status'])){
|
|
$job_status = $filter['job_status'];
|
|
$query->whereIn('job_status', $job_status);
|
|
}
|
|
|
|
if(isset($filter['source_id'])){
|
|
$sources = $filter['source_id'];
|
|
$query->whereIn('source_id', $sources);
|
|
}
|
|
|
|
if(isset($filter['brand'])){
|
|
$brand = $filter['brand'];
|
|
$query->whereHas('client', function($query) use($brand) {
|
|
$query->whereIn('id', $brand);
|
|
});
|
|
}
|
|
|
|
if(isset($filter['product_brand'])){
|
|
$product_brand = $filter['product_brand'];
|
|
$query->whereHas('product', function($query) use($product_brand) {
|
|
$query->whereIn('brand', $product_brand);
|
|
});
|
|
}
|
|
|
|
if(isset($filter['track_package'])){
|
|
$track_package = $filter['track_package'];
|
|
$query->whereIn('track_package_status', $track_package);
|
|
}
|
|
|
|
if(isset($filter['order_date'][0])){
|
|
|
|
$startDate = Carbon::parse($filter['order_date'][0])->addDay()->format('Y-m-d');
|
|
$endDate = isset($filter['order_date'][1]) ? Carbon::parse($filter['order_date'][1])->addDay()->format('Y-m-d') : $startDate;
|
|
$query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate);
|
|
}
|
|
|
|
|
|
if(isset($filter['shipped_date'][0])){
|
|
|
|
$startDate = Carbon::parse($filter['shipped_date'][0])->addDay()->format('Y-m-d');
|
|
$endDate = isset($filter['shipped_date'][1]) ? Carbon::parse($filter['shipped_date'][1])->addDay()->format('Y-m-d') : $startDate;
|
|
|
|
$query->whereHas('tracks', function($query) use($startDate,$endDate) {
|
|
$query->where('status_id', 3)->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate);
|
|
});
|
|
}
|
|
|
|
if(isset($filter['received_date'][0])){
|
|
|
|
$startDate = Carbon::parse($filter['received_date'][0])->addDay()->format('Y-m-d');
|
|
$endDate = isset($filter['received_date'][1]) ? Carbon::parse($filter['received_date'][1])->addDay()->format('Y-m-d') : $startDate;
|
|
|
|
$query->whereHas('tracks', function($query) use($startDate,$endDate) {
|
|
$query->where('status_id', 4)->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate);
|
|
});
|
|
}
|
|
|
|
|
|
if(isset($filter['search'])){
|
|
$search = $filter['search'];
|
|
$query->where('id', 'like', '%' . $search . '%');
|
|
$query->orWhere('title', 'like', '%' . $search . '%');
|
|
$query->orWhere('asin', 'like', '%' . $search . '%');
|
|
$query->orWhereHas('client', function ($query) use($search) {
|
|
$query->where('name', 'like', '%' . $search . '%');
|
|
});
|
|
}
|
|
|
|
|
|
});
|
|
}
|
|
|
|
return $items->get()->countBy(function ($item) {
|
|
return permissionCheck('job_board.admin.index') ? strtolower(str_replace(' ', '_', $item->client_status)) : ( permissionCheck('job_board.creator.index') ? strtolower(str_replace(' ', '_', $item->creator_status)) : strtolower(str_replace(' ', '_', $item->client_status)));
|
|
});
|
|
|
|
|
|
}
|
|
|
|
public function create($data)
|
|
{
|
|
|
|
$category = JobRequestCategory::find($data['type']);
|
|
if($category){
|
|
$job_request = new JobRequest();
|
|
|
|
if($data['status'] == 'publish' && auth()->user()->role->type == 'customer'){
|
|
$credits = auth()->user()->credit_points_status;
|
|
if($data['credit_type'] == 'subscription' && $credits['total_available_credits']['subscription'] < $category->credits ){
|
|
$data['status'] == 'draft';
|
|
} else if($data['credit_type'] == 'alacarte' && $credits['total_available_credits']['alacarte'] < $category->credits ){
|
|
$data['status'] == 'draft';
|
|
}
|
|
|
|
}
|
|
|
|
$data['credits'] = $category->credits;
|
|
|
|
$job_request->fill($data);
|
|
if($data['client_id'] == null){
|
|
$job_request->client_id = auth()->id();
|
|
}
|
|
$job_request->save();
|
|
|
|
$product = $data['product'];
|
|
|
|
$details = new JobRequestProductDetails();
|
|
$details->fill($product);
|
|
$details->asin = $data['asin'];
|
|
$details->category = isset($product['category']['name']) ? $product['category']['name'] : null;
|
|
$details->image = $product['image']['link'];
|
|
$details->job_request_id = $job_request->id;
|
|
$details->save();
|
|
|
|
$status_ordered = JobRequestStatus::where('name', 'ordered')->first();
|
|
if ($status_ordered) {
|
|
$track = new JobRequestTrack();
|
|
$track->job_request_id = $job_request->id;
|
|
$track->status_id = $status_ordered->id;
|
|
$track->save();
|
|
}
|
|
|
|
// if($job_request->status == 'publish'){
|
|
// $this->sendJobRequestUpdate($job_request->category->support_email, 'Pending', $data['asin']);
|
|
// }
|
|
|
|
return $job_request;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function update($data)
|
|
{
|
|
$job_request = JobRequest::with('category')->find($data['id']);
|
|
|
|
if ($job_request) {
|
|
|
|
$old_status = $job_request->status;
|
|
|
|
if (auth()->user()->role->type == 'customer') {
|
|
$data['is_approved'] = 0;
|
|
$data['job_status'] = 'Pending';
|
|
}
|
|
|
|
if($data['status'] == 'publish' && auth()->user()->role->type == 'customer'){
|
|
$credits = auth()->user()->credit_points_status;
|
|
if($data['credit_type'] == 'subscription' && $credits['total_available_credits']['subscription'] < $job_request->category->credits ){
|
|
$data['status'] == 'draft';
|
|
} else if($data['credit_type'] == 'alacarte' && $credits['total_available_credits']['alacarte'] < $job_request->category->credits ){
|
|
$data['status'] == 'draft';
|
|
}
|
|
}
|
|
|
|
$data['credits'] = $job_request->category->credits;
|
|
|
|
if($old_status == 'draft' && $data['status'] == 'publish'){
|
|
$data['created_at'] = \Carbon\Carbon::now()->format('Y-m-d H:i:s');
|
|
}
|
|
|
|
$job_request->fill($data);
|
|
$job_request->update();
|
|
|
|
$product = $data['product'];
|
|
|
|
$details = $job_request->product;
|
|
$details->fill($product);
|
|
$details->asin = $data['asin'];
|
|
$details->category = $product['category']['name'];
|
|
$details->image = $product['image']['link'];
|
|
$details->update();
|
|
|
|
return $job_request;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function approve($id)
|
|
{
|
|
$user = auth()->user();
|
|
|
|
if ($user) {
|
|
$role = $user->role->type;
|
|
|
|
if (permissionCheck('job_request.approve')) {
|
|
$job_request = JobRequest::find($id);
|
|
|
|
if ($job_request) {
|
|
$job_request->job_status = 'Approved';
|
|
$job_request->track_package_status = 'Approved';
|
|
$job_request->is_approved = true;
|
|
$job_request->is_rejected = false;
|
|
$job_request->update();
|
|
|
|
$processing_status = JobRequestStatus::where('name', 'processing')->first();
|
|
$track = new JobRequestTrack();
|
|
$track->job_request_id = $job_request->id;
|
|
$track->status_id = $processing_status->id;
|
|
$track->save();
|
|
|
|
//complete the job after approve for purchase video and access video
|
|
if($job_request->type == 10 || $job_request->type == 12){
|
|
$this->fulfilled(['id' => $job_request->id]);
|
|
}
|
|
|
|
//$this->sendJobRequestUpdate($job_request->client->email, 'Approved', $job_request->asin);
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function reject($id)
|
|
{
|
|
$user = auth()->user();
|
|
|
|
if ($user) {
|
|
$role = $user->role->type;
|
|
|
|
if (permissionCheck('job_request.reject')) {
|
|
$job_request = JobRequest::find($id);
|
|
|
|
if ($job_request) {
|
|
$job_request->job_status = 'Denied';
|
|
$job_request->track_package_status = 'Rejected';
|
|
$job_request->is_rejected = true;
|
|
$job_request->is_approved = false;
|
|
$job_request->update();
|
|
|
|
$processing_status = JobRequestStatus::where('name', 'rejected')->first();
|
|
$track = new JobRequestTrack();
|
|
$track->job_request_id = $job_request->id;
|
|
$track->status_id = $processing_status->id;
|
|
$track->save();
|
|
|
|
$this->sendJobRequestUpdate($job_request->client->email, 'Rejected', $job_request->asin);
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function delete($id)
|
|
{
|
|
$job_request = JobRequest::find($id);
|
|
if ($job_request) {
|
|
|
|
if ($job_request->client_id != auth()->id() && !permissionCheck('job_request.delete')) {
|
|
return false;
|
|
}
|
|
|
|
$job_request->delete();
|
|
$job_request->product()->delete();
|
|
$job_request->applications()->delete();
|
|
$job_request->shipment()->delete();
|
|
$job_request->tracks()->delete();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function fulfilled($data)
|
|
{
|
|
$fulfilled_status = JobRequestStatus::where('name', 'fulfilled')->first();
|
|
$track_exist = JobRequestTrack::where('job_request_id',$data['id'])->where('status_id',$fulfilled_status->id)->first();
|
|
if(!$track_exist) {
|
|
|
|
$track = new JobRequestTrack();
|
|
$track->job_request_id = $data['id'];
|
|
$track->status_id = $fulfilled_status->id;
|
|
$track->save();
|
|
|
|
$meta = new JobRequestTrackMeta();
|
|
$meta->track_id = $track->id;
|
|
$meta->name = 'fulfilled_at';
|
|
$meta->value = $data['fulfilled_at'] ?? \Carbon\Carbon::now()->format('Y-m-d H:i:s');
|
|
$meta->save();
|
|
}
|
|
|
|
$job_request = JobRequest::find($data['id']);
|
|
if($job_request->job_status != 'Completed'){
|
|
$job_request->job_status = 'Completed';
|
|
$job_request->track_package_status = 'Completed';
|
|
$job_request->save();
|
|
|
|
$this->sendJobRequestUpdate($job_request->client, 'Completed', $job_request->asin);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function winner($data)
|
|
{
|
|
$job_request = JobRequest::find($data['id']);
|
|
if ($job_request) {
|
|
|
|
$winner_selected_status = JobRequestStatus::where('name', 'winner-selected')->first();
|
|
$track_exist = JobRequestTrack::where('job_request_id',$job_request->id)->where('status_id',$winner_selected_status->id)->first();
|
|
if(!$track_exist) {
|
|
$track = new JobRequestTrack();
|
|
$track->job_request_id = $job_request->id;
|
|
$track->status_id = $winner_selected_status->id;
|
|
$track->save();
|
|
}
|
|
|
|
$job_request->track_package_status = 'Winner Selected';
|
|
$job_request->others = [
|
|
'winner_name' => $data['winner_name'],
|
|
'winner_phone' => $data['winner_phone'],
|
|
'winner_shipping_address' => $data['winner_shipping_address'],
|
|
];
|
|
$job_request->save();
|
|
|
|
$this->sendJobRequestUpdate($job_request->client->email, 'Winner Selected', $job_request->id);
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function deliverable($data)
|
|
{
|
|
$deliverable_status = JobRequestStatus::where('name', 'deliverable')->first();
|
|
$track = new JobRequestTrack();
|
|
$track->job_request_id = $data['id'];
|
|
$track->status_id = $deliverable_status->id;
|
|
$track->save();
|
|
|
|
$meta = new JobRequestTrackMeta();
|
|
$meta->track_id = $track->id;
|
|
$meta->name = 'deliverable_at';
|
|
$meta->value = $data['deliverable_at'];
|
|
$meta->save();
|
|
|
|
$job_request = JobRequest::find($data['id']);
|
|
$job_request->job_status = 'In Progress';
|
|
$job_request->track_package_status = 'Scheduled';
|
|
$job_request->save();
|
|
|
|
return true;
|
|
}
|
|
|
|
public function deliverableUpdate($data)
|
|
{
|
|
$meta = JobRequestTrackMeta::where('track_id', $data['track_id'])->first();
|
|
if($meta){
|
|
$meta->value = $data['deliverable_at'];
|
|
$meta->update();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function url($data)
|
|
{
|
|
if (permissionCheck('job_request.pictures-manager') || permissionCheck('job_request.pov-manager') || permissionCheck('job_request.livestream.url') || permissionCheck('job_board.livestream-manager') || permissionCheck('job_board.ott-app-manager') || permissionCheck('job_board.giveaway-manager')) {
|
|
$job_request = JobRequest::find($data['id']);
|
|
|
|
if ($job_request) {
|
|
|
|
if($job_request->category->name == 'pov_video'){
|
|
$amazon = $job_request->video->urls->where('label','Amazon')->first();
|
|
if($amazon){
|
|
$amazon->url = $data['url'];
|
|
$amazon->save();
|
|
}
|
|
} else {
|
|
$job_request->fill($data);
|
|
$job_request->update();
|
|
}
|
|
|
|
return $this->fulfilled($data);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function downloadVideo($id)
|
|
{
|
|
$job_request = JobRequest::find($id);
|
|
$video_id = $job_request->pov_video != null ? $job_request->pov_video->id : ($job_request->video != null ? $job_request->video->id : false );
|
|
|
|
if(!$video_id) return false;
|
|
|
|
$video = \Modules\StudioPlus\Entities\StudioPlusVideo::with('channel')->find($video_id);
|
|
if($video){
|
|
|
|
//$token = \Cache::remember('user-token-'.auth()->user()->id, 300, function () {
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, 'https://wtisv.com/api/studio/get-token');
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
|
|
|
$headers = array();
|
|
$headers[] = 'Authorization: Bearer ooVeuWUlukjmsHSc26yVqlVT4BG7Ii9P';
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
$token = $result->token;
|
|
//});
|
|
|
|
if($token){
|
|
|
|
//for purchase video only should not have watermarks
|
|
if($job_request->type == 10){
|
|
$video_url = $video->original_video_url;
|
|
} else {
|
|
$video_url = $video->video_url;
|
|
}
|
|
|
|
$video_url = \Str::remove(\Config::get('studioplus.google_api_endpoint'). "/" , $video_url);
|
|
$video_url = \Str::remove(\Config::get('studioplus.bucket_name'). "/", $video_url);
|
|
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, 'https://wtisv.com/api/studio/generate-video-link');
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, "user_id=".$video->channel->user_id."&video_id=".$video->id."&video_url=".$video_url);
|
|
|
|
$headers = array();
|
|
$headers[] = 'Authorization: Bearer '.$token;
|
|
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
|
|
$result = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
return isset($result->link) ? $result->link : false;
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function searchPOV($asin, $type)
|
|
{
|
|
|
|
$query = \Modules\StudioPlus\Entities\StudioPlusVideo::query()->with('urls')->where('asin', $asin);
|
|
$category = JobRequestCategory::find($type);
|
|
if(!$category->will_be_shipped){
|
|
if(in_array(1, $category->video_types) && !in_array(2, $category->video_types)){
|
|
$query = $query->where('is_short',0);
|
|
} else if(!in_array(1, $category->video_types) && in_array(2, $category->video_types)){
|
|
$query = $query->where('is_short',1);
|
|
}
|
|
}
|
|
|
|
|
|
$videos = $query->get();
|
|
$pov_videos = [];
|
|
foreach ($videos as $key => $video) {
|
|
|
|
$alread_purchased = false;
|
|
if($type == 10){
|
|
$job = JobRequest::where('studio_plus_videos_id',$video->id)->where('type',10)->first() ?? false;
|
|
}
|
|
|
|
$data = [
|
|
'id' => $video->id,
|
|
'title' => $video->title,
|
|
'status' => $video->status,
|
|
'urls' => $video->urls,
|
|
'alread_purchased' => isset($job) ? ($job && $job->job_status != 'Pending' ? true : false) : false
|
|
];
|
|
array_push($pov_videos,$data);
|
|
}
|
|
|
|
return collect($pov_videos);
|
|
|
|
}
|
|
}
|