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); } }