HEX
Server: Apache
System: Linux amsngx344.inmotionhosting.com 4.18.0-553.40.1.lve.el8.x86_64 #1 SMP Wed Feb 12 18:54:57 UTC 2025 x86_64
User: raniho6 (2736)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/raniho6/public_html/raniworks.stream/app/Http/Controllers/SettingsController.php
<?php

namespace App\Http\Controllers;

use App\Models\Mail\EmailTest;
use App\Models\Workspace;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Auth;
use App\Models\Utility;
use Illuminate\Support\Facades\Validator;

class SettingsController extends Controller
{
    public function index()
    {
        $user = \Auth::user();
        if ($user->type == 'admin') {
            $workspace = new Workspace();
            // $settings = Utility::getcompanySettings($currentWorkspace->id);
            return view('setting', compact('workspace'));
        } else {
            return redirect()->back()->with('error', __('Something is wrong'));
        }
    }

    public function store(Request $request)
    {

        $user = Auth::user();
        if ($user->type == 'admin') {
            $dir = 'logo/';
            if ($request->favicon) {
                $logo_favicon_Name = 'favicon.png';
                // $request->validate(['favicon' => 'required|image|mimes:png|max:204800']);
                $validator = \Validator::make($request->all(), [
                    'favicon' => 'required|image|mimes:png,jpg,jpeg',

                ]);
                if ($validator->fails()) {

                    $messages = $validator->getMessageBag();

                    return redirect()->back()->with('error', "logo image must have  png file.");
                }

                $path = Utility::upload_file($request, 'favicon', $logo_favicon_Name, $dir, []);
                if ($path['flag'] == 1) {
                    $favicon = $path['url'];
                } else {
                    return redirect()->back()->with('error', __($path['msg']));
                }

                // $request->favicon->storeAs('logo', 'favicon.png');
            }
            if ($request->logo_blue) {
                $logo_dark_Name = 'logo-light.png';
                // $request->validate(['logo_blue' => 'required|image|mimes:png|max:204800']);


                $validator = \Validator::make($request->all(), [
                    'logo_blue' => 'required|image|mimes:png,jpg,jpeg',

                ]);
                if ($validator->fails()) {

                    $messages = $validator->getMessageBag();

                    return redirect()->back()->with('error', "logo image must have  png file.");
                }

                $path = Utility::upload_file($request, 'logo_blue', $logo_dark_Name, $dir, []);
                if ($path['flag'] == 1) {
                    $logo_blue = $path['url'];
                } else {
                    return redirect()->back()->with('error', __($path['msg']));
                }
            }
            if ($request->logo_white) {
                $logo_white_Name = 'logo-dark.png';
                // $request->validate(['logo_white' => 'required|image|mimes:png|max:204800']);

                $validator = \Validator::make($request->all(), [
                    'logo_white' => 'required|image|mimes:png,jpg,jpeg',

                ]);
                if ($validator->fails()) {

                    $messages = $validator->getMessageBag();

                    return redirect()->back()->with('error', "logo image must have  png file.");
                }


                $path = Utility::upload_file($request, 'logo_white', $logo_white_Name, $dir, []);
                if ($path['flag'] == 1) {
                    $logo_white = $path['url'];
                } else {
                    return redirect()->back()->with('error', __($path['msg']));
                }
            }

            $rules = [
                'app_name' => 'required|string|max:50',
                'default_language' => 'required|string|max:50',
                'footer_text' => 'required|string|max:50',
            ];

            $request->validate($rules);
            $cookie_text =   (!isset($request->cookie_text) && empty($request->cookie_text)) ? '' : $request->cookie_text;


            // $arrEnv = [

            //     // 'APP_NAME' => $request->app_name,
            //     //'DEFAULT_LANG' => $request->default_language,
            //     // 'FOOTER_TEXT' => $request->footer_text,
            //     // 'DISPLAY_LANDING' => $request->display_landing ? 'on' : 'off',
            //     // 'SITE_RTL' => !isset($request->SITE_RTL) ? 'off' : 'on',
            //     // 'SIGNUP_BUTTON' => !isset($request->SIGNUP_BUTTON) ? 'off' : 'on',

            // ];
            // Utility::setEnvironmentValue($arrEnv);
            // Artisan::call('config:cache');
            // Artisan::call('config:clear');

            $post['app_name'] = $request->app_name;
            $post['footer_text'] = $request->footer_text;
            $post['default_lang'] = $request->default_language;
            $post['display_landing'] = $request->display_landing ? 'on' : 'off';
            $post['site_rtl'] = $request->SITE_RTL ?? 'off';
            $post['signup_button'] = !isset($request->SIGNUP_BUTTON) ? 'off' : 'on';
            $color = (!empty($request->color)) ? $request->color : 'theme-3';
            $post['color'] = $color;
            if (isset($request->color) && $request->color_flag == 'false') {
                $post['color'] = $request->color;
                $post['color_flag'] = $request->color_flag;
            } else {
                $post['color'] = $request->custom_color;
                $post['color_flag'] = $request->color_flag;
            }
            $cust_theme_bg = (!empty($request->cust_theme_bg)) ? 'on' : 'off';
            $post['cust_theme_bg'] = $cust_theme_bg;
            $cust_darklayout = !empty($request->cust_darklayout) ? 'on' : 'off';
            $post['cust_darklayout'] = $cust_darklayout;

            $email_verification = !empty($request->email_verification) ? 'on' : 'off';
            $post['email_verification'] = $email_verification;
            if (isset($post) && !empty($post) && count($post) > 0) {
                $created_at = date('Y-m-d H:i:s');
                $updated_at = date('Y-m-d H:i:s');
                $created_by = 2;
                foreach ($post as $key => $data) {
                    \DB::insert('insert into settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`)', [
                        $data,
                        $key,
                        $created_at,
                        $updated_at,
                    ]);
                }
            }

            return redirect()->back()->with('success', __('Setting updated successfully'));
            // if ($this->setEnvironmentValue($arrEnv)) {
            //     return redirect()->back()->with('success', __('Setting updated successfully'));
            // } else {
            //     return redirect()->back()->with('error', __('Something is wrong'));
            // }
        } else {
            return redirect()->back()->with('error', __('Something is wrong'));
        }
    }

