StudioPlus Module Update - create reachout account

This commit is contained in:
Leonard Biano
2025-01-14 22:47:59 +08:00
parent 46394afaed
commit 1c3b33ce5b
9 changed files with 197 additions and 8 deletions
@@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rule;
use Modules\MLMDownline\Entities\MLMDownlineUser;
use Modules\StaffPayroll\Entities\Invoice;
@@ -61,10 +62,16 @@ use Modules\StudioPlus\Jobs\UpdateVideoMeta;
use Modules\StudioPlus\Services\WatermarkService;
use Modules\StudioPlus\Services\VideoInvoice;
use Cache;
use Modules\WTIJobBoard\Entities\JobRequest;
use Modules\WTIJobBoard\Entities\JobRequestCategory;
use Modules\WTIJobBoard\Entities\JobRequestTrack;
use Modules\WTIJobBoard\Entities\JobRequestTrackMeta;
use Modules\WTIJobBoard\Services\ProductService;
use App\Traits\SendMail;
class StudioPlusVideoController extends Controller
{
use DispatchesJobs;
use DispatchesJobs, SendMail;
private $storageClient;
private $bucketName;
@@ -1383,6 +1390,91 @@ class StudioPlusVideoController extends Controller
]);
}
public function createAccount(Request $request, StudioPlusVideo $video)
{
try {
//lets create the user account first
$password = Str::random(10);
$user = User::create([
'email' => $request->email,
'password' => Hash::make($password),
'role_id' => 4
]);
$user->company()->create([]);
$category = JobRequestCategory::latest()->first();
$job_request = JobRequest::create([
'client_id' => $user->id,
'studio_plus_videos_id' => $video->id,
'source_id' => 1, //AMAZON
'title' => $video->product_name,
'type' => $category->id,
'status' => 'publish',
'job_status' => 'Completed',
'track_package_status' => 'Completed',
'credits' => 0,
'credit_type' => 'subscription',
'is_approved' => 1,
]);
$product = (new AmazonProductService)->getProductDetails($video->asin);
$job_request->product()->create([
'asin' => $video->asin,
'name' => $video->product_name,
'brand' => isset($product['brand']) ? $product['brand'] : null,
'category' => isset($product['category']->name) ? $product['category']->name : null,
'price' => isset($product['price']) ? $product['price'] : null,
'reviews' => isset($product['amazon_total_reviews']) ? $product['amazon_total_reviews'] : null,
'image' => isset($product['image']->link) ? $product['image']->link : null
]);
JobRequestTrack::insert([
['job_request_id' => $job_request->id, 'status_id' => 1],
['job_request_id' => $job_request->id, 'status_id' => 2]
]);
$complete_track = new JobRequestTrack();
$complete_track->job_request_id = $job_request->id;
$complete_track->status_id = 5;
$complete_track->save();
$meta = new JobRequestTrackMeta();
$meta->track_id = $complete_track->id;
$meta->name = 'fulfilled_at';
$meta->value = \Carbon\Carbon::now()->format('Y-m-d H:i:s');
$meta->save();
$video->job_request_id = $job_request->id;
$video->update();
$video->load([
'thumbnail',
'thumbnails',
'videoType',
'otts.links',
'category',
'asinData',
'channel.user.staff',
'urls'
]);
$this->sendReachoutAccountMail($user->email,$password);
return response()->json([
'message' => 'Reachout account successfully created and emailed to the client',
'video' => $video,
]);
} catch (\Exception $e) {
return response()->json([
'message' => $e->getMessage()
], 400);
}
}
public function getCustomTags()
{
$tags = [];