File "SettingsController.php"
Full Path: /home/isoftco/public_html/hrm/app/Http/Controllers/Admin/SettingsController.php
File size: 7.96 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Admin;
use App\Classes\Files;
use App\Classes\Reply;
use App\Http\Controllers\AdminBaseController;
use App\Http\Requests\Admin\Setting\GdprUpdateRequest;
use App\Http\Requests\Admin\Setting\UpdateRequest;
use App\Http\Requests\Admin\SmtpSetting\UpdateSmtpSetting;
use App\Mail\TestEmailSent;
use App\Models\Admin;
use App\Models\Country;
use App\Models\Employee;
use App\Models\Setting;
use App\Models\Company;
use App\Traits\Settings;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;
use Intervention\Image\Facades\Image;
use Intervention\Image\File;
class SettingsController extends AdminBaseController
{
use Settings;
public function __construct()
{
parent::__construct();
$this->settingOpen = 'active';
$this->pageTitle = 'Settings';
}
public function edit()
{
$this->settingActive = 'active';
$this->generalSettingActive = 'active';
$this->setting = Setting::all()->first();
$this->countries = Country::groupBy('currency_code')
->get();
return View::make('admin.settings.edit', $this->data);
}
public function getStripe()
{
$this->stripeSettingActive = 'active';
$this->setting = Setting::all()->first();
return View::make('admin.settings.stripe', $this->data);
}
public function getGdpr()
{
$this->stripeSettingActive = 'active';
$this->setting = Setting::all()->first();
return View::make('admin.settings.gdpr', $this->data);
}
public function getSmtp()
{
$this->smtpSettingActive = 'active';
$this->setting = Setting::first();
return View::make('admin.settings.smtp', $this->data);
}
public function change_language()
{
if (admin()->type == 'admin') {
$setting = Company::findOrFail($this->company_id);
} else {
$setting = Setting::findOrFail($this->setting->id);
}
$data = request()->all();
$setting->update($data);
$output['success'] = 'success';
return Response::json($output, 200);
}
public function update(UpdateRequest $request, $id)
{
$setting = Setting::first();
$data = $request->all();
if ($request->type == 'stripeSetting') {
$data['stripe_status'] = $request->has('stripe_status') && request()->get('stripe_status') == 'on' ? 1 : 0;
$data['paypal_status'] = $request->has('paypal_status') && request()->get('paypal_status') == 'on' ? 1 : 0;
}
if ($request->type != 'stripeSetting' && $request->type != 'smtpSetting') {
$data['system_update'] = $request->has('system_update') && request()->get('system_update') == 'on' ? 1 : 0;
}
unset($data['type']);
if ($request->has('currency')) {
$currencyArray = explode(':', $request->currency);
unset($data['currency']);
$data['currency_symbol'] = $currencyArray[0];
$data['currency'] = $currencyArray[1];
}
$setting->update($data);
if ($request->hasFile('logo')) {
$file = new Files();
$filename = $file->upload($request->file('logo'), 'setting/logo', null, 200, false);
$setting->logo = $filename;
$setting->save();
// return Reply::redirect(route('admin.settings.edit', 'settings'));
}
if ($request->hasFile('favicon')) {
$file = new Files();
$filename = $file->upload($request->file('favicon'), 'setting/favicon', null, null, false);
$setting->favicon = $filename;
$setting->save();
// return Reply::redirect(route('admin.settings.edit', 'settings'));
}
return Reply::redirect(route('admin.settings.edit', 'setting'), 'messages.updateSuccess');
}
public function updateGDPR(GdprUpdateRequest $request)
{
$setting = Setting::first();
$data = $request->all();
if ($data['gdpr'] == $setting->gdpr) {
if ($data['gdpr']) {
return Reply::error('GDPR status is already enabled');
}
return Reply::error('GDPR status is already disabled');
}
DB::beginTransaction();
try {
$setting->update($data);
$columns = new Employee();
$employees = Employee::withoutGlobalScope('company')->get();
$columnsAdmins = new Admin();
$admins = Admin::withoutGlobalScope('company')->get();
// Encypted All the data
foreach ($employees as $employee) {
$employee->preventAttrSet = true;
foreach ($columns->getEncrypted() as $item) {
if ($data['gdpr'] == 1) {
if (!is_null($employee->{$item})) {
$employee->{$item} = encrypt($employee->{$item});
}
} else {
if (!is_null($employee->{$item})) {
$employee->{$item} = decrypt($employee->{$item});
}
}
}
$employee->save();
}
foreach ($admins as $admin) {
$admin->preventAttrSet = true;
foreach ($columnsAdmins->getEncrypted() as $item) {
if ($data['gdpr'] == 1) {
if (!is_null($admin->{$item})) {
$admin->{$item} = encrypt($admin->{$item});
}
} else {
if (!is_null($admin->{$item})) {
$admin->{$item} = decrypt($admin->{$item});
}
}
}
$admin->save();
}
DB::commit();
// all good
} catch (\Exception $e) {
DB::rollback();
return Reply::error('rollback' . $e->getMessage());
}
return Reply::success('messages.updateSuccess');
}
public function updateMailConfig(UpdateSmtpSetting $request)
{
$smtp = Setting::first();
$data = $request->all();
if ($request->mail_encryption == "null") {
$data['mail_encryption'] = null;
}
unset($data['type']);
$smtp->update($data);
$response = $smtp->verifySmtp();
session(['smtp_setting' => $smtp]);
if ($smtp->mail_driver == 'mail') {
return Reply::success(__('messages.updateSuccess'));
}
if ($response['success']) {
return Reply::success($response['message']);
}
// GMAIL SMTP ERROR
$message = __('messages.smtpError') . '<br><br> ';
if ($smtp->mail_host == 'smtp.gmail.com') {
$secureUrl = 'https://myaccount.google.com/lesssecureapps';
$message .= __('messages.smtpSecureEnabled');
$message .= '<a class="font-13" target="_blank" href="' . $secureUrl . '">' . $secureUrl . '</a>';
$message .= '<hr>' . $response['message'];
return Reply::error($message);
}
return Reply::error($message . '<hr>' . $response['message']);
}
public function sendTestEmail(\Illuminate\Http\Request $request)
{
$request->validate([
'test_email' => 'required|email',
]);
$smtp = Setting::first();
$response = $smtp->verifySmtp();
if ($response['success']) {
$this->setMailConfigs();
Mail::to($request->test_email)->send(new TestEmailSent());
return Reply::success('Test mail sent successfully');
}
return Reply::error($response['message']);
}
}