    public function seosetting(Request $request)
    {
        $validator = \Validator::make(
            $request->all(),
            [
                'meta_keywords' => 'required',
                'meta_description' => 'required',
                'meta_image' => 'required',
            ]
        );
        if ($validator->fails()) {
            $messages = $validator->getMessageBag();
            return redirect()->back()->with('error', $messages->first());
        }

        if ($request->meta_image) {
            $validator = \Validator::make(
                $request->all(),
                [
                    'meta_image' => 'required',
                ]
            );

            if ($validator->fails()) {
                $messages = $validator->getMessageBag();
                return redirect()->back()->with('error', $messages->first());
            }

            $img_name = time() . '_' . 'meta_image.png';
            $dir = 'uploads/logo/';
            $validation = [
                'max:' . '20480',
            ];
            $path = Utility::upload_file($request, 'meta_image', $img_name, $dir, $validation);

            if ($path['flag'] == 1) {
                $logo_dark = $path['url'];
            } else {
                return redirect()->back()->with('error', __($path['msg']));
            }
            $post['meta_image']  = $img_name;
        }
        $created_at = date('Y-m-d H:i:s');
        $updated_at = date('Y-m-d H:i:s');

        $post['meta_keywords']            = $request->meta_keywords;
        $post['meta_description']            = $request->meta_description;

        foreach ($post as $key => $data) {
            \DB::insert('insert into settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`)', [
                $data,
                $key,
                $created_at,
                $updated_at,
            ]);
        }
        return redirect()->back()->with('success', 'Storage setting successfully updated.');
    }

