Files
faveo/app/Http/Controllers/Admin/helpdesk/SocialMedia/SocialMediaController.php
2023-01-07 20:34:10 +00:00

109 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\helpdesk\SocialMedia;
use App\Http\Controllers\Controller;
use App\Model\helpdesk\Settings\SocialMedia;
use Exception;
use Illuminate\Http\Request;
class SocialMediaController extends Controller
{
public function __construct()
{
$this->middleware(['auth', 'roles'], ['except' => ['configService']]);
}
public function settings($provider)
{
try {
$social = new SocialMedia();
return view('themes.default1.admin.helpdesk.settings.social-media.settings', compact('social', 'provider'));
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function postSettings($provider, Request $request)
{
$this->validate($request, [
'client_id' => 'required',
'client_secret' => 'required',
'redirect' => 'required|url',
]);
try {
$requests = $request->except('_token');
$this->insertProvider($provider, $requests);
return redirect()->back()->with('success', 'Updated');
} catch (Exception $ex) {
dd($ex);
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function deleteProvider($provider, $requests)
{
$social = new SocialMedia();
$socials = $social->where('provider', $provider)->get();
if ($socials->count() > 0) {
foreach ($socials as $media) {
if (array_key_exists($media->key, $requests)) {
$media->delete();
}
}
}
}
public function insertProvider($provider, $requests = [])
{
$this->deleteProvider($provider, $requests);
$social = new SocialMedia();
foreach ($requests as $key => $value) {
$social->create([
'provider' => $provider,
'key' => $key,
'value' => $value,
]);
}
}
public function index()
{
try {
$social = new SocialMedia();
return view('themes.default1.admin.helpdesk.settings.social-media.index', compact('social'));
} catch (Exception $ex) {
return redirect()->back()->with('fails', $ex->getMessage());
}
}
public function configService()
{
$social = new SocialMedia();
$services = $this->services();
foreach ($services as $service) {
\Config::set("services.$service.client_id", $social->getvalueByKey($service, 'client_id'));
\Config::set("services.$service.client_secret", $social->getvalueByKey($service, 'client_secret'));
\Config::set("services.$service.redirect", $social->getvalueByKey($service, 'redirect'));
}
// dd(\Config::get('services'));
}
public function services()
{
return [
'facebook',
'google',
'github',
'twitter',
'linkedin',
'bitbucket',
];
}
}