!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/smabpro.picotech.app/public_html/app/Http/Controllers/   drwxr-xr-x
Free 28.57 GB of 117.98 GB (24.21%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     SystemController.php (95.95 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace App\Http\Controllers;

use 
App\Mail\TestMail;
use 
App\Models\EmailTemplate;
use 
App\Models\ExperienceCertificate;
use 
App\Models\GenerateOfferLetter;
use 
App\Models\IpRestrict;
use 
App\Models\JoiningLetter;
use 
App\Models\Language;
use 
App\Models\NOC;
use 
App\Models\User;
use 
App\Models\Utility;
use 
App\Models\WebhookSetting;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Artisan;
use 
Illuminate\Support\Facades\Auth;
use 
Illuminate\Support\Facades\Config;
use 
Illuminate\Support\Facades\DB;
use 
Illuminate\Support\Facades\File;
use 
Illuminate\Support\Facades\Mail;
use 
Illuminate\Support\Str;

class 
SystemController extends Controller
{
    public function 
index()
    {
        if (
\Auth::user()->can('manage system settings')) {
            
$settings Utility::settings();
            
$admin_payment_setting Utility::getAdminPaymentSetting();
            
// $emailSetting = Utility::settingsById(\Auth::user()->id);
            
$file_size 0;
            foreach (
\File::allFiles(storage_path('/framework')) as $file) {
                
$file_size += $file->getSize();
            }
            
$file_size number_format($file_size 10000004);

            return 
view('settings.index'compact('settings''admin_payment_setting''file_size'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
store(Request $request)
    {

        if (
\Auth::user()->can('manage system settings')) {
            if (
$request->logo_dark) {
                
$logoName 'logo-dark.png';
                
$dir 'uploads/logo/';
                
$validation = [
                    
'mimes:' 'png',
                    
'max:' '20480',
                ];
                
$path Utility::upload_file($request'logo_dark'$logoName$dir, []);
                if (
$path['flag'] == 1) {
                    
$logo $path['url'];
                } else {
                    return 
redirect()->back()->with('error'__($path['msg']));
                }
            }

            if (
$request->logo_light) {

                
$logoName 'logo-light.png';

                
$dir 'uploads/logo';
                
$validation = [
                    
'mimes:' 'png',
                    
'max:' '20480',
                ];
                
$path Utility::upload_file($request'logo_light'$logoName$dir$validation);
                if (
$path['flag'] == 1) {
                    
$logo $path['url'];
                } else {
                    return 
redirect()->back()->with('error'__($path['msg']));
                }
            }

            if (
$request->favicon) {

                
$favicon 'favicon.png';
                
$dir 'uploads/logo';
                
$validation = [
                    
'mimes:' 'png',
                    
'max:' '20480',
                ];

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

            
$settings Utility::settings();

            if (!empty(
$request->title_text) || !empty($request->color) || !empty($request->SITE_RTL)
                || !empty(
$request->footer_text) || !empty($request->default_language) || isset($request->display_landing_page)
                || isset(
$request->gdpr_cookie) || isset($request->enable_signup) || isset($request->email_verification)
                || isset(
$request->color) || !empty($request->cust_theme_bg) || !empty($request->cust_darklayout)) {
                
$post $request->all();

                
$SITE_RTL $request->has('SITE_RTL') ? $request->SITE_RTL 'off';
                
$post['SITE_RTL'] = $SITE_RTL;

                if(isset(
$request->color) && $request->color_flag == 'false')
                {
                    
$post['color'] = $request->color;
                }
                else
                {
                    
$post['color'] = $request->custom_color;
                }

                if (!isset(
$request->display_landing_page)) {
                    
$post['display_landing_page'] = 'off';
                }
                if (!isset(
$request->gdpr_cookie)) {
                    
$post['gdpr_cookie'] = 'off';
                }
                if (!isset(
$request->enable_signup)) {
                    
$post['enable_signup'] = 'off';
                }
                if (!isset(
$request->email_verification)) {
                    
$post['email_verification'] = 'off';
                }


                if (!isset(
$request->cust_theme_bg)) {
                    
$cust_theme_bg = (!empty($request->cust_theme_bg)) ? 'on' 'off';
                    
$post['cust_theme_bg'] = $cust_theme_bg;
                }
                if (!isset(
$request->cust_darklayout)) {

                    
$cust_darklayout = (!empty($request->cust_darklayout)) ? 'on' 'off';
                    
$post['cust_darklayout'] = $cust_darklayout;
                }

                unset(
$post['_token'], $post['company_logo_dark'], $post['company_logo_light'], $post['company_favicon'] , $post['custom_color']);

                foreach (
$post as $key => $data) {
                    if (
in_array($keyarray_keys($settings))) {
                        
\DB::insert(
                            
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                                
$data,
                                
$key,
                                
\Auth::user()->creatorId(),
                            ]
                        );
                    }
                }
            }

            return 
redirect()->back()->with('success''Brand Setting successfully updated.');
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
saveEmailSettings(Request $request)
    {
        if (
\Auth::user()->can('manage system settings')) {
            
$request->validate(
                [
                    
'mail_driver' => 'required|string|max:255',
                    
'mail_host' => 'required|string|max:255',
                    
'mail_port' => 'required|string|max:255',
                    
'mail_username' => 'required|string|max:255',
                    
'mail_password' => 'required|string|max:255',
                    
'mail_encryption' => 'required|string|max:255',
                    
'mail_from_address' => 'required|string|max:255',
                    
'mail_from_name' => 'required|string|max:255',
                ]
            );

            
$post $request->all();

            unset(
$post['_token']);
            
$settings Utility::settings();

            foreach (
$post as $key => $data) {
                if (
in_array($keyarray_keys($settings))) {
                    
\DB::insert(
                        
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                        [
                            
$data,
                            
$key,
                            
\Auth::user()->creatorId(),
                        ]
                    );
                }
            }

            return 
redirect()->back()->with('success'__('Setting successfully updated.'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }

    }

    public function 
saveCompanyEmailSettings(Request $request)
    {
        if (
\Auth::user()->type == 'company') {
            
$request->validate(
                [
                    
'mail_driver' => 'required|string|max:255',
                    
'mail_host' => 'required|string|max:255',
                    
'mail_port' => 'required|string|max:255',
                    
'mail_username' => 'required|string|max:255',
                    
'mail_password' => 'required|string|max:255',
                    
'mail_encryption' => 'required|string|max:255',
                    
'mail_from_address' => 'required|string|max:255',
                    
'mail_from_name' => 'required|string|max:255',
                ]
            );
            
$post $request->all();

            unset(
$post['_token']);
            
$settings Utility::settings();

            foreach (
$post as $key => $data) {
                if (
in_array($keyarray_keys($settings))) {
                    
\DB::insert(
                        
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                        [
                            
$data,
                            
$key,
                            
\Auth::user()->creatorId(),
                        ]
                    );
                }
            }

            return 
redirect()->back()->with('success'__('Setting successfully updated.'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }


    public function 
savepageSettings(Request $request){

        if(!
$request->input('description')){
            return 
redirect()->back()->with('error''Enter Description');
        }


       
$prePageDB::table('settings')->where('created_by'Auth::user()->id)->where('name'$request->input('page_type'))->first();

       if(
$prePage){
        
DB::table('settings')->where('created_by'Auth::user()->id)->where('name'$request->input('page_type'))->update(['value'=>$request->input('description')]);

        }else{
            
DB::table('settings')->insert([
                
'created_by' => Auth::id(),
                
'name'     => $request->input('page_type'),
                
'value'     => $request->input('description'),
            ]);
       }


        return 
redirect()->back()->with('success'__('Page Setting successfully updated.'));

    }

    public function 
saveDistanceRange(Request $request){

        if(!
$request->input('distance_range_value')){
            return 
redirect()->back()->with('error''Enter Distance Range');
        }


       
$preDistanceRangeDB::table('settings')->where('created_by'Auth::user()->id)->where('name'$request->input('distance_calculation'))->first();
       if(
$preDistanceRange){
        
DB::table('settings')->where('created_by'Auth::user()->id)->where('name'$request->input('distance_calculation'))->update(['value'=>$request->input('distance_range_value')]);

        }else{
            
DB::table('settings')->insert([
                
'created_by' => Auth::id(),
                
'name'     => $request->input('distance_calculation'),
                
'value'     => $request->input('distance_range_value'),
            ]);
       }


        return 
redirect()->back()->with('success'__('Distance Range Setting successfully updated.'));
    }

    public function 
saveCompanySettings(Request $request)
    {

        if (
\Auth::user()->can('manage company settings')) {
            
$user \Auth::user();
            
$request->validate(
                [
                    
'company_name' => 'required|string|max:255',
                ]
            );
            
$post $request->all();
            if (isset(
$request->vat_gst_number_switch) && $request->vat_gst_number_switch == 'on') {
                
$post['vat_gst_number_switch'] = 'on';
            } else {
                
$post['vat_gst_number_switch'] = 'off';
            }

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

            unset(
$post['_token']);
            
$settings Utility::settings();

            foreach (
$post as $key => $data) {
                if (
in_array($keyarray_keys($settings))) {
                    
\DB::insert(
                        
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                            
$data,
                            
$key,
                            
\Auth::user()->creatorId(),
                        ]
                    );
                }
            }
            return 
redirect()->back()->with('success'__('Setting successfully updated.'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
savePaymentSettings(Request $request)
    {

        if (
\Auth::user()->can('manage stripe settings')) {
            
//dd($request);

            
$validator \Validator::make(
                
$request->all(), [
                    
'currency' => 'required|string|max:255',
                    
'currency_symbol' => 'required|string|max:255',
                ]
            );
            if (
$validator->fails()) {
                
$messages $validator->getMessageBag();

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

            
self::adminPaymentSettings($request);

            return 
redirect()->back()->with('success'__('Payment setting successfully updated.'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
saveSystemSettings(Request $request)
    {

        if (
\Auth::user()->can('manage company settings')) {
            
$user \Auth::user();
            
$request->validate(
                [
                    
'site_currency' => 'required',
                ]
            );
            
$post $request->all();

            unset(
$post['_token']);

            if (!isset(
$post['shipping_display'])) {
                
$post['shipping_display'] = 'off';
            }

            
$settings Utility::settings();

            foreach (
$post as $key => $data) {
                if (
in_array($keyarray_keys($settings))) {
                    
\DB::insert(
                        
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                            
$data,
                            
$key,
                            
\Auth::user()->creatorId(),
                            
date('Y-m-d H:i:s'),
                            
date('Y-m-d H:i:s'),
                        ]
                    );
                }
            }

            return 
redirect()->back()->with('success'__('Setting successfully updated.'));

        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
saveZoomSettings(Request $request)
    {
        
$post $request->all();
        unset(
$post['_token']);
        
$created_by \Auth::user()->creatorId();
        foreach (
$post as $key => $data) {
            
\DB::insert(
                
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                    
$data,
                    
$key,
                    
$created_by,
                    
date('Y-m-d H:i:s'),
                    
date('Y-m-d H:i:s'),
                ]
            );
        }
        return 
redirect()->back()->with('success'__('Setting added successfully saved.'));
    }

    public function 
saveBusinessSettings(Request $request)
    {

        

        if (
\Auth::user()->can('manage business settings')) {
            
$post $request->all();

            
$user \Auth::user();
            if (
$request->company_logo_dark) {

                
$validation = [
                    
'mimes:' 'png',
                    
'max:' '20480',
                ];

                
$strRand=Str::random(4);
                
$logoName $user->id $strRand.'-logo-dark.png';
                
$dir 'uploads/logo';
                
$path Utility::upload_file($request'company_logo_dark'$logoName$dir$validation);
                if (
$path['flag'] == 1) {
                    
$logo $path['url'];
                } else {
                    return 
redirect()->back()->with('error'__($path['msg']));
                }

                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                        
$logoName,
                        
'company_logo_dark',
                        
\Auth::user()->creatorId(),
                    ]
                );
            }

            if (
$request->company_logo_light) {

                
$validation = [
                    
'mimes:' 'png',
                    
'max:' '20480',
                ];
        
//                $logoName = 'logo-light.png';
                
$logoName $user->id '-logo-light.png';
                
$dir 'uploads/logo';
                
$path Utility::upload_file($request'company_logo_light'$logoName$dir$validation);
                if (
$path['flag'] == 1) {
                    
$logo $path['url'];
                } else {
                    return 
redirect()->back()->with('error'__($path['msg']));
                }

                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                        
$logoName,
                        
'company_logo_light',
                        
\Auth::user()->creatorId(),
                    ]
                );
            }

            if (
$request->company_favicon) {

                
$validation = [
                    
'mimes:' 'png',
                    
'max:' '20480',
                ];

        
//                $favicon = 'favicon.png';
                
$favicon $user->id '-favicon.png';

                
$dir 'uploads/logo/';
                
$path Utility::upload_file($request'company_favicon'$favicon$dir$validation);
                if (
$path['flag'] == 1) {
                } else {
                    return 
redirect()->back()->with('error'__($path['msg']));
                }

                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                        
$favicon,
                        
'company_favicon',
                        
\Auth::user()->creatorId(),
                    ]
                );
            }

            
$settings Utility::settings();

            if (!empty(
$request->title_text) || !empty($request->color) || !empty($request->cust_theme_bg)
                || !empty(
$request->footer_text) || !empty($request->default_language) || !empty($request->cust_darklayout)) {

                
$SITE_RTL $request->has('SITE_RTL') ? $request->SITE_RTL 'off';
                
$post['SITE_RTL'] = $SITE_RTL;

                if (!isset(
$request->cust_theme_bg)) {
                    
$cust_theme_bg = (!empty($request->cust_theme_bg)) ? 'on' 'off';
                    
$post['cust_theme_bg'] = $cust_theme_bg;
                }
                if (!isset(
$request->cust_darklayout)) {

                    
$cust_darklayout = (!empty($request->cust_darklayout)) ? 'on' 'off';
                    
$post['cust_darklayout'] = $cust_darklayout;
                }

                if(isset(
$request->color) && $request->color_flag == 'false')
                {
                    
$post['color'] = $request->color;
                }
                else
                {
                    
$post['color'] = $request->custom_color;
                }

                unset(
$post['_token'], $post['company_logo_dark'], $post['company_logo_light'], $post['company_favicon'] , $post['custom_color']);
                foreach (
$post as $key => $data) {
                    if (
in_array($keyarray_keys($settings))) {

                        
\DB::insert(
                            
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                                
$data,
                                
$key,
                                
\Auth::user()->creatorId(),
                            ]
                        );
                    }
                }
            }

            return 
redirect()->back()->with('success''Brand Setting successfully updated.');
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
saveDomainSettings(Request $request){

        try {
            
$currentIp $_SERVER['SERVER_ADDR'];
            
$requestDomain='www.'.$request->domain;
            
$results dns_get_record($requestDomain,DNS_A);
            
$requestIp=[];
            foreach(
$results as $result){
                if(isset(
$result['ip'])) {
                    
$requestIp[] = $result['ip'];
                }
            }
            
$host=parse_url(str_replace('www.','http://'trim($requestDomain)));
            if (!isset(
$host['host'])) {
                return 
redirect()->back()->with('error''Host not found');
            }
            
$request['host']=$host['host'];

            if(!isset(
$requestIp[0]) ||  !in_array($currentIp$requestIp)){
                return 
redirect()->back()->with('error''Domain should be pointed to '.'<b>'.$currentIp.'</b>');
            }

            
$company auth()->user();
            
$domain $company->domain()->first();

            if (
$domain) {
                
$request->validate([
                    
'domain' => 'required|unique:domains,domain,' $domain->id,
                    
'host' => 'required|unique:domains,host,' $domain->id,
                ]);
                
$request['status'] = 'pending';
                
$domain->update($request->only('domain','host','status'));
            } else {
                
$request->validate([
                    
'domain' => 'required|unique:domains',
                    
'host' => 'required|unique:domains',
                ]);
                
$company->domain()->create(['domain' => $request->domain,'host'=>$request->host]);
            }


            return 
redirect()->back()->with('success''Domain successfully added');
        }catch(
\Exception $ex){
            
dd($ex);
            return 
redirect()->back()->with('error'$ex->getMessage());
        }
    }

    public function 
domainDelete(){

        
$company auth()->user();
        
$domain $company->domain()->first();

        if(
$domain && $domain->status=='approved'){
            
$domain->delete();

            return 
redirect()->back()->with('success''Domain successfully deleted');
        }else{
            return 
redirect()->back()->with('error''Cann\'t Delete Domain At This Moment');
        }

    }

    public function 
companyIndex(Request $request)
    {
        if (
\Auth::user()->can('manage company settings')) {

            if (
$request->offerlangs) {
                
$offerlang $request->offerlangs;
            } else {
                
$offerlang "en";
            }
            if (
$request->joininglangs) {
                
$joininglang $request->joininglangs;
            } else {
                
$joininglang "en";
            }
            if (
$request->explangs) {
                
$explang $request->explangs;
            } else {
                
$explang "en";
            }
            if (
$request->noclangs) {
                
$noclang $request->noclangs;
            } else {
                
$noclang "en";
            }

            
$offerlangName Language::languageData($offerlang);
            
$joininglangName Language::languageData($joininglang);
            
$explangName Language::languageData($explang);
            
$noclangName Language::languageData($noclang);

            
$setting Utility::settingsById(\Auth::user()->creatorId());

            
$timezones config('timezones');
            
$company_payment_setting Utility::getCompanyPaymentSetting(\Auth::user()->creatorId());
            
// $emailSetting = Utility::settingsById(\Auth::user()->creatorId());


            
$EmailTemplates EmailTemplate::all();
            
$ips IpRestrict::where('created_by'\Auth::user()->creatorId())->get();
            
// $languages = Utility::languages();

            //offer letter
            
$Offerletter GenerateOfferLetter::all();
            
$currOfferletterLang GenerateOfferLetter::where('created_by'\Auth::user()->id)->where('lang'$offerlang)->first();

            
//joining letter
            
$Joiningletter JoiningLetter::all();
            
$currjoiningletterLang JoiningLetter::where('created_by'\Auth::user()->id)->where('lang'$joininglang)->first();

            
//Experience Certificate
            
$experience_certificate ExperienceCertificate::all();
            
$curr_exp_cetificate_Lang ExperienceCertificate::where('created_by'\Auth::user()->id)->where('lang'$explang)->first();

            
//NOC
            
$noc_certificate NOC::all();
            
$currnocLang NOC::where('created_by'\Auth::user()->id)->where('lang'$noclang)->first();

            
$post $request->all();
            
$domain=auth()->user()->domain()->first();

            
$about_us_pageDB::table('settings')->where('created_by''='\Auth::user()->id)->where('name''about_us')->first();
            
$driver_distance_rangeDB::table('settings')->where('created_by''='\Auth::user()->id)->where('name''distance_range_value')->first();
            
$terms_pageDB::table('settings')->where('created_by''='\Auth::user()->id)->where('name''terms')->first();
            
$policy_pageDB::table('settings')->where('created_by''='\Auth::user()->id)->where('name''privacy_policy')->first();


            return 
view('settings.company'compact('setting''company_payment_setting''timezones',
                
'ips''EmailTemplates''currOfferletterLang''Offerletter''offerlang''Joiningletter',
                
'currjoiningletterLang''joininglang''experience_certificate''curr_exp_cetificate_Lang',
                
'about_us_page','terms_page','about_us_page','driver_distance_range',
                
'explang''noc_certificate''currnocLang''noclang''offerlangName''joininglangName''explangName''noclangName','domain'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
saveCompanyPaymentSettings(Request $request)
    {

        
        if (isset(
$request->is_zell_or_cash_enabled) && $request->is_zell_or_cash_enabled == 'on') {

            
$request->validate(
                [
                    
'zell_or_cash_details' => 'required|string',
                ]
            );
            
$post['is_zell_or_cash_enabled'] = $request->is_zell_or_cash_enabled;
            
$post['zell_or_cash_details'] = $request->zell_or_cash_details;
        } else {
            
$post['is_zell_or_cash_enabled'] = 'off';
        }

        if (isset(
$request->is_bank_transfer_enabled) && $request->is_bank_transfer_enabled == 'on') {

            
$request->validate(
                [
                    
'bank_details' => 'required|string',
                ]
            );
            
$post['is_bank_transfer_enabled'] = $request->is_bank_transfer_enabled;
            
$post['bank_details'] = $request->bank_details;
        } else {
            
$post['is_bank_transfer_enabled'] = 'off';
        }

        if (isset(
$request->is_stripe_enabled) && $request->is_stripe_enabled == 'on') {

            
$request->validate(
                [
                    
'stripe_key' => 'required|string|max:255',
                    
'stripe_secret' => 'required|string|max:255',
                ]
            );

            
$post['is_stripe_enabled'] = $request->is_stripe_enabled;
            
$post['stripe_secret'] = $request->stripe_secret;
            
$post['stripe_key'] = $request->stripe_key;
        } else {
            
$post['is_stripe_enabled'] = 'off';
        }

        if (isset(
$request->is_paypal_enabled) && $request->is_paypal_enabled == 'on') {
            
$request->validate(
                [
                    
'paypal_mode' => 'required',
                    
'paypal_client_id' => 'required',
                    
'paypal_secret_key' => 'required',
                ]
            );

            
$post['is_paypal_enabled'] = $request->is_paypal_enabled;
            
$post['paypal_mode'] = $request->paypal_mode;
            
$post['paypal_client_id'] = $request->paypal_client_id;
            
$post['paypal_secret_key'] = $request->paypal_secret_key;
        } else {
            
$post['is_paypal_enabled'] = 'off';
        }

        if (isset(
$request->is_paystack_enabled) && $request->is_paystack_enabled == 'on') {
            
$request->validate(
                [
                    
'paystack_public_key' => 'required|string',
                    
'paystack_secret_key' => 'required|string',
                ]
            );
            
$post['is_paystack_enabled'] = $request->is_paystack_enabled;
            
$post['paystack_public_key'] = $request->paystack_public_key;
            
$post['paystack_secret_key'] = $request->paystack_secret_key;
        } else {
            
$post['is_paystack_enabled'] = 'off';
        }

        if (isset(
$request->is_flutterwave_enabled) && $request->is_flutterwave_enabled == 'on') {
            
$request->validate(
                [
                    
'flutterwave_public_key' => 'required|string',
                    
'flutterwave_secret_key' => 'required|string',
                ]
            );
            
$post['is_flutterwave_enabled'] = $request->is_flutterwave_enabled;
            
$post['flutterwave_public_key'] = $request->flutterwave_public_key;
            
$post['flutterwave_secret_key'] = $request->flutterwave_secret_key;
        } else {
            
$post['is_flutterwave_enabled'] = 'off';
        }
        if (isset(
$request->is_razorpay_enabled) && $request->is_razorpay_enabled == 'on') {
            
$request->validate(
                [
                    
'razorpay_public_key' => 'required|string',
                    
'razorpay_secret_key' => 'required|string',
                ]
            );
            
$post['is_razorpay_enabled'] = $request->is_razorpay_enabled;
            
$post['razorpay_public_key'] = $request->razorpay_public_key;
            
$post['razorpay_secret_key'] = $request->razorpay_secret_key;
        } else {
            
$post['is_razorpay_enabled'] = 'off';
        }

        if (isset(
$request->is_mercado_enabled) && $request->is_mercado_enabled == 'on') {
            
$request->validate(
                [
                    
'mercado_access_token' => 'required|string',
                ]
            );
            
$post['is_mercado_enabled'] = $request->is_mercado_enabled;
            
$post['mercado_access_token'] = $request->mercado_access_token;
            
$post['mercado_mode'] = $request->mercado_mode;
        } else {
            
$post['is_mercado_enabled'] = 'off';
        }

        if (isset(
$request->is_paytm_enabled) && $request->is_paytm_enabled == 'on') {
            
$request->validate(
                [
                    
'paytm_mode' => 'required',
                    
'paytm_merchant_id' => 'required|string',
                    
'paytm_merchant_key' => 'required|string',
                    
'paytm_industry_type' => 'required|string',
                ]
            );
            
$post['is_paytm_enabled'] = $request->is_paytm_enabled;
            
$post['paytm_mode'] = $request->paytm_mode;
            
$post['paytm_merchant_id'] = $request->paytm_merchant_id;
            
$post['paytm_merchant_key'] = $request->paytm_merchant_key;
            
$post['paytm_industry_type'] = $request->paytm_industry_type;
        } else {
            
$post['is_paytm_enabled'] = 'off';
        }
        if (isset(
$request->is_mollie_enabled) && $request->is_mollie_enabled == 'on') {
            
$request->validate(
                [
                    
'mollie_api_key' => 'required|string',
                    
'mollie_profile_id' => 'required|string',
                    
'mollie_partner_id' => 'required',
                ]
            );
            
$post['is_mollie_enabled'] = $request->is_mollie_enabled;
            
$post['mollie_api_key'] = $request->mollie_api_key;
            
$post['mollie_profile_id'] = $request->mollie_profile_id;
            
$post['mollie_partner_id'] = $request->mollie_partner_id;
        } else {
            
$post['is_mollie_enabled'] = 'off';
        }

        if (isset(
$request->is_skrill_enabled) && $request->is_skrill_enabled == 'on') {
            
$request->validate(
                [
                    
'skrill_email' => 'required|email',
                ]
            );
            
$post['is_skrill_enabled'] = $request->is_skrill_enabled;
            
$post['skrill_email'] = $request->skrill_email;
        } else {
            
$post['is_skrill_enabled'] = 'off';
        }

        if (isset(
$request->is_coingate_enabled) && $request->is_coingate_enabled == 'on') {
            
$request->validate(
                [
                    
'coingate_mode' => 'required|string',
                    
'coingate_auth_token' => 'required|string',
                ]
            );

            
$post['is_coingate_enabled'] = $request->is_coingate_enabled;
            
$post['coingate_mode'] = $request->coingate_mode;
            
$post['coingate_auth_token'] = $request->coingate_auth_token;
        } else {
            
$post['is_coingate_enabled'] = 'off';
        }

        
//save paymentwall Detail


        
if (isset($request->is_paymentwall_enabled) && $request->is_paymentwall_enabled == 'on') {
            
$request->validate(
                [
                    
'paymentwall_public_key' => 'required|string',
                    
'paymentwall_secret_key' => 'required|string',
                ]
            );

            
$post['is_paymentwall_enabled'] = $request->is_paymentwall_enabled;
            
$post['paymentwall_public_key'] = $request->paymentwall_public_key;
            
$post['paymentwall_secret_key'] = $request->paymentwall_secret_key;
        } else {
            
$post['is_paymentwall_enabled'] = 'off';
        }

        if (isset(
$request->is_toyyibpay_enabled) && $request->is_toyyibpay_enabled == 'on') {

            
$request->validate(
                [
                    
'toyyibpay_category_code' => 'required|string',
                    
'toyyibpay_secret_key' => 'required|string',
                ]
            );
            
$post['is_toyyibpay_enabled'] = $request->is_toyyibpay_enabled;
            
$post['toyyibpay_category_code'] = $request->toyyibpay_category_code;
            
$post['toyyibpay_secret_key'] = $request->toyyibpay_secret_key;
        } else {
            
$post['is_toyyibpay_enabled'] = 'off';
        }

        if (isset(
$request->is_payfast_enabled) && $request->is_payfast_enabled == 'on') {
            
$request->validate(
                [
                    
'payfast_merchant_id' => 'required|string',
                    
'payfast_merchant_key' => 'required|string',
                    
'payfast_signature' => 'required|string',
                    
'payfast_mode' => 'required',
                ]
            );
            
$post['payfast_mode'] = $request->payfast_mode;
            
$post['is_payfast_enabled'] = $request->is_payfast_enabled;
            
$post['payfast_merchant_id'] = $request->payfast_merchant_id;
            
$post['payfast_merchant_key'] = $request->payfast_merchant_key;
            
$post['payfast_signature'] = $request->payfast_signature;
        } else {
            
$post['is_payfast_enabled'] = 'off';
        }
        if (isset(
$request->is_iyzipay_enabled) && $request->is_iyzipay_enabled == 'on') {
            
$request->validate(
                [
                    
'iyzipay_mode' => 'required',
                    
'iyzipay_public_key' => 'required|string',
                    
'iyzipay_secret_key' => 'required|string',
                ]
            );

            
$post['is_iyzipay_enabled'] = $request->is_iyzipay_enabled;
            
$post['iyzipay_mode'] = $request->iyzipay_mode;
            
$post['iyzipay_public_key'] = $request->iyzipay_public_key;
            
$post['iyzipay_secret_key'] = $request->iyzipay_secret_key;
        } else {
            
$post['is_iyzipay_enabled'] = 'off';
        }

        if (isset(
$request->is_sspay_enabled) && $request->is_sspay_enabled == 'on') {
            
$request->validate(
                [
                    
'sspay_category_code' => 'required|string',
                    
'sspay_secret_key' => 'required|string',
                ]
            );

            
$post['is_sspay_enabled'] = $request->is_sspay_enabled;
            
$post['sspay_category_code'] = $request->sspay_category_code;
            
$post['sspay_secret_key'] = $request->sspay_secret_key;
        } else {
            
$post['is_sspay_enabled'] = 'off';
        }
        if (isset(
$request->is_paytab_enabled) && $request->is_paytab_enabled == 'on') {
            
$request->validate(
                [
                    
'paytab_profile_id' => 'required|string',
                    
'paytab_server_key' => 'required|string',
                    
'paytab_region' => 'required|string',
                ]
            );

            
$post['is_paytab_enabled'] = $request->is_paytab_enabled;
            
$post['paytab_profile_id'] = $request->paytab_profile_id;
            
$post['paytab_server_key'] = $request->paytab_server_key;
            
$post['paytab_region'] = $request->paytab_region;
        } else {
            
$post['is_paytab_enabled'] = 'off';
        }
        if (isset(
$request->is_benefit_enabled) && $request->is_benefit_enabled == 'on') {
            
$request->validate(
                [
                    
'benefit_api_key' => 'required|string',
                    
'benefit_secret_key' => 'required|string',
                ]
            );

            
$post['is_benefit_enabled'] = $request->is_benefit_enabled;
            
$post['benefit_api_key'] = $request->benefit_api_key;
            
$post['benefit_secret_key'] = $request->benefit_secret_key;
        } else {
            
$post['is_benefit_enabled'] = 'off';
        }
        if (isset(
$request->is_cashfree_enabled) && $request->is_cashfree_enabled == 'on') {
            
$request->validate(
                [
                    
'cashfree_api_key' => 'required|string',
                    
'cashfree_secret_key' => 'required|string',
                ]
            );

            
$post['is_cashfree_enabled'] = $request->is_cashfree_enabled;
            
$post['cashfree_api_key'] = $request->cashfree_api_key;
            
$post['cashfree_secret_key'] = $request->cashfree_secret_key;
        } else {
            
$post['is_cashfree_enabled'] = 'off';
        }
        if (isset(
$request->is_aamarpay_enabled) && $request->is_aamarpay_enabled == 'on') {
            
$request->validate(
                [
                    
'aamarpay_store_id' => 'required|string',
                    
'aamarpay_signature_key' => 'required|string',
                    
'aamarpay_description' => 'required|string',
                ]
            );

            
$post['is_aamarpay_enabled'] = $request->is_aamarpay_enabled;
            
$post['aamarpay_store_id'] = $request->aamarpay_store_id;
            
$post['aamarpay_signature_key'] = $request->aamarpay_signature_key;
            
$post['aamarpay_description'] = $request->aamarpay_description;
        } else {
            
$post['is_aamarpay_enabled'] = 'off';
        }
        if (isset(
$request->is_paytr_enabled) && $request->is_paytr_enabled == 'on') {
            
$request->validate(
                [
                    
'paytr_merchant_id' => 'required|string',
                    
'paytr_merchant_key' => 'required|string',
                    
'paytr_merchant_salt' => 'required|string',
                ]
            );

            
$post['is_paytr_enabled'] = $request->is_paytr_enabled;
            
$post['paytr_merchant_id'] = $request->paytr_merchant_id;
            
$post['paytr_merchant_key'] = $request->paytr_merchant_key;
            
$post['paytr_merchant_salt'] = $request->paytr_merchant_salt;
        } else {
            
$post['is_paytr_enabled'] = 'off';
        }
        if (isset(
$request->is_yookassa_enabled) && $request->is_yookassa_enabled == 'on') {
            
$request->validate(
                [
                    
'yookassa_shop_id' => 'required|string',
                    
'yookassa_secret' => 'required|string',
                ]
            );

            
$post['is_yookassa_enabled'] = $request->is_yookassa_enabled;
            
$post['yookassa_shop_id'] = $request->yookassa_shop_id;
            
$post['yookassa_secret'] = $request->yookassa_secret;
        } else {
            
$post['is_yookassa_enabled'] = 'off';
        }
        if (isset(
$request->is_midtrans_enabled) && $request->is_midtrans_enabled == 'on') {
            
$request->validate(
                [
                    
'midtrans_secret' => 'required|string',
                    
'midtrans_mode' => 'required|string',
                ]
            );
            
$post['midtrans_mode'] = $request->midtrans_mode;
            
$post['is_midtrans_enabled'] = $request->is_midtrans_enabled;
            
$post['midtrans_secret'] = $request->midtrans_secret;
        } else {
            
$post['is_midtrans_enabled'] = 'off';
        }

        if (isset(
$request->is_xendit_enabled) && $request->is_xendit_enabled == 'on') {
            
$request->validate(
                [
                    
'xendit_token' => 'required|string',
                    
'xendit_api' => 'required|string',
                ]
            );
            
$post['is_xendit_enabled'] = $request->is_xendit_enabled;
            
$post['xendit_token'] = $request->xendit_token;
            
$post['xendit_api'] = $request->xendit_api;
        } else {
            
$post['is_xendit_enabled'] = 'off';
        }

        if (isset(
$request->is_nepalste_enabled) && $request->is_nepalste_enabled == 'on') {
            
$request->validate(
                [
                    
'nepalste_public_key' => 'required|string',
                    
'nepalste_secret_key' => 'required|string',
                ]
            );
            
$post['is_nepalste_enabled'] = $request->is_nepalste_enabled;
            
$post['nepalste_public_key'] = $request->nepalste_public_key;
            
$post['nepalste_secret_key'] = $request->nepalste_secret_key;
        } else {
            
$post['is_nepalste_enabled'] = 'off';
        }

        foreach (
$post as $key => $data) {

            
$arr = [
                
$data,
                
$key,
                
\Auth::user()->id,
            ];
            
\DB::insert(
                
'insert into company_payment_settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) '$arr
            
);

        }

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

    public function 
testMail(Request $request)
    {
        
$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('settings.test_mail'compact('data'));
    }

    public function 
testSendMail(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(
                [
                    
'is_success' => false,
                    
'message' => $messages->first(),
                ]
            );
            
// 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 TestMail());
        } catch (
\Exception $e) {

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

        return 
response()->json(
            [
                
'success' => true,
                
'message' => __('Email send Successfully'),
            ]
        );
    }

    public function 
printIndex()
    {
        if (
\Auth::user()->can('manage print settings')) {
            
$settings Utility::settings();

            return 
view('settings.print'compact('settings'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
posPrintIndex()
    {
        if (
\Auth::user()->can('manage print settings')) {
            
$settings Utility::settings();

            return 
view('settings.pos'compact('settings'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
quotationPrintIndex()
    {
        if (
\Auth::user()->can('manage print settings')) {
            
$settings Utility::settings();

            return 
view('settings.pos'compact('settings'));
        } else {
            return 
redirect()->back()->with('error''Permission denied.');
        }
    }

    public function 
adminPaymentSettings($request)
    {
        
$post['currency'] = $request->currency;
        
$post['currency_symbol'] = $request->currency_symbol;

        if (isset(
$request->is_manually_payment_enabled) && $request->is_manually_payment_enabled == 'on') {

            
$post['is_manually_payment_enabled'] = $request->is_manually_payment_enabled;
        } else {
            
$post['is_manually_payment_enabled'] = 'off';
        }
        if (isset(
$request->is_bank_transfer_enabled) && $request->is_bank_transfer_enabled == 'on') {

            
$request->validate(
                [
                    
'bank_details' => 'required|string',
                ]
            );
            
$post['is_bank_transfer_enabled'] = $request->is_bank_transfer_enabled;
            
$post['bank_details'] = $request->bank_details;
        } else {
            
$post['is_bank_transfer_enabled'] = 'off';
        }

        if (isset(
$request->is_stripe_enabled) && $request->is_stripe_enabled == 'on') {

            
$request->validate(
                [
                    
'stripe_key' => 'required|string|max:255',
                    
'stripe_secret' => 'required|string|max:255',
                ]
            );
            
$post['is_stripe_enabled'] = $request->is_stripe_enabled;
            
$post['stripe_secret'] = $request->stripe_secret;
            
$post['stripe_key'] = $request->stripe_key;
        } else {
            
$post['is_stripe_enabled'] = 'off';
        }

        if (isset(
$request->is_paypal_enabled) && $request->is_paypal_enabled == 'on') {
            
$request->validate(
                [
                    
'paypal_mode' => 'required',
                    
'paypal_client_id' => 'required',
                    
'paypal_secret_key' => 'required',
                ]
            );

            
$post['is_paypal_enabled'] = $request->is_paypal_enabled;
            
$post['paypal_mode'] = $request->paypal_mode;
            
$post['paypal_client_id'] = $request->paypal_client_id;
            
$post['paypal_secret_key'] = $request->paypal_secret_key;
        } else {
            
$post['is_paypal_enabled'] = 'off';
        }

        if (isset(
$request->is_paystack_enabled) && $request->is_paystack_enabled == 'on') {
            
$request->validate(
                [
                    
'paystack_public_key' => 'required|string',
                    
'paystack_secret_key' => 'required|string',
                ]
            );
            
$post['is_paystack_enabled'] = $request->is_paystack_enabled;
            
$post['paystack_public_key'] = $request->paystack_public_key;
            
$post['paystack_secret_key'] = $request->paystack_secret_key;
        } else {
            
$post['is_paystack_enabled'] = 'off';
        }

        if (isset(
$request->is_flutterwave_enabled) && $request->is_flutterwave_enabled == 'on') {
            
$request->validate(
                [
                    
'flutterwave_public_key' => 'required|string',
                    
'flutterwave_secret_key' => 'required|string',
                ]
            );
            
$post['is_flutterwave_enabled'] = $request->is_flutterwave_enabled;
            
$post['flutterwave_public_key'] = $request->flutterwave_public_key;
            
$post['flutterwave_secret_key'] = $request->flutterwave_secret_key;
        } else {
            
$post['is_flutterwave_enabled'] = 'off';
        }
        if (isset(
$request->is_razorpay_enabled) && $request->is_razorpay_enabled == 'on') {
            
$request->validate(
                [
                    
'razorpay_public_key' => 'required|string',
                    
'razorpay_secret_key' => 'required|string',
                ]
            );
            
$post['is_razorpay_enabled'] = $request->is_razorpay_enabled;
            
$post['razorpay_public_key'] = $request->razorpay_public_key;
            
$post['razorpay_secret_key'] = $request->razorpay_secret_key;
        } else {
            
$post['is_razorpay_enabled'] = 'off';
        }

        if (isset(
$request->is_mercado_enabled) && $request->is_mercado_enabled == 'on') {
            
$request->validate(
                [
                    
'mercado_access_token' => 'required|string',
                ]
            );
            
$post['is_mercado_enabled'] = $request->is_mercado_enabled;
            
$post['mercado_access_token'] = $request->mercado_access_token;
            
$post['mercado_mode'] = $request->mercado_mode;
        } else {
            
$post['is_mercado_enabled'] = 'off';
        }

        if (isset(
$request->is_paytm_enabled) && $request->is_paytm_enabled == 'on') {
            
$request->validate(
                [
                    
'paytm_mode' => 'required',
                    
'paytm_merchant_id' => 'required|string',
                    
'paytm_merchant_key' => 'required|string',
                    
'paytm_industry_type' => 'required|string',
                ]
            );
            
$post['is_paytm_enabled'] = $request->is_paytm_enabled;
            
$post['paytm_mode'] = $request->paytm_mode;
            
$post['paytm_merchant_id'] = $request->paytm_merchant_id;
            
$post['paytm_merchant_key'] = $request->paytm_merchant_key;
            
$post['paytm_industry_type'] = $request->paytm_industry_type;
        } else {
            
$post['is_paytm_enabled'] = 'off';
        }

        if (isset(
$request->is_mollie_enabled) && $request->is_mollie_enabled == 'on') {
            
$request->validate(
                [
                    
'mollie_api_key' => 'required|string',
                    
'mollie_profile_id' => 'required|string',
                    
'mollie_partner_id' => 'required',
                ]
            );
            
$post['is_mollie_enabled'] = $request->is_mollie_enabled;
            
$post['mollie_api_key'] = $request->mollie_api_key;
            
$post['mollie_profile_id'] = $request->mollie_profile_id;
            
$post['mollie_partner_id'] = $request->mollie_partner_id;
        } else {
            
$post['is_mollie_enabled'] = 'off';
        }

        if (isset(
$request->is_skrill_enabled) && $request->is_skrill_enabled == 'on') {
            
$request->validate(
                [
                    
'skrill_email' => 'required|email',
                ]
            );
            
$post['is_skrill_enabled'] = $request->is_skrill_enabled;
            
$post['skrill_email'] = $request->skrill_email;
        } else {
            
$post['is_skrill_enabled'] = 'off';
        }

        if (isset(
$request->is_coingate_enabled) && $request->is_coingate_enabled == 'on') {
            
$request->validate(
                [
                    
'coingate_mode' => 'required|string',
                    
'coingate_auth_token' => 'required|string',
                ]
            );

            
$post['is_coingate_enabled'] = $request->is_coingate_enabled;
            
$post['coingate_mode'] = $request->coingate_mode;
            
$post['coingate_auth_token'] = $request->coingate_auth_token;
        } else {
            
$post['is_coingate_enabled'] = 'off';
        }

        if (isset(
$request->is_paymentwall_enabled) && $request->is_paymentwall_enabled == 'on') {
            
$request->validate(
                [
                    
'paymentwall_public_key' => 'required|string',
                    
'paymentwall_secret_key' => 'required|string',
                ]
            );
            
$post['is_paymentwall_enabled'] = $request->is_paymentwall_enabled;
            
$post['paymentwall_public_key'] = $request->paymentwall_public_key;
            
$post['paymentwall_secret_key'] = $request->paymentwall_secret_key;
        } else {
            
$post['is_paymentwall_enabled'] = 'off';
        }

        if (isset(
$request->is_toyyibpay_enabled) && $request->is_toyyibpay_enabled == 'on') {

            
$request->validate(
                [
                    
'toyyibpay_category_code' => 'required|string',
                    
'toyyibpay_secret_key' => 'required|string',
                ]
            );
            
$post['is_toyyibpay_enabled'] = $request->is_toyyibpay_enabled;
            
$post['toyyibpay_category_code'] = $request->toyyibpay_category_code;
            
$post['toyyibpay_secret_key'] = $request->toyyibpay_secret_key;
        } else {
            
$post['is_toyyibpay_enabled'] = 'off';
        }

        if (isset(
$request->is_payfast_enabled) && $request->is_payfast_enabled == 'on') {
            
$request->validate(
                [
                    
'payfast_merchant_id' => 'required|string',
                    
'payfast_merchant_key' => 'required|string',
                    
'payfast_signature' => 'required|string',
                    
'payfast_mode' => 'required',
                ]
            );
            
$post['payfast_mode'] = $request->payfast_mode;
            
$post['is_payfast_enabled'] = $request->is_payfast_enabled;
            
$post['payfast_merchant_id'] = $request->payfast_merchant_id;
            
$post['payfast_merchant_key'] = $request->payfast_merchant_key;
            
$post['payfast_signature'] = $request->payfast_signature;
        } else {
            
$post['is_payfast_enabled'] = 'off';
        }

        if (isset(
$request->is_iyzipay_enabled) && $request->is_iyzipay_enabled == 'on') {
            
$request->validate(
                [
                    
'iyzipay_mode' => 'required',
                    
'iyzipay_public_key' => 'required|string',
                    
'iyzipay_secret_key' => 'required|string',
                ]
            );

            
$post['is_iyzipay_enabled'] = $request->is_iyzipay_enabled;
            
$post['iyzipay_mode'] = $request->iyzipay_mode;
            
$post['iyzipay_public_key'] = $request->iyzipay_public_key;
            
$post['iyzipay_secret_key'] = $request->iyzipay_secret_key;
        } else {
            
$post['is_iyzipay_enabled'] = 'off';
        }
        if (isset(
$request->is_sspay_enabled) && $request->is_sspay_enabled == 'on') {
            
$request->validate(
                [
                    
'sspay_category_code' => 'required|string',
                    
'sspay_secret_key' => 'required|string',
                ]
            );

            
$post['is_sspay_enabled'] = $request->is_sspay_enabled;
            
$post['sspay_category_code'] = $request->sspay_category_code;
            
$post['sspay_secret_key'] = $request->sspay_secret_key;
        } else {
            
$post['is_sspay_enabled'] = 'off';
        }
        if (isset(
$request->is_paytab_enabled) && $request->is_paytab_enabled == 'on') {
            
$request->validate(
                [
                    
'paytab_profile_id' => 'required|string',
                    
'paytab_server_key' => 'required|string',
                    
'paytab_region' => 'required|string',
                ]
            );

            
$post['is_paytab_enabled'] = $request->is_paytab_enabled;
            
$post['paytab_profile_id'] = $request->paytab_profile_id;
            
$post['paytab_server_key'] = $request->paytab_server_key;
            
$post['paytab_region'] = $request->paytab_region;
        } else {
            
$post['is_paytab_enabled'] = 'off';
        }

        if (isset(
$request->is_benefit_enabled) && $request->is_benefit_enabled == 'on') {
            
$request->validate(
                [
                    
'benefit_api_key' => 'required|string',
                    
'benefit_secret_key' => 'required|string',
                ]
            );

            
$post['is_benefit_enabled'] = $request->is_benefit_enabled;
            
$post['benefit_api_key'] = $request->benefit_api_key;
            
$post['benefit_secret_key'] = $request->benefit_secret_key;
        } else {
            
$post['is_benefit_enabled'] = 'off';
        }
        if (isset(
$request->is_cashfree_enabled) && $request->is_cashfree_enabled == 'on') {
            
$request->validate(
                [
                    
'cashfree_api_key' => 'required|string',
                    
'cashfree_secret_key' => 'required|string',
                ]
            );

            
$post['is_cashfree_enabled'] = $request->is_cashfree_enabled;
            
$post['cashfree_api_key'] = $request->cashfree_api_key;
            
$post['cashfree_secret_key'] = $request->cashfree_secret_key;
        } else {
            
$post['is_cashfree_enabled'] = 'off';
        }
        if (isset(
$request->is_aamarpay_enabled) && $request->is_aamarpay_enabled == 'on') {
            
$request->validate(
                [
                    
'aamarpay_store_id' => 'required|string',
                    
'aamarpay_signature_key' => 'required|string',
                    
'aamarpay_description' => 'required|string',
                ]
            );

            
$post['is_aamarpay_enabled'] = $request->is_aamarpay_enabled;
            
$post['aamarpay_store_id'] = $request->aamarpay_store_id;
            
$post['aamarpay_signature_key'] = $request->aamarpay_signature_key;
            
$post['aamarpay_description'] = $request->aamarpay_description;
        } else {
            
$post['is_aamarpay_enabled'] = 'off';
        }
        if (isset(
$request->is_paytr_enabled) && $request->is_paytr_enabled == 'on') {
            
$request->validate(
                [
                    
'paytr_merchant_id' => 'required|string',
                    
'paytr_merchant_key' => 'required|string',
                    
'paytr_merchant_salt' => 'required|string',
                ]
            );

            
$post['is_paytr_enabled'] = $request->is_paytr_enabled;
            
$post['paytr_merchant_id'] = $request->paytr_merchant_id;
            
$post['paytr_merchant_key'] = $request->paytr_merchant_key;
            
$post['paytr_merchant_salt'] = $request->paytr_merchant_salt;
        } else {
            
$post['is_paytr_enabled'] = 'off';
        }
        if (isset(
$request->is_yookassa_enabled) && $request->is_yookassa_enabled == 'on') {
            
$request->validate(
                [
                    
'yookassa_shop_id' => 'required|string',
                    
'yookassa_secret' => 'required|string',
                ]
            );

            
$post['is_yookassa_enabled'] = $request->is_yookassa_enabled;
            
$post['yookassa_shop_id'] = $request->yookassa_shop_id;
            
$post['yookassa_secret'] = $request->yookassa_secret;
        } else {
            
$post['is_yookassa_enabled'] = 'off';
        }
        if (isset(
$request->is_midtrans_enabled) && $request->is_midtrans_enabled == 'on') {
            
$request->validate(
                [
                    
'midtrans_secret' => 'required|string',
                    
'midtrans_mode' => 'required|string',
                ]
            );
            
$post['midtrans_mode'] = $request->midtrans_mode;
            
$post['is_midtrans_enabled'] = $request->is_midtrans_enabled;
            
$post['midtrans_secret'] = $request->midtrans_secret;
        } else {
            
$post['is_midtrans_enabled'] = 'off';
        }

        if (isset(
$request->is_xendit_enabled) && $request->is_xendit_enabled == 'on') {
            
$request->validate(
                [
                    
'xendit_token' => 'required|string',
                    
'xendit_api' => 'required|string',
                ]
            );
            
$post['is_xendit_enabled'] = $request->is_xendit_enabled;
            
$post['xendit_token'] = $request->xendit_token;
            
$post['xendit_api'] = $request->xendit_api;
        } else {
            
$post['is_xendit_enabled'] = 'off';
        }

        if (isset(
$request->is_nepalste_enabled) && $request->is_nepalste_enabled == 'on') {
            
$request->validate(
                [
                    
'nepalste_public_key' => 'required|string',
                    
'nepalste_secret_key' => 'required|string',
                ]
            );
            
$post['is_nepalste_enabled'] = $request->is_nepalste_enabled;
            
$post['nepalste_public_key'] = $request->nepalste_public_key;
            
$post['nepalste_secret_key'] = $request->nepalste_secret_key;
        } else {
            
$post['is_nepalste_enabled'] = 'off';
        }
        foreach (
$post as $key => $data) {

            
$arr = [
                
$data,
                
$key,
                
\Auth::user()->id,
            ];
            
\DB::insert(
                
'insert into admin_payment_settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) '$arr
            
);

        }

    }

    public function 
savePusherSettings(Request $request)
    {
        if (
\Auth::user()->type == 'super admin') {

            
$validator \Validator::make(
                
$request->all(), [
                    
'pusher_app_id' => 'required',
                    
'pusher_app_key' => 'required',
                    
'pusher_app_secret' => 'required',
                    
'pusher_app_cluster' => 'required',
                ]
            );

        if (
$validator->fails()) {
            
$messages $validator->getMessageBag();

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

        
$post $request->all();

        unset(
$post['_token']);
        
$settings Utility::settings();

        foreach (
$post as $key => $data) {
            if (
in_array($keyarray_keys($settings))) {
                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                    [
                        
$data,
                        
$key,
                        
\Auth::user()->creatorId(),
                    ]
                );
            }
        }
            return 
redirect()->back()->with('success'__('Pusher Settings updated successfully'));
    }

    }

    public function 
saveSlackSettings(Request $request)
    {
        
$post = [];
        
$post['slack_webhook'] = $request->input('slack_webhook');
        
$post['lead_notification'] = $request->has('lead_notification') ? $request->input('lead_notification') : 0;
        
$post['deal_notification'] = $request->has('deal_notification') ? $request->input('deal_notification') : 0;
        
$post['leadtodeal_notification'] = $request->has('leadtodeal_notification') ? $request->input('leadtodeal_notification') : 0;
        
$post['contract_notification'] = $request->has('contract_notification') ? $request->input('contract_notification') : 0;
        
$post['project_notification'] = $request->has('project_notification') ? $request->input('project_notification') : 0;
        
$post['task_notification'] = $request->has('task_notification') ? $request->input('task_notification') : 0;
        
$post['taskmove_notification'] = $request->has('taskmove_notification') ? $request->input('taskmove_notification') : 0;
        
$post['taskcomment_notification'] = $request->has('taskcomment_notification') ? $request->input('taskcomment_notification') : 0;
        
$post['payslip_notification'] = $request->has('payslip_notification') ? $request->input('payslip_notification') : 0;
        
$post['award_notification'] = $request->has('award_notification') ? $request->input('award_notification') : 0;
        
$post['announcement_notification'] = $request->has('announcement_notification') ? $request->input('announcement_notification') : 0;
        
$post['holiday_notification'] = $request->has('holiday_notification') ? $request->input('holiday_notification') : 0;
        
$post['support_notification'] = $request->has('support_notification') ? $request->input('support_notification') : 0;
        
$post['event_notification'] = $request->has('event_notification') ? $request->input('event_notification') : 0;
        
$post['meeting_notification'] = $request->has('meeting_notification') ? $request->input('meeting_notification') : 0;
        
$post['policy_notification'] = $request->has('policy_notification') ? $request->input('policy_notification') : 0;
        
$post['invoice_notification'] = $request->has('invoice_notification') ? $request->input('invoice_notification') : 0;
        
$post['revenue_notification'] = $request->has('revenue_notification') ? $request->input('revenue_notification') : 0;
        
$post['bill_notification'] = $request->has('bill_notification') ? $request->input('bill_notification') : 0;
        
$post['payment_notification'] = $request->has('payment_notification') ? $request->input('payment_notification') : 0;
        
$post['budget_notification'] = $request->has('budget_notification') ? $request->input('budget_notification') : 0;

        if (isset(
$post) && !empty($post) && count($post) > 0) {
            
$created_at $updated_at date('Y-m-d H:i:s');

            foreach (
$post as $key => $data) {
                
DB::insert(
                    
'INSERT INTO settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`) ', [
                        
$data,
                        
$key,
                        
Auth::user()->id,
                        
$created_at,
                        
$updated_at,
                    ]
                );
            }
        }

        return 
redirect()->back()->with('success'__('Slack updated successfully.'));
    }

    public function 
saveTelegramSettings(Request $request)
    {
        
$post = [];
        
$post['telegram_accestoken'] = $request->input('telegram_accestoken');
        
$post['telegram_chatid'] = $request->input('telegram_chatid');
        
$post['telegram_lead_notification'] = $request->has('telegram_lead_notification') ? $request->input('telegram_lead_notification') : 0;
        
$post['telegram_deal_notification'] = $request->has('telegram_deal_notification') ? $request->input('telegram_deal_notification') : 0;
        
$post['telegram_leadtodeal_notification'] = $request->has('telegram_leadtodeal_notification') ? $request->input('telegram_leadtodeal_notification') : 0;
        
$post['telegram_contract_notification'] = $request->has('telegram_contract_notification') ? $request->input('telegram_contract_notification') : 0;
        
$post['telegram_project_notification'] = $request->has('telegram_project_notification') ? $request->input('telegram_project_notification') : 0;
        
$post['telegram_task_notification'] = $request->has('telegram_task_notification') ? $request->input('telegram_task_notification') : 0;
        
$post['telegram_taskmove_notification'] = $request->has('telegram_taskmove_notification') ? $request->input('telegram_taskmove_notification') : 0;
        
$post['telegram_taskcomment_notification'] = $request->has('telegram_taskcomment_notification') ? $request->input('telegram_taskcomment_notification') : 0;
        
$post['telegram_payslip_notification'] = $request->has('telegram_payslip_notification') ? $request->input('telegram_payslip_notification') : 0;
        
$post['telegram_award_notification'] = $request->has('telegram_award_notification') ? $request->input('telegram_award_notification') : 0;
        
$post['telegram_announcement_notification'] = $request->has('telegram_announcement_notification') ? $request->input('telegram_announcement_notification') : 0;
        
$post['telegram_holiday_notification'] = $request->has('telegram_holiday_notification') ? $request->input('telegram_holiday_notification') : 0;
        
$post['telegram_support_notification'] = $request->has('telegram_support_notification') ? $request->input('telegram_support_notification') : 0;
        
$post['telegram_event_notification'] = $request->has('telegram_event_notification') ? $request->input('telegram_event_notification') : 0;
        
$post['telegram_meeting_notification'] = $request->has('telegram_meeting_notification') ? $request->input('telegram_meeting_notification') : 0;
        
$post['telegram_policy_notification'] = $request->has('telegram_policy_notification') ? $request->input('telegram_policy_notification') : 0;
        
$post['telegram_invoice_notification'] = $request->has('telegram_invoice_notification') ? $request->input('telegram_invoice_notification') : 0;
        
$post['telegram_revenue_notification'] = $request->has('telegram_revenue_notification') ? $request->input('telegram_revenue_notification') : 0;
        
$post['telegram_bill_notification'] = $request->has('telegram_bill_notification') ? $request->input('telegram_bill_notification') : 0;
        
$post['telegram_payment_notification'] = $request->has('telegram_payment_notification') ? $request->input('telegram_payment_notification') : 0;
        
$post['telegram_budget_notification'] = $request->has('telegram_budget_notification') ? $request->input('telegram_budget_notification') : 0;

        if (isset(
$post) && !empty($post) && count($post) > 0) {
            
$created_at $updated_at date('Y-m-d H:i:s');

            foreach (
$post as $key => $data) {
                
DB::insert(
                    
'INSERT INTO settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`) ', [
                        
$data,
                        
$key,
                        
Auth::user()->id,
                        
$created_at,
                        
$updated_at,
                    ]
                );
            }
        }

        return 
redirect()->back()->with('success'__('Telegram updated successfully.'));
    }

    public function 
saveTwilioSettings(Request $request)
    {
        
$post = [];
        
$post['twilio_sid'] = $request->input('twilio_sid');
        
$post['twilio_token'] = $request->input('twilio_token');
        
$post['twilio_from'] = $request->input('twilio_from');
        
$post['twilio_customer_notification'] = $request->has('twilio_customer_notification') ? $request->input('twilio_customer_notification') : 0;
        
$post['twilio_vender_notification'] = $request->has('twilio_vender_notification') ? $request->input('twilio_vender_notification') : 0;
        
$post['twilio_invoice_notification'] = $request->has('twilio_invoice_notification') ? $request->input('twilio_invoice_notification') : 0;
        
$post['twilio_revenue_notification'] = $request->has('twilio_revenue_notification') ? $request->input('twilio_revenue_notification') : 0;
        
$post['twilio_bill_notification'] = $request->has('twilio_bill_notification') ? $request->input('twilio_bill_notification') : 0;
        
$post['twilio_proposal_notification'] = $request->has('twilio_proposal_notification') ? $request->input('twilio_proposal_notification') : 0;
        
$post['twilio_payment_notification'] = $request->has('twilio_payment_notification') ? $request->input('twilio_payment_notification') : 0;
        
$post['twilio_reminder_notification'] = $request->has('twilio_reminder_notification') ? $request->input('twilio_reminder_notification') : 0;

        if (isset(
$post) && !empty($post) && count($post) > 0) {
            
$created_at $updated_at date('Y-m-d H:i:s');

            foreach (
$post as $key => $data) {
                
DB::insert(
                    
'INSERT INTO settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`) ', [
                        
$data,
                        
$key,
                        
Auth::user()->id,
                        
$created_at,
                        
$updated_at,
                    ]
                );
            }
        }

        return 
redirect()->back()->with('success'__('Twilio updated successfully.'));
    }

    public function 
recaptchaSettingStore(Request $request)
    {

        
$user \Auth::user();
        
$rules = [];

        if (isset(
$request->recaptcha_module) && $request->recaptcha_module == 'on') {

            
$request->validate(
                [
                    
'google_recaptcha_key' => 'required|string|max:50',
                    
'google_recaptcha_secret' => 'required|string|max:50',
                ]
            );
            
$post['recaptcha_module'] = $request->recaptcha_module;
            
$post['google_recaptcha_key'] = $request->google_recaptcha_key;
            
$post['google_recaptcha_secret'] = $request->google_recaptcha_secret;
        } else {
            
$post['recaptcha_module'] = 'off';
            
$post['google_recaptcha_key'] = $request->google_recaptcha_key;
            
$post['google_recaptcha_secret'] = $request->google_recaptcha_secret;
        }

        
$settings Utility::settings();
        foreach (
$post as $key => $data) {
            if (
in_array($keyarray_keys($settings))) {
                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                    [
                        
$data,
                        
$key,
                        
\Auth::user()->creatorId(),
                    ]
                );
            }
        }
            return 
redirect()->back()->with('success'__('Recaptcha Settings 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;
        }

        foreach (
$post as $key => $data) {

            
$arr = [
                
$data,
                
$key,
                
\Auth::user()->id,
            ];

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

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

    }

    public function 
offerletterupdate($langRequest $request)
    {
        
$user GenerateOfferLetter::updateOrCreate(['lang' => $lang'created_by' => \Auth::user()->id], ['content' => $request->content]);

        return 
response()->json(
            [
                
'is_success' => true,
                
'success' => __('Offer Letter successfully saved!'),
            ], 
200
        
);

    }
    public function 
joiningletterupdate($langRequest $request)
    {

        
$user JoiningLetter::updateOrCreate(['lang' => $lang'created_by' => \Auth::user()->id], ['content' => $request->content]);

        return 
response()->json(
            [
                
'is_success' => true,
                
'success' => __('Joing Letter successfully saved!'),
            ], 
200
        
);

    }
    public function 
experienceCertificateupdate($langRequest $request)
    {
        
//   dd($request->all());
        
$user ExperienceCertificate::updateOrCreate(['lang' => $lang'created_by' => \Auth::user()->id], ['content' => $request->content]);

        return 
response()->json(
            [
                
'is_success' => true,
                
'success' => __('Experience Certificate successfully saved!'),
            ], 
200
        
);

    }
    public function 
NOCupdate($langRequest $request)
    {
        
//   dd($request->all());
        
$user NOC::updateOrCreate(['lang' => $lang'created_by' => \Auth::user()->id], ['content' => $request->content]);

        return 
response()->json(
            [
                
'is_success' => true,
                
'success' => __('NOC successfully saved!'),
            ], 
200
        
);

    }

    
//Save Google calendar settings

    
public function saveGoogleCalenderSettings(Request $request)
    {
        if (isset(
$request->google_calendar_enable) && $request->google_calendar_enable == 'on') {

            
$validator \Validator::make(
                
$request->all(), [
                    
'google_calender_json_file' => 'required',
                    
'google_clender_id' => 'required',
                ]
            );
            if (
$validator->fails()) {
                
$messages $validator->getMessageBag();

                return 
redirect()->back()->with('error'$messages->first());
            }
            
$post['google_calendar_enable'] = 'on';
        } else {
            
$post['google_calendar_enable'] = 'off';
        }
        if (
$request->google_calender_json_file) {
            
$dir storage_path() . '/' md5(time());
            if (!
is_dir($dir)) {
                
File::makeDirectory($dir$mode 0777truetrue);
            }
            
$file_name $request->google_calender_json_file->getClientOriginalName();
            
$file_path md5(time()) . '/' md5(time()) . "." $request->google_calender_json_file->getClientOriginalExtension();

            
$file $request->file('google_calender_json_file');
            
$file->move($dir$file_path);
            
$post['google_calender_json_file'] = $file_path;

        }

        if (
$request->google_clender_id) {
            
$post['google_clender_id'] = $request->google_clender_id;
            foreach (
$post as $key => $data) {
                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                    [
                        
$data,
                        
$key,
                        
\Auth::user()->id,
                        
date('Y-m-d H:i:s'),
                        
date('Y-m-d H:i:s'),
                    ]
                );
            }
        }
        return 
redirect()->back()->with('success''Google Calendar setting successfully updated.');
    }

    public function 
seoSettings(Request $request)
    {
        
$validator \Validator::make(
            
$request->all(),
            [
                
'meta_title' => 'required|string',
                
'meta_desc' => 'required|string',
                
'meta_image' => 'required|file',
            ]
        );
        if (
$validator->fails()) {
            
$messages $validator->getMessageBag();
            return 
redirect()->back()->with('error'$messages->first());
        }
        
$dir storage_path() . '/uploads' '/meta';
        if (!
is_dir($dir)) {
            
File::makeDirectory($dir$mode 0777truetrue);
        }
        
$file_path $request->meta_image->getClientOriginalName();
        
$file $request->file('meta_image');
        
$file->move($dir$file_path);
        
$post['meta_title'] = $request->meta_title;
        
$post['meta_desc'] = $request->meta_desc;
        
$post['meta_image'] = $file_path;

        foreach (
$post as $key => $data) {
            
\DB::insert(
                
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ',
                [
                    
$data,
                    
$key,
                    
\Auth::user()->id,
                    
date('Y-m-d H:i:s'),
                    
date('Y-m-d H:i:s'),
                ]
            );
        }
        return 
redirect()->back()->with('success''SEO setting successfully updated.');
    }

    public function 
webhook()
    {

        if (
\Auth::user()->can('create webhook')) {
            
$webhookSettings WebhookSetting::where('created_by''='\Auth::user()->creatorId())->get();

            return 
redirect()->back()->with('success'__('Webhook successfully created.'));
        } else {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
webhookCreate()
    {
        if (
\Auth::user()->can('create webhook')) {

            
$modules WebhookSetting::$modules;
            
$methods WebhookSetting::$method;

            return 
view('webhook.create'compact('modules''methods'));
        } else {
            return 
response()->json(['error' => __('Permission denied.')], 401);
        }
    }

    public function 
webhookStore(Request $request)
    {

        if (
\Auth::user()->can('create webhook')) {

            
$validator \Validator::make(
                
$request->all(), [
                    
'module' => 'required',
                    
'url' => 'required',
                    
'method' => 'required',
                ]
            );
            if (
$validator->fails()) {
                
$messages $validator->getMessageBag();

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

            
$webhookSetting = new WebhookSetting();
            
$webhookSetting->module $request->module;
            
$webhookSetting->url $request->url;
            
$webhookSetting->method $request->method;
            
$webhookSetting->created_by \Auth::user()->creatorId();
            
$webhookSetting->save();

            return 
redirect()->back()->with('success'__('Webhook successfully created.'));

        } else {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
webhookEdit($id)
    {
        
$webhooksetting WebhookSetting::find($id);
        
$modules WebhookSetting::$modules;
        
$methods WebhookSetting::$method;
        return 
view('webhook.edit'compact('webhooksetting''modules''methods'));
    }

    public function 
webhookUpdate(Request $request$id)
    {

        if (
\Auth::user()->can('edit webhook')) {

            
$validator \Validator::make(
                
$request->all(),
                [
                    
'module' => 'required',
                    
'method' => 'required',
                    
'url' => 'required',
                ]
            );
            if (
$validator->fails()) {
                
$messages $validator->getMessageBag();

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

            
$webhookSetting WebhookSetting::find($id);
            
$webhookSetting->module $request->module;
            
$webhookSetting->method $request->method;
            
$webhookSetting->url $request->url;
            
$webhookSetting->save();

            return 
redirect()->back()->with('success'__('Webhook successfully Updated.'));
        } else {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
webhookDestroy($id)
    {
        if (
\Auth::user()->can('delete webhook')) {
            
$webhookSetting WebhookSetting::find($id);
            
$webhookSetting->delete();
            return 
redirect()->back()->with('success'__('Webhook successfully deleted.'));
        } else {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    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_description' => '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';
        }

        
$post['cookie_title'] = $request->cookie_title;
        
$post['cookie_description'] = $request->cookie_description;
        
$post['strictly_cookie_title'] = $request->strictly_cookie_title;
        
$post['strictly_cookie_description'] = $request->strictly_cookie_description;
        
$post['more_information_description'] = $request->more_information_description;
        
$post['contactus_url'] = $request->contactus_url;

        
$settings Utility::settings();
        foreach (
$post as $key => $data) {

            if (
in_array($keyarray_keys($settings))) {
                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                        
$data,
                        
$key,
                        
\Auth::user()->creatorId(),
                        
date('Y-m-d H:i:s'),
                        
date('Y-m-d H:i:s'),
                    ]
                );
            }
        }
        return 
redirect()->back()->with('success''Cookie setting successfully saved.');
    }

    public function 
CookieConsent(Request $request)
    {

        
$settings Utility::settings();

        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'], 02) : 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$timejson_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_EOLFILE_APPEND LOCK_EX);
            }
            
file_put_contents(storage_path() . '/uploads/sample/data.csv'$new_line PHP_EOLFILE_APPEND LOCK_EX);

            return 
response()->json('success');
        }
        return 
response()->json('error');
    }

    public function 
cacheSettingStore(Request $request)
    {
        
Artisan::call('cache:clear');
        
Artisan::call('optimize:clear');
        return 
redirect()->back()->with('success''Cache clear Successfully');
    }

    
//system-setting footer note
    
public function footerNoteStore(Request $request$user_id null)
    {

        if (!empty(
$user_id)) {
            
$user User::find($user_id);
        } else {
            
$user \Auth::user();
        }
        
$post $request->all();
        
$post['footer_notes'] = $request->notes;
        
$settings Utility::settingsById($user->id);

        foreach (
$post as $key => $data) {

            if (
in_array($keyarray_keys($settings))) {
                
\DB::insert(
                    
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                        
$data,
                        
$key,
                        
\Auth::user()->creatorId(),
                        
date('Y-m-d H:i:s'),
                        
date('Y-m-d H:i:s'),
                    ]
                );
            }
        }

        return 
response()->json(
            [
                
'is_success' => true,
                
'success' => __('Note successfully saved!'),
            ], 
200
        
);

    }

    
//for time-tracker setting
    
public function saveTrackerSettings(Request $request)
    {
        
$request->validate(
            [
                
'interval_time' => 'required',
            ]
        );
        
$post $request->all();
        unset(
$post['_token']);
        
$settings Utility::settings();

        foreach (
$post as $key => $data) {
            
\DB::insert(
                
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`)
                values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) '
,
                [
                    
$data,
                    
$key,
                    
\Auth::user()->creatorId(),
                    
date('Y-m-d H:i:s'),
                    
date('Y-m-d H:i:s'),
                ]
            );
        }
        return 
redirect()->back()->with('success'__('Time Tracker successfully updated.'));
    }

    
//chat gpt setting
    
public function chatgptSetting(Request $request)
    {

        
$post $request->all();
        unset(
$post['_token']);
        
$created_by \Auth::user()->creatorId();
        foreach (
$post as $key => $data) {
            
\DB::insert(
                
'insert into settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
                    
$data,
                    
$key,
                    
$created_by,
                    
date('Y-m-d H:i:s'),
                    
date('Y-m-d H:i:s'),
                ]
            );
        }
        return 
redirect()->back()->with('success'__('ChatGPT Setting successfully saved.'));
    }

    
//ip settings
    
public function createIp()
    {
        return 
view('restrict_ip.create');
    }

    public function 
storeIp(Request $request)
    {
        if (
\Auth::user()->can('manage company settings')) {
            
$validator \Validator::make(
                
$request->all(),
                [
                    
'ip' => 'required',
                ]
            );
            if (
$validator->fails()) {
                
$messages $validator->getMessageBag();

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

            
$ip = new IpRestrict();
            
$ip->ip $request->ip;
            
$ip->created_by \Auth::user()->creatorId();
            
$ip->save();

            return 
redirect()->back()->with('success'__('IP successfully created.'));
        } else {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
editIp($id)
    {
        
$ip IpRestrict::find($id);

        return 
view('restrict_ip.edit'compact('ip'));
    }

    public function 
updateIp(Request $request$id)
    {
        if (
\Auth::user()->type == 'company' || \Auth::user()->type == 'super admin') {
            
$validator \Validator::make(
                
$request->all(),
                [
                    
'ip' => 'required',
                ]
            );
            if (
$validator->fails()) {
                
$messages $validator->getMessageBag();

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

            
$ip IpRestrict::find($id);
            
$ip->ip $request->ip;
            
$ip->save();

            return 
redirect()->back()->with('success'__('IP successfully updated.'));
        } else {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
destroyIp($id)
    {
        if (
\Auth::user()->type == 'company' || \Auth::user()->type == 'super admin') {
            
$ip IpRestrict::find($id);
            
$ip->delete();

            return 
redirect()->back()->with('success'__('IP successfully deleted.'));
        } else {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.015 ]--