    public function saveCookieSettings(Request $request)
    {
        $validator = \Validator::make(
            $request->all(),
            [
                'cookie_title' => 'required',
                'cookie_description' => 'required',
                'strictly_cookie_title' => 'required',
                'strictly_cookie_description' => 'required',
                'more_information_title' => 'required',
                'contactus_url' => 'required',
            ]
        );

        $post = $request->all();

        unset($post['_token']);

        if ($request->enable_cookie) {
            $post['enable_cookie'] = 'on';
        } else {
            $post['enable_cookie'] = 'off';
        }

        if ($request->cookie_logging) {
            $post['cookie_logging'] = 'on';
        } else {
            $post['cookie_logging'] = 'off';
        }

        if ($request->cookie_logging) {
            $post['necessary_cookies'] = 'on';
        } else {
            $post['necessary_cookies'] = 'off';
        }

        if ($request->cookie_title) {
            $post['cookie_title'] = $request->cookie_title;
        }
        if ($request->cookie_description) {
            $post['cookie_description'] = $request->cookie_description;
        }

        if ($request->strictly_cookie_title) {
            $post['strictly_cookie_title'] = $request->strictly_cookie_title;
        }

        if ($request->strictly_cookie_description) {
            $post['strictly_cookie_description'] = $request->strictly_cookie_description;
        }

        if ($request->more_information_title) {
            $post['more_information_title'] = $request->more_information_title;
        }

        if ($request->contactus_url) {
            $post['contactus_url'] = $request->contactus_url;
        }

        $created_at = date('Y-m-d H:i:s');
        $updated_at = date('Y-m-d H:i:s');

        foreach ($post as $key => $data) {
            \DB::insert('insert into settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)', [
                $data,
                $key,
                $created_at,
                $updated_at,
            ]);
        }
        return redirect()->back()->with('success', 'Cookie setting successfully saved.');
    }



    public function CookieConsent(Request $request)
    {

        $settings = Utility::getAdminPaymentSettings();

        if ($settings['enable_cookie'] == "on" && $settings['cookie_logging'] == "on") {
            $allowed_levels = ['necessary', 'analytics', 'targeting'];
            $levels = array_filter($request['cookie'], function ($level) use ($allowed_levels) {
                return in_array($level, $allowed_levels);
            });
            $whichbrowser = new \WhichBrowser\Parser($_SERVER['HTTP_USER_AGENT']);
            // Generate new CSV line
            $browser_name = $whichbrowser->browser->name ?? null;
            $os_name = $whichbrowser->os->name ?? null;
            $browser_language = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? mb_substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : null;
            $device_type = Utility::get_device_type($_SERVER['HTTP_USER_AGENT']);

            $ip = $_SERVER['REMOTE_ADDR'];
            $ip = '49.36.83.154';
            $query = @unserialize(file_get_contents('http://ip-api.com/php/' . $ip));


            $date = (new \DateTime())->format('Y-m-d');
            $time = (new \DateTime())->format('H:i:s') . ' UTC';


            $new_line = implode(',', [
                $ip, $date, $time, json_encode($request['cookie']), $device_type, $browser_language, $browser_name, $os_name,
                isset($query) ? $query['country'] : '', isset($query) ? $query['region'] : '', isset($query) ? $query['regionName'] : '', isset($query) ? $query['city'] : '', isset($query) ? $query['zip'] : '', isset($query) ? $query['lat'] : '', isset($query) ? $query['lon'] : ''
            ]);

            if (!file_exists(storage_path() . '/uploads/sample/data.csv')) {

                $first_line = 'IP,Date,Time,Accepted cookies,Device type,Browser language,Browser name,OS Name,Country,Region,RegionName,City,Zipcode,Lat,Lon';
                file_put_contents(storage_path() . '/uploads/sample/data.csv', $first_line . PHP_EOL, FILE_APPEND | LOCK_EX);
            }
            file_put_contents(storage_path() . '/uploads/sample/data.csv', $new_line . PHP_EOL, FILE_APPEND | LOCK_EX);

            return response()->json('success');
        }
        return response()->json('error');
    }
    public function emailSettingStore(Request $request)
    {
        $user = \Auth::user();
        if ($user->type == 'admin') {
            $rules = [
                'mail_driver' => 'required|string|max:50',
                'mail_host' => 'required|string|max:50',
                'mail_port' => 'required|string|max:50',
                'mail_username' => 'required|string|max:50',
                'mail_password' => 'required|string|max:255',
                'mail_encryption' => 'required|string|max:50',
                'mail_from_address' => 'required|string|max:50',
                'mail_from_name' => 'required|string|max:50',
            ];

            $request->validate($rules);

            // $arrEnv = [

            //     'MAIL_DRIVER' => $request->mail_driver,
            //     'MAIL_HOST' => $request->mail_host,
            //     'MAIL_PORT' => $request->mail_port,
            //     'MAIL_USERNAME' => $request->mail_username,
            //     'MAIL_PASSWORD' => $request->mail_password,
            //     'MAIL_ENCRYPTION' => $request->mail_encryption,
            //     'MAIL_FROM_ADDRESS' => $request->mail_from_address,
            //     'MAIL_FROM_NAME' => $request->mail_from_name,
            // ];
            // Utility::setEnvironmentValue($arrEnv);
            // Artisan::call('config:cache');
            // Artisan::call('config:clear');
            //$this->setEnvironmentValue($arrEnv);


            $post['mail_driver'] = $request->mail_driver;
            $post['mail_host'] = $request->mail_host;
            $post['mail_port'] = $request->mail_port;
            $post['mail_username'] = $request->mail_username;
            $post['mail_password'] = $request->mail_password;
            $post['mail_encryption'] = $request->mail_encryption;
            $post['mail_from_address'] = $request->mail_from_address;
            $post['mail_from_name'] = $request->mail_from_name;
            $created_at = date('Y-m-d H:i:s');
            $updated_at = date('Y-m-d H:i:s');

            foreach ($post as $key => $data) {
                \DB::insert('insert into settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`)', [
                    $data,
                    $key,
                    $created_at,
                    $updated_at,
                ]);
            }
            return redirect()->back()->with('success', __('Setting updated successfully'));
        } else {
            return redirect()->back()->with('error', __('Something is wrong'));
        }
    }

