mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-07-14 00:02:05 -04:00
295 lines
11 KiB
PHP
295 lines
11 KiB
PHP
<?php
|
|
|
|
namespace Modules\PixelMe\Http\Controllers;
|
|
|
|
use Illuminate\Contracts\Support\Renderable;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\PixelMe\Services\CommonService;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Modules\PixelMe\Entities\UserMeta;
|
|
|
|
class PixelMeController extends Controller
|
|
{
|
|
private $common_service;
|
|
|
|
public function __construct(CommonService $common_service)
|
|
{
|
|
$this->common_service = $common_service;
|
|
}
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
* @return Renderable
|
|
*/
|
|
public function index()
|
|
{
|
|
$profiles_meta = \Modules\PixelMe\Entities\UserMeta::where('user_id', auth()->id())->where('name', 'profiles')->first();
|
|
|
|
if (!$profiles_meta) {
|
|
return redirect()->route('frontend.customer_profile')->with('pixelme', true);
|
|
}
|
|
|
|
return view('pixelme::index');
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
* @return Renderable
|
|
*/
|
|
public function create()
|
|
{
|
|
return view('pixelme::create');
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
* @param Request $request
|
|
* @return Renderable
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Show the specified resource.
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function show($id)
|
|
{
|
|
return view('pixelme::show');
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
return view('pixelme::edit');
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
* @param Request $request
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
//
|
|
}
|
|
|
|
public function connectAmazon() {
|
|
Log::channel('pixelme')->info('Attempting to connect to amazon.');
|
|
Log::channel('pixelme')->info('Checking for user workspace.');
|
|
$workspace_meta = UserMeta::where('user_id', auth()->id())->where('name', 'workspace')->first();
|
|
|
|
if ($workspace_meta) {
|
|
Log::channel('pixelme')->info('User workspace found.');
|
|
return $this->common_service->connectAmazon();
|
|
}
|
|
|
|
Log::channel('pixelme')->info('No existing user workspace found.');
|
|
|
|
return response()->json([
|
|
'message' => 'No current workspace created for the user. Please create one.'
|
|
], 403);
|
|
}
|
|
|
|
public function createWorkspace(Request $request)
|
|
{
|
|
Log::channel('pixelme')->info('Creating workspace.');
|
|
$user = auth()->user();
|
|
|
|
if ($user) {
|
|
Log::channel('pixelme')->info('User found.');
|
|
Log::channel('pixelme')->info('Checking existing user workspace.');
|
|
$workspace_meta = UserMeta::where('user_id', $user->id)->where('name', 'workspace')->first();
|
|
|
|
if (!$workspace_meta) {
|
|
Log::channel('pixelme')->info('User workspace not found.');
|
|
$name = $user->first_name . ' ' . $user->last_name;
|
|
$workspace = $this->common_service->createWorkspace($name);
|
|
|
|
if ($workspace) {
|
|
Log::channel('pixelme')->info('User workspace has been successfully created.');
|
|
$workspace_meta = new UserMeta();
|
|
$workspace_meta->user_id = auth()->id();
|
|
$workspace_meta->name = 'workspace';
|
|
$workspace_meta->meta = json_encode($workspace);
|
|
$workspace_meta->save();
|
|
Log::channel('pixelme')->info('Workspace meta data has been stored with ID #' . $workspace_meta->id);
|
|
|
|
return response()->json([
|
|
'message' => 'Workspace successfully created.',
|
|
'workspace' => $workspace
|
|
]);
|
|
}
|
|
|
|
return response()->json([
|
|
'message' => 'Failed to create workspace.'
|
|
], 400);
|
|
}
|
|
else {
|
|
Log::channel('pixelme')->info('User workspace already created.');
|
|
|
|
return response()->json([
|
|
'message' => 'The user already has workspace.'
|
|
], 403);
|
|
}
|
|
}
|
|
|
|
Log::channel('pixelme')->info('No logged in user.');
|
|
Log::channel('pixelme')->info('Workspace not created.');
|
|
|
|
return response()->json([
|
|
'message' => 'Please log in to create workspace.'
|
|
], 404);
|
|
}
|
|
|
|
public function getProducts(Request $request) {
|
|
return $this->common_service->getProducts();
|
|
}
|
|
|
|
public function getCampaigns(Request $request) {
|
|
return $this->common_service->getCampaigns($request->except('_token'));
|
|
}
|
|
|
|
public function getMetrics(Request $request) {
|
|
return $this->common_service->getMetrics($request->except('_token'));
|
|
}
|
|
|
|
public function amazonAuthCallback(Request $request)
|
|
{
|
|
$connected = false;
|
|
$user_id = auth()->id();
|
|
$amazon_marketplace_id = 'ATVPDKIKX0DER'; // Amazon US (.com)
|
|
|
|
Log::channel('pixelme')->info('Redirect to callback from Amazon.');
|
|
$code_meta = new UserMeta();
|
|
$code_meta->user_id = $user_id;
|
|
$code_meta->name = 'auth_code';
|
|
$code_meta->value = $request->code;
|
|
$code_meta->save();
|
|
Log::channel('pixelme')->info('Auth code response from Amazon stored.');
|
|
|
|
try {
|
|
$auth_meta = new UserMeta();
|
|
$auth_meta->user_id = $user_id;
|
|
$auth_meta->name = 'amazon_auth';
|
|
$auth_meta->meta = json_encode($request->all());
|
|
$auth_meta->save();
|
|
Log::channel('pixelme')->info('Amazon auth response stored.');
|
|
}
|
|
catch (\Exception $ex) {}
|
|
|
|
$provider = $this->common_service->validateAmazonAuth($request->code, $amazon_marketplace_id);
|
|
|
|
if ($provider) {
|
|
Log::channel('pixelme')->info('Validation successful.');
|
|
$provider_meta = new UserMeta();
|
|
$provider_meta->user_id = $user_id;
|
|
$provider_meta->name = 'provider';
|
|
$provider_meta->meta = json_encode($provider);
|
|
$provider_meta->save();
|
|
Log::channel('pixelme')->info('Validation response has been stored with ID #' . $provider_meta->id);
|
|
Log::channel('pixelme')->info('Checking for user workspace.');
|
|
$workspace_meta = UserMeta::where('user_id', $user_id)->where('name', 'workspace')->first();
|
|
|
|
if ($workspace_meta) {
|
|
Log::channel('pixelme')->info('User workspace found.');
|
|
Log::channel('pixelme')->info('Decoding workspace meta data.');
|
|
$workspace = json_decode($workspace_meta->meta);
|
|
$account_id = $workspace->account->id;
|
|
Log::channel('pixelme')->info('Workspace account ID #' . $account_id);
|
|
|
|
$this->common_service->listProfiles($account_id, $provider);
|
|
$profiles = $this->common_service->createProductProvider($account_id, $provider);
|
|
|
|
if ($profiles) {
|
|
Log::channel('pixelme')->info('Create product provider was successfull for account ID #' . $account_id);
|
|
Log::channel('pixelme')->info('Storing profiles meta data.');
|
|
$profiles_meta = new UserMeta();
|
|
$profiles_meta->user_id = $user_id;
|
|
$profiles_meta->name = 'profiles';
|
|
$profiles_meta->meta = json_encode($profiles);
|
|
$profiles_meta->save();
|
|
Log::channel('pixelme')->info('Profiles meta data has been stored.');
|
|
|
|
$connected = true;
|
|
}
|
|
else {
|
|
Log::channel('pixelme')->info('Failed to create product provider.');
|
|
}
|
|
}
|
|
}
|
|
|
|
return redirect()->route('pixelme.index')->with('connected', $connected);
|
|
}
|
|
|
|
public function authCallback(Request $request)
|
|
{
|
|
Log::channel('pixelme')->info('From authCallback');
|
|
Log::channel('pixelme')->info('Validation successful.');
|
|
|
|
$connected = false;
|
|
$user_id = auth()->id();
|
|
$provider = $request->all();
|
|
|
|
if ($provider) {
|
|
$provider_meta = new UserMeta();
|
|
$provider_meta->user_id = $user_id;
|
|
$provider_meta->name = 'provider';
|
|
$provider_meta->meta = json_encode($provider);
|
|
$provider_meta->save();
|
|
Log::channel('pixelme')->info('Validation response has been stored with ID #' . $provider_meta->id);
|
|
Log::channel('pixelme')->info('Checking for user workspace.');
|
|
|
|
$workspace_meta = UserMeta::where('user_id', $user_id)->where('name', 'workspace')->first();
|
|
|
|
if ($workspace_meta) {
|
|
Log::channel('pixelme')->info('User workspace found.');
|
|
Log::channel('pixelme')->info('Decoding workspace meta data.');
|
|
$workspace = json_decode($workspace_meta->meta);
|
|
$account_id = $workspace->account->id;
|
|
Log::channel('pixelme')->info('Workspace account ID #' . $account_id);
|
|
|
|
$this->common_service->listProfiles($account_id, $provider);
|
|
$profiles = $this->common_service->createProductProvider($account_id, $provider);
|
|
|
|
if ($profiles) {
|
|
Log::channel('pixelme')->info('Create product provider was successfull for account ID #' . $account_id);
|
|
Log::channel('pixelme')->info('Storing profiles meta data.');
|
|
$profiles_meta = new UserMeta();
|
|
$profiles_meta->user_id = $user_id;
|
|
$profiles_meta->name = 'profiles';
|
|
$profiles_meta->meta = json_encode($profiles);
|
|
$profiles_meta->save();
|
|
Log::channel('pixelme')->info('Profiles meta data has been stored.');
|
|
|
|
$connected = true;
|
|
}
|
|
else {
|
|
Log::channel('pixelme')->info('Failed to create product provider.');
|
|
}
|
|
}
|
|
}
|
|
|
|
return redirect()->route('pixelme.index')->with('connected', $connected);
|
|
}
|
|
}
|