page = $pageRepo; $this->gate = $authController; $this->maintenance = $maintenanceService; $this->upload = $fileUploadService; $this->settings = $settingsService; $this->member = $memberRepo; $this->init = $initService; $this->reset = $resetService; } public function handleRequest(Request $request) { $path = explode('/', $request->path()); switch ($path[0]) { case 'init': return $this->initTask($path[1], $request); break; case 'login': return $this->gate->enter($request); break; case 'page': $body = json_decode($request->getContent()); $result = $this->page->create($body); return response()->json($result)->header('Content-Type', 'application/json'); break; case 'settings': if ($path[1] == 'mailer') { return $this->sendNotify($request); } break; case 'upload': $type = null; $result = $result = $this->upload->handleFile($request, $type); //update configs for specfic uploads switch ($request['source']) { case 'avatar-upload': $member = []; $member = session('member'); $member['avatar'] = $result['filePath']; $member = (object) $member; $this->member->update($member); break; case 'background-upload': $this->settings->updateGlobalData('background', $result['filePath']); break; } return $result; break; } } private function initTask($task, $request) { $result = []; switch ($task) { case 'fresh': $result = $this->init->fresh(json_decode($request->getContent())); break; case 'restore': $result = $this->init->restore($request); break; case 'reset': $result = $this->reset->site($request); break; } return response()->json($result)->header('Content-Type', 'application/json'); } private function sendNotify($request) { $result = []; try { Mail::to(env('ADMIN_EMAIL'))->send(new SystemEmail($request->content)); $result = [ 'type' => 'mail_good', 'message' => 'Mail Sent', ]; } catch (TransportException $e) { $result = [ 'type' => 'mail_not_good', 'message' => 'Mail Not Sent. It\'s cool. Just check mail settings in the .env', ]; } return response()->json($result)->header('Content-Type', 'application/json'); } }