    public function pusherSettingStore(Request $request)
    {
        $user = \Auth::user();
        if ($user->type == 'admin') {
            $rules = [];

            if ($request->enable_chat == 'on' || $request->enable_chat == 'off') {
                $validator = Validator::make(
                    $request->all(),
                    [
                        'pusher_app_id' => 'required|string|max:50',
                        'pusher_app_key' => 'required|string|max:50',
                        'pusher_app_key' => 'required|string|max:50',
                        'pusher_app_cluster' => 'required|string|max:50'
                    ]
                );
            }
            if ($validator->fails()) {
                $messages = $validator->getMessageBag();

                return redirect()->back()->with('error', $messages->first());
            }

            // if ($request->enable_chat == 'on') {
            //     $rules['pusher_app_id']      = 'required|string|max:50';
            //     $rules['pusher_app_key']     = 'required|string|max:50';
            //     $rules['pusher_app_key']  =  required|string|max:50';
            //     $rules['pusher_app_cluster'] = 'required|string|max:50';
            // }

            // $request->validate($rules);

            // $arrEnv = [
            //     'CHAT_MODULE' => $request->enable_chat,
            //     'PUSHER_APP_ID' => $request->pusher_app_id,
            //     'PUSHER_APP_KEY' => $request->pusher_app_key,
            //     'PUSHER_APP_SECRET' => $request->pusher_app_secret,
            //     'PUSHER_APP_CLUSTER' => $request->pusher_app_cluster,
            // ];

            // //   Artisan::call('config:cache');
            // //   Artisan::call('config:clear');

            // if ($this->setEnvironmentValue($arrEnv)) {
            //     return redirect()->back()->with('success', __('Setting updated successfully'));
            // } else {
            //     return redirect()->back()->with('error', __('Something is wrong'));
            // }
            $post['enable_chat'] = $request->enable_chat;
            $post['pusher_app_id'] = $request->pusher_app_id;
            $post['pusher_app_key'] = $request->pusher_app_key;
            $post['pusher_app_secret'] = $request->pusher_app_secret;
            $post['pusher_app_cluster'] = $request->pusher_app_cluster;


            $created_at = date('Y-m-d H:i:s');
            $updated_at = date('Y-m-d H:i:s');

            foreach ($post as $key => $data) {
                \DB::insert('insert into settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`)', [
                    $data,
                    $key,
                    $created_at,
                    $updated_at,
                ]);
            }

            return redirect()->back()->with('success', __('Setting updated successfully'));
        } else {
            return redirect()->back()->with('error', __('Something is wrong'));
        }
    }

    public static function setEnvironmentValue(array $values)
    {
        $envFile = app()->environmentFilePath();
        $str     = file_get_contents($envFile);
        if (count($values) > 0) {
            foreach ($values as $envKey => $envValue) {
                $keyPosition       = strpos($str, "{$envKey}=");
                $endOfLinePosition = strpos($str, "\n", $keyPosition);
                $oldLine           = substr($str, $keyPosition, $endOfLinePosition - $keyPosition);

                if (!$keyPosition || !$endOfLinePosition || !$oldLine) {
                    $str .= "{$envKey}='{$envValue}'\n";
                } else {
                    $str = str_replace($oldLine, "{$envKey}='{$envValue}'", $str);
                }

                // if($keyPosition!=0 || !$endOfLinePosition || !$oldLine)
                // {
                //     $str .= "{$envKey}='{$envValue}'\n";
                // }
                // else
                // {
                //     $str = str_replace($oldLine, "{$envKey}='{$envValue}'", $str);
                // }
            }
        }
        $str = substr($str, 0, -1);
        $str .= "\n";

        return file_put_contents($envFile, $str) ? true : false;
    }

    public function testEmail(Request $request)
    {
        // $user = \Auth::user();
        // if ($user->type == 'admin' || $user->type == 'user') {
        //     $data                      = [];
        //     $data['mail_driver']       = $request->mail_driver;
        //     $data['mail_host']         = $request->mail_host;
        //     $data['mail_port']         = $request->mail_port;
        //     $data['mail_username']     = $request->mail_username;
        //     $data['mail_password']     = $request->mail_password;
        //     $data['mail_encryption']   = $request->mail_encryption;
        //     $data['mail_from_address'] = $request->mail_from_address;
        //     $data['mail_from_name']    = $request->mail_from_name;

        //     return view('users.test_email', compact('data'));
        // } else {
        //     return response()->json(['error' => __('Permission Denied.')], 401);
        // }
        $user = Auth::user();
        if ($user->type == 'admin') {
            $settings = Utility::getAdminPaymentSettings();
            $data                      = [];
            $data['mail_driver']       = $settings['mail_driver'] ? $settings['mail_driver'] : $request->mail_driver;
            $data['mail_host']         = $settings['mail_host'] ? $settings['mail_host'] : $request->mail_host;
            $data['mail_port']         = $settings['mail_port'] ? $settings['mail_port'] : $request->mail_port;
            $data['mail_username']     = $settings['mail_username'] ? $settings['mail_username'] : $request->mail_username;
            $data['mail_password']     = $settings['mail_password'] ? $settings['mail_password'] : $request->mail_password;
            $data['mail_encryption']   = $settings['mail_encryption'] ? $settings['mail_encryption'] : $request->mail_encryption;
            $data['mail_from_address'] = $settings['mail_from_address'] ? $settings['mail_from_address'] : $request->mail_from_address;
            $data['mail_from_name']    = $settings['mail_from_name'] ? $settings['mail_from_name'] : $request->mail_from_name;
            return view('users.test_email', compact('data'));
        } else if ($user->type == 'user') {
            $user = Auth::user();
            $settings = Utility::getPaymentSetting($user->currant_workspace);
            $data                      = [];
            $data['mail_driver']       = $settings['mail_driver'] ? $settings['mail_driver'] : $request->mail_driver;
            $data['mail_host']         = $settings['mail_host'] ? $settings['mail_host'] : $request->mail_host;
            $data['mail_port']         = $settings['mail_port'] ? $settings['mail_port'] : $request->mail_port;
            $data['mail_username']     = $settings['mail_username'] ? $settings['mail_username'] : $request->mail_username;
            $data['mail_password']     = $settings['mail_password'] ? $settings['mail_password'] : $request->mail_password;
            $data['mail_encryption']   = $settings['mail_encryption'] ? $settings['mail_encryption'] : $request->mail_encryption;
            $data['mail_from_address'] = $settings['mail_from_address'] ? $settings['mail_from_address'] : $request->mail_from_address;
            $data['mail_from_name']    = $settings['mail_from_name'] ? $settings['mail_from_name'] : $request->mail_from_name;
            return view('users.test_email', compact('data'));
        } else {
            return response()->json(['error' => __('Permission Denied.')], 401);
        }
    }

    public function testEmailSend(Request $request)
    {
        $validator = \Validator::make($request->all(), [
            'email' => 'required|email',
            'mail_driver' => 'required',
            'mail_host' => 'required',
            'mail_port' => 'required',
            'mail_username' => 'required',
            'mail_password' => 'required',
            'mail_from_address' => 'required',
            'mail_from_name' => 'required',
        ]);
        if ($validator->fails()) {

            $messages = $validator->getMessageBag();
            return response()->json(['success' => false, 'message' => 'Please Add The Email Credentails']);
            // return redirect()->back()->with('error', $messages->first());
        }

        try {
            config([
                'mail.driver' => $request->mail_driver,
                'mail.host' => $request->mail_host,
                'mail.port' => $request->mail_port,
                'mail.encryption' => $request->mail_encryption,
                'mail.username' => $request->mail_username,
                'mail.password' => $request->mail_password,
                'mail.from.address' => $request->mail_from_address,
                'mail.from.name' => $request->mail_from_name,
            ]);
            Mail::to($request->email)->send(new EmailTest());
        } catch (\Exception $e) {

            return response()->json([
                'is_success' => false,
                'message' => $e->getMessage(),
            ]);
        }

        return response()->json([
            'is_success' => true,
            'message' => __('Email send Successfully'),
        ]);
    }
    public function recaptchaSettingStore(Request $request)
    {
        $user = \Auth::user();
        $rules = [];

        if ($request->recaptcha_module == 'on' || $request->recaptcha_module == 'off') {
            $rules['google_recaptcha_key'] = 'required|string|max:50';
            $rules['google_recaptcha_secret'] = 'required|string|max:50';
        }

        $validator = \Validator::make(
            $request->all(),
            $rules
        );
        if ($validator->fails()) {
            $messages = $validator->getMessageBag();

            return redirect()->back()->with('error', $messages->first());
        }

        // $arrEnv = [
        //     'RECAPTCHA_MODULE' => $request->recaptcha_module,
        //     'NOCAPTCHA_SITEKEY' => $request->google_recaptcha_key,
        //     'NOCAPTCHA_SECRET' => $request->google_recaptcha_secret,
        // ];

        // if ($this->setEnvironmentValue($arrEnv)) {
        //     return redirect()->back()->with('success', __('Recaptcha Settings updated successfully'));
        // } else {
        //     return redirect()->back()->with('error', __('Something is wrong'));
        // }

        $post['recaptcha_module'] = $request->recaptcha_module;
        $post['google_recaptcha_key'] = $request->google_recaptcha_key;
        $post['google_recaptcha_secret'] = $request->google_recaptcha_secret;


        $created_at = date('Y-m-d H:i:s');
        $updated_at = date('Y-m-d H:i:s');

        foreach ($post as $key => $data) {
            \DB::insert('insert into settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`)', [
                $data,
                $key,
                $created_at,
                $updated_at,
            ]);
        }
        return redirect()->back()->with('success', __('Setting updated successfully'));
    }


    public function storageSettingStore(Request $request)
    {

        if (isset($request->storage_setting) && $request->storage_setting == 'local') {

            $request->validate(
                [

                    'local_storage_validation' => 'required',
                    'local_storage_max_upload_size' => 'required',
                ]
            );

            $post['storage_setting'] = $request->storage_setting;
            $local_storage_validation = implode(',', $request->local_storage_validation);
            $post['local_storage_validation'] = $local_storage_validation;
            $post['local_storage_max_upload_size'] = $request->local_storage_max_upload_size;
        }

        if (isset($request->storage_setting) && $request->storage_setting == 's3') {
            $request->validate(
                [
                    's3_key'                  => 'required',
                    's3_secret'               => 'required',
                    's3_region'               => 'required',
                    's3_bucket'               => 'required',
                    's3_url'                  => 'required',
                    's3_endpoint'             => 'required',
                    's3_max_upload_size'      => 'required',
                    's3_storage_validation'   => 'required',
                ]
            );
            $post['storage_setting']            = $request->storage_setting;
            $post['s3_key']                     = $request->s3_key;
            $post['s3_secret']                  = $request->s3_secret;
            $post['s3_region']                  = $request->s3_region;
            $post['s3_bucket']                  = $request->s3_bucket;
            $post['s3_url']                     = $request->s3_url;
            $post['s3_endpoint']                = $request->s3_endpoint;
            $post['s3_max_upload_size']         = $request->s3_max_upload_size;
            $s3_storage_validation              = implode(',', $request->s3_storage_validation);
            $post['s3_storage_validation']      = $s3_storage_validation;
        }

        if (isset($request->storage_setting) && $request->storage_setting == 'wasabi') {
            $request->validate(
                [
                    'wasabi_key'                    => 'required',
                    'wasabi_secret'                 => 'required',
                    'wasabi_region'                 => 'required',
                    'wasabi_bucket'                 => 'required',
                    'wasabi_url'                    => 'required',
                    'wasabi_root'                   => 'required',
                    'wasabi_max_upload_size'        => 'required',
                    'wasabi_storage_validation'     => 'required',
                ]
            );
            $post['storage_setting']            = $request->storage_setting;
            $post['wasabi_key']                 = $request->wasabi_key;
            $post['wasabi_secret']              = $request->wasabi_secret;
            $post['wasabi_region']              = $request->wasabi_region;
            $post['wasabi_bucket']              = $request->wasabi_bucket;
            $post['wasabi_url']                 = $request->wasabi_url;
            $post['wasabi_root']                = $request->wasabi_root;
            $post['wasabi_max_upload_size']     = $request->wasabi_max_upload_size;
            $wasabi_storage_validation          = implode(',', $request->wasabi_storage_validation);
            $post['wasabi_storage_validation']  = $wasabi_storage_validation;
        }
        $created_at = date('Y-m-d H:i:s');
        $updated_at = date('Y-m-d H:i:s');
        foreach ($post as $key => $data) {

            $arr = [
                $data,
                $key,
                $created_at,
                $updated_at,

            ];


            \DB::insert(
                'insert into settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?,?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                $arr
            );
        }

        return redirect()->back()->with('success', 'Storage setting successfully updated.');
    }

    public function chatgptkey(Request $request)
    {

        if (\Auth::user()->type == 'admin') {
            $user = \Auth::user();



            if ($request->enable_chatgpt) {
                $post['enable_chatgpt'] = 'on';
                $validator = \Validator::make(
                    $request->all(),
                    [
                        'chatgpt_key' => 'required',
                        'chatgpt_model' => 'required',
                    ]
                );
    
                if ($validator->fails()) {
                    $messages = $validator->getMessageBag();
                    return redirect()->back()->with('error', $messages->first());
                }
            } else {
                $post['enable_chatgpt'] = 'off';
            }



            if (($request->chatgpt_key) && ($request->chatgpt_key !== null)) {
                $post['chatgpt_key'] = $request->chatgpt_key;                
            }else{
                return redirect()->back()->with('error', 'Please Enter ChatGpt Key !!!');
            }

            if(($request->chatgpt_model) && ($request->chatgpt_model !== null)){
                $post['chatgpt_model'] = $request->chatgpt_model;
            }else{
                return redirect()->back()->with('error', 'Please Enter ChatGpt Model Key !!!');
            }

            unset($post['_token']);

            $created_at = date('Y-m-d H:i:s');
            $updated_at = date('Y-m-d H:i:s');

            foreach ($post as $key => $data) {
                $arr = [
                    $data,
                    $key,
                    $created_at,
                    $updated_at,

                ];


                \DB::insert(
                    'insert settings (`value`, `name`,`created_at`,`updated_at`) values (?, ?, ?,?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                    $arr
                );
            }

            return redirect()->back()->with('success', __('ChatGPT key successfully saved.'));
        } else {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }
}