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

namespace App\Http\Controllers;

use App\Models\BugReport;
use App\Models\BugStage;
use App\Models\Project;
use App\Models\Stage;
use App\Models\Task;
use App\Models\Tax;
// use Artisan;
use Illuminate\Support\Facades\Artisan;
use App\Models\UserProject;
use App\Models\UserWorkspace;
use App\Models\Utility;
use App\Models\Workspace;
use App\Models\EmailTemplate;
use App\Models\Languages;
use App\Models\Mail\EmailTest;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use App\Models\User;

class WorkspaceController extends Controller
{

    public function store(Request $request,$slug)
    {
        $objUser = Auth::user();

        $validator = \Validator::make(
            $request->all(),
            [
                'name' => 'required|unique:workspaces',
            ]
        );
        if ($validator->fails()) {
            return redirect()->back()->with('error', $validator->errors()->first());
        }
        $parentWorksace  = Utility::getWorkspaceBySlug($slug);
        
        $objWorkspace = Workspace::create(
            [
                'created_by' => $objUser->id,
                'name' => $request->name,
                'theme_color' => $parentWorksace['theme_color'],
                'color_flag' => $parentWorksace['color_flag'],
                'currency_code' => 'USD',
                'paypal_mode' => 'sandbox',
            ]
        );

        UserWorkspace::create(
            [
                'user_id' => $objUser->id,
                'workspace_id' => $objWorkspace->id,
                'permission' => 'Owner',
            ]
        );

        $objUser->currant_workspace = $objWorkspace->id;
        $objUser->save();

        return redirect()->route('home', $objWorkspace->slug)->with('success', __('Workspace Created Successfully!'));
    }


    //    public function destroy($workspaceID)
    // { 
    //     $objUser   = Auth::user();
    //     $workspace = Workspace::find($workspaceID);
    //     $all_workspaces = Workspace::get();


    //     if($workspace->created_by == $objUser->id)
    //     {

    //       if(count($all_workspaces) > 1)
    //        {
    //         UserWorkspace::where('workspace_id', '=', $workspaceID)->delete();
    //         Stage::where('workspace_id', '=', $workspaceID)->delete(); 
    //         $workspace->delete();
    //         $work_space = Workspace::first();

    //          UserWorkspace::create(
    //                 [
    //                     'user_id' => $objUser->id,
    //                     'workspace_id' => $work_space->id,
    //                     'permission' => 'Owner',
    //                 ]
    //             );
    //          $objUser->currant_workspace = $work_space->id;
    //          $objUser->save();

    //        }
    //     else
    //     {
    //       return redirect()->back()->with('error', __("You can't delete Workspace!"));
    //     }
    //         return redirect()->route('home')->with('success', __('Workspace Deleted Successfully!'));
    //     }
    //     else
    //     {
    //         return redirect()->route('home')->with('error', __("You can't delete Workspace!"));
    //     }
    // }

    // Old 
    // public function destroy($workspaceID)
    // {
    //     $objUser   = Auth::user();
    //     $workspace = Workspace::find($workspaceID);
    //     $all_workspaces = Workspace::get();


    //     if ($workspace->created_by == $objUser->id) {
    //         if (count($all_workspaces) > 1) {

    //             UserWorkspace::where('workspace_id', '=', $workspaceID)->delete();
    //             Stage::where('workspace_id', '=', $workspaceID)->delete();
    //             $workspace->delete();
    //             $work_space = Workspace::first();

    //             $objUser->currant_workspace = $work_space->id;
    //             $objUser->save();
    //         } else {
    //             return redirect()->back()->with('error', __("You can't delete Workspace!"));
    //         }
    //         return redirect()->route('home')->with('success', __('Workspace Deleted Successfully!'));
    //     } else {
    //         return redirect()->route('home')->with('error', __("You can't delete Workspace!"));
    //     }
    // }

    // public function destroy($workspaceID)
    // {
    //     $objUser   = Auth::user();
    //     $workspace = Workspace::find($workspaceID);
    //     $all_workspaces = Workspace::where('created_by','=',Auth::user()->id)->get();
    //     if ($workspace->created_by == $objUser->id) {

    //         if (count($all_workspaces) > 1) {

    //             UserWorkspace::where('workspace_id', '=', $workspaceID)->delete();
    //             Stage::where('workspace_id', '=', $workspaceID)->delete();
    //             $workspace->delete();
    //             $work_space = Workspace::where('created_by','=',Auth::user()->id)->first();

    //             $objUser->currant_workspace = $work_space->id;
    //             $objUser->save();
    //         } else {
    //             return redirect()->back()->with('error', __("You can't delete Workspace!"));
    //         }
    //         return redirect()->route('home')->with('success', __('Workspace Deleted Successfully!'));
    //     } else {
    //         return redirect()->route('home')->with('error', __("You can't delete Workspace!"));
    //     }
    // }

    public function destroy($workspaceID)
    {
        $objUser   = Auth::user();
        $workspace = Workspace::find($workspaceID);
        $all_workspaces = Workspace::where('created_by', '=', Auth::user()->id)->get();
        if ($workspace->created_by == $objUser->id) {

            if (count($all_workspaces) > 1) {

                $currentWorkspaceUsers = UserWorkspace::where([
                    ['workspace_id', '=', $workspaceID],
                    ['permission', '=', 'Member'],
                ])
                    ->get();

                if (count($currentWorkspaceUsers) >= 1) {
                    return redirect()->back()->with('error', __('Please Remove the Users Before Delete the Workspace !!!'));
                } else {
                    UserWorkspace::where('workspace_id', '=', $workspaceID)->delete();
                    Stage::where('workspace_id', '=', $workspaceID)->delete();
                    $workspace->delete();
                    $work_space = Workspace::where('created_by', '=', Auth::user()->id)->first();

                    $objUser->currant_workspace = $work_space->id;
                    $objUser->save();
                }
            } else {
                return redirect()->route('home')->with('error', __('You Can Not Delete the Workspace!!'));
                //return redirect()->back()->with('error', __("You can't delete Workspace!"));
            }
            return redirect()->route('home')->with('success', __('Workspace Deleted Successfully!'));
        } else {
            return redirect()->route('home')->with('error', __("You can't delete Workspace!"));
        }
    }


    //  Old
    // public function leave($workspaceID)
    // {

    //     $objUser = Auth::user();
    //     $all_workspaces = Workspace::get();
    //     $userProjects = Project::where('workspace', '=', $workspaceID)->get();
    //     // dd(count($all_workspaces));


    //     if (count($all_workspaces) > 1) {

    //         $work_space = Workspace::first();

    //         $user_Project = Project::where('workspace', '=', $work_space->id)->get();

    //         foreach ($userProjects as $userProject) {
    //             UserProject::where('project_id', '=', $userProject->id)->where('user_id', '=', $objUser->id)->delete();
    //         }

    //         UserWorkspace::where('workspace_id', '=', $workspaceID)->where('user_id', '=', $objUser->id)->delete();


    //         foreach ($user_Project as $userProject_s) {
    //             UserProject::create(
    //                 [
    //                     'user_id' => $objUser->id,
    //                     'project_id' => $userProject_s->id,

    //                 ]
    //             );
    //         }

    //         UserWorkspace::create(
    //             [
    //                 'user_id' => $objUser->id,
    //                 'workspace_id' => $work_space->id,
    //                 'permission' => 'Owner',
    //             ]
    //         );
    //         $objUser->currant_workspace = $work_space->id;
    //         $objUser->save();
    //     } else {
    //         return redirect()->back()->with('error', __("You can't delete Workspace!"));
    //     }

    //     return redirect()->route('home')->with('success', __('Workspace Leave Successfully!'));
    // }

    public function leave($workspaceID)
    {
        $objUser = Auth::user();
        // $all_workspaces = Workspace::get();
        $all_workspaces = UserWorkspace::where('user_id', '=', Auth::user()->id)->get();
        $userProjects = Project::where('workspace', '=', $workspaceID)->get();

        if (count($all_workspaces) > 1) {
            // $work_space = Workspace::first();
            // $user_Project = Project::where('workspace', '=', $work_space->id)->get();

            foreach ($userProjects as $userProject) {
                UserProject::where('project_id', '=', $userProject->id)->where('user_id', '=', $objUser->id)->delete();
            }
            UserWorkspace::where('workspace_id', '=', $workspaceID)->where('user_id', '=', $objUser->id)->delete();

            $work_space = UserWorkspace::where('user_id', '=', Auth::user()->id)->first();
            $objUser->currant_workspace = $work_space->workspace_id;
            $objUser->save();
        } else {
            return redirect()->route('home')->with('error', __('You Can Not Leave the Workspace. Please Contact Your Company!!!'));
            foreach ($userProjects as $userProject) {
                UserProject::where('project_id', '=', $userProject->id)->where('user_id', '=', $objUser->id)->delete();
            }
            UserWorkspace::where('workspace_id', '=', $workspaceID)->where('user_id', '=', $objUser->id)->delete();
            $user = User::find($objUser->id);
            $user->delete();

            return redirect()->back()->with('Sussess', __("Workspace Leave Successfully!"));
        }

        return redirect()->route('home')->with('success', __('Workspace Leave Successfully!'));
    }

    public function changeCurrentWorkspace($workspaceID)
    {
        $objWorkspace = Workspace::find($workspaceID);
        if ($objWorkspace && $objWorkspace->is_active) {
            $currentWorkspace           = Utility::getWorkspaceBySlug($objWorkspace->slug);
            $objUser                    = Auth::user();
            $objUser->currant_workspace = $workspaceID;
            $objUser->save();

            if (Auth::user()->getGuard() == 'client') {

                return redirect()->route('client.home')->with('success', __('Workspace Change Successfully!'));
            } else {

                return redirect()->route('home')->with('success', __('Workspace Change Successfully!'));
            }
        } else {
            return redirect()->back()->with('error', __('Workspace is locked'));
        }
    }

    public function changeLangAdmin($lang)
    {
        // if (Auth::user()->type == 'admin' && app('App\Http\Controllers\SettingsController')->setEnvironmentValue(['DEFAULT_ADMIN_LANG' => $lang])) {

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

        //     return redirect()->back()->with('success', __('Language Change Successfully!'));
        // } else {
        //     return redirect()->back()->with('error', __('Something is wrong'));
        // }
        $user = \Auth::user();
        $user->lang = $lang;
        $user->save();
        return redirect()->back()->with('success', __('Language Change Successfully!'));
    }

    public function changeLangcopylink($lang)
    {
        \Cookie::queue('LANGUAGE', $lang, 120);

        return redirect()->back()->with('success', __('Language Change Successfully!'));
    }

    public function changeLangWorkspace1($workspaceID, $lang)
    {

        $user = \Auth::user();
        $user->lang = $lang;
        $user->save();
        return redirect()->back()->with('success', __('Language Change Successfully!'));
    }
    public function changeLangWorkspace($workspaceID, $lang)
    {

        $user = \Auth::user();
        $user->lang = $lang;
        $user->save();

        return redirect()->back()->with('success', __('Language Change Successfully!'));
    }

    public function langWorkspace($currantLang = '')
    {
        $objUser = Auth::user();
        if ($objUser->type == 'admin') {

            $languages = \App\Models\Languages::pluck('lang_fullname', 'lang_code');
            $settings = \App\Models\Utility::getAdminPaymentSettings();
            if (!empty($settings['disable_lang'])) {
                $disabledLang = explode(',', $settings['disable_lang']);
            } else {
                $disabledLang = [];
            }
            $dir = base_path() . '/resources/lang/' . $currantLang;
            if (!empty($currantLang)) {
                $dir = base_path() . '/resources/lang/' . $currantLang;
                if (!is_dir($dir)) {
                    $dir = base_path() . '/resources/lang/en';
                }
            } else {
                $currantLang = env('DEFAULT_LANG') ?? 'en';
                $dir         = base_path() . '/resources/lang/' . $currantLang;
            }

            $arrLabel = json_decode(file_get_contents($dir . '.json'));

            $arrFiles   = array_diff(
                scandir($dir),
                array(
                    '..',
                    '.',
                )
            );
            $arrMessage = [];
            foreach ($arrFiles as $file) {
                $fileName = basename($file, ".php");
                $fileData = $myArray = include $dir . "/" . $file;
                if (is_array($fileData)) {
                    $arrMessage[$fileName] = $fileData;
                }
            }
            $workspace = new Workspace();

            return view('lang.index', compact('workspace', 'currantLang', 'arrLabel', 'arrMessage', 'disabledLang', 'languages'));
        } else {
            redirect()->route('home');
        }
    }

    public function storeLangDataWorkspace($currantLang, Request $request)
    {

        $objUser = Auth::user();
        if ($objUser->type == 'admin') {
            $dir      = base_path() . '/resources/lang';
            $jsonFile = $dir . "/" . $currantLang . ".json";

            file_put_contents($jsonFile, json_encode($request->label));

            $langFolder = $dir . "/" . $currantLang;

            if ($request->message) {
                foreach ($request->message as $fileName => $fileData) {
                    $content = "<?php return [";
                    $content .= $this->buildArray($fileData);
                    $content .= "];";
                    file_put_contents($langFolder . "/" . $fileName . '.php', $content);
                }
            }

            return redirect()->route('lang_workspace', [$currantLang])->with('success', __('Language Save Successfully!'));
        } else {
            redirect()->route('home');
        }
    }

    public function buildArray($fileData)
    {
        $content = "";
        foreach ($fileData as $label => $data) {
            if (is_array($data)) {
                $content .= "'$label'=>[" . $this->buildArray($data) . "],";
            } else {
                $content .= "'$label'=>'" . addslashes($data) . "',";
            }
        }

        return $content;
    }

    public function createLangWorkspace()
    {
        $objUser = Auth::user();
        if ($objUser->type == 'admin') {
            return view('lang.create');
        } else {
            redirect()->route('home');
        }
    }

    public function storeLangWorkspace(Request $request)
    {
        $validator = \Validator::make(
            $request->all(),
            [
                'lang_code' => 'required|unique:languages',
                'lang_fullname' => 'required|unique:languages',
            ]
        );
        if ($validator->fails()) {
            $messages = $validator->getMessageBag();

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

        $newlang        = new Languages();
        $newlang->lang_code = $request->lang_code;
        $newlang->lang_fullname = $request->lang_fullname;
        $newlang->save();

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

            $Filesystem = new Filesystem();
            $langCode   = strtolower($request->lang_code);

            $langDir = base_path() . '/resources/lang/';
            $dir     = $langDir;

            $dir      = $dir . $langCode;
            $jsonFile = $dir . ".json";
            \File::copy($langDir . 'en.json', $jsonFile);

            if (!is_dir($dir)) {
                mkdir($dir);
                chmod($dir, 0777);
            }
            $Filesystem->copyDirectory($langDir . "en", $dir . "/");

            return redirect()->route('lang_workspace', [$langCode])->with('success', __('Language Created Successfully!'));
        } else {
            redirect()->route('home');
        }
    }

    public function destroyLang($lang)
    {
        $default_lang = env('DEFAULT_LANG') ?? 'en';

        $langDir = base_path() . '/resources/lang/';
        if (is_dir($langDir)) {
            // remove directory and file
            Utility::delete_directory($langDir . $lang);
            unlink($langDir . $lang . '.json');
            // update user that has assign deleted language.
            Workspace::where('lang', 'LIKE', $lang)->update(['lang' => $default_lang]);
        }

        return redirect()->route('lang_workspace', $default_lang)->with('success', __('Language Deleted Successfully!'));
    }

    public function rename($workspaceID)
    {
        $objUser          = Auth::user();
        $workspace        = Workspace::find($workspaceID);
        $currentWorkspace = Utility::getWorkspaceBySlug($workspace->slug);
        if ($currentWorkspace && $workspace->created_by == $objUser->id) {
            return view('users.rename_workspace', compact('workspace'));
        } else {
            return redirect()->route('home')->with('error', __("You can't rename Workspace!"));
        }
    }

    public function update(Request $request, $id)
    {
        $objUser   = Auth::user();
        $workspace = Workspace::find($id);

        if ($workspace->created_by == $objUser->id) {
            $workspace->name = $request->name;
            $workspace->save();

            return redirect()->route('home')->with('success', __('Rename Successfully.!'));
        } else {
            return redirect()->route('home')->with('error', __('You can\'t rename Workspace!'));
        }
    }

    public function settings($slug)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);

        if ($currentWorkspace && $currentWorkspace->created_by == $objUser->id) {
            $taxes     = Tax::where('workspace_id', '=', $currentWorkspace->id)->get();
            $stages    = Stage::where('workspace_id', '=', $currentWorkspace->id)->orderBy('order')->get();
            $bugStages = BugStage::where('workspace_id', '=', $currentWorkspace->id)->orderBy('order')->get();

            $colors = [
                '003580',
                '666666',
                '6677ef',
                'f50102',
                'f9b034',
                'fbdd03',
                'c1d82f',
                '37a4e4',
                '8a7966',
                '6a737b',
                '050f2c',
                '0e3666',
                '3baeff',
                '3368e6',
                'b84592',
                'f64f81',
                'f66c5f',
                'fac168',
                '46de98',
                '40c7d0',
                'be0028',
                '2f9f45',
                '371676',
                '52325d',
                '511378',
                '0f3866',
                '48c0b6',
                '297cc0',
                'ffffff',
                '000000',
            ];
            $EmailTemplates = EmailTemplate::all();

            $payment_detail = Utility::getPaymentSetting($currentWorkspace->id);

            return view('users.setting', compact('currentWorkspace', 'EmailTemplates', 'taxes', 'stages', 'bugStages', 'colors', 'payment_detail'));
        } else {
            return redirect()->route('home')->with('error', __("You can't access workspace settings!"));
        }
    }

    public function settingsStore($slug, Request $request)
    {

        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);

        if ($currentWorkspace->created_by == $objUser->id) {
            $validate      = [];
            $stripe_status = $request->is_stripe_enabled == 'on' ? 1 : 0;
            $paypal_status = $request->is_paypal_enabled == 'on' ? 1 : 0;

            if (isset($request->is_bank_enabled) && $request->is_bank_enabled == 'on') {
                $validate['bank_details'] = 'required|string';
            }

            if ($stripe_status == 1) {
                $validate['stripe_key']    = 'required|string|max:255';
                $validate['stripe_secret'] = 'required|string|max:255';
            }
            if ($paypal_status == 1) {
                $validate['paypal_client_id']  = 'required|string|max:255';
                $validate['paypal_secret_key'] = 'required|string|max:255';
            }

            if (isset($request->is_paystack_enabled) && $request->is_paystack_enabled == 'on') {
                $validate['paystack_public_key'] = 'required|string';
                $validate['paystack_secret_key'] = 'required|string';
            }
            if (isset($request->is_flutterwave_enabled) && $request->is_flutterwave_enabled == 'on') {
                $validate['flutterwave_public_key'] = 'required|string';
                $validate['flutterwave_secret_key'] = 'required|string';
            }
            if (isset($request->is_razorpay_enabled) && $request->is_razorpay_enabled == 'on') {
                $validate['razorpay_public_key'] = 'required|string';
                $validate['razorpay_secret_key'] = 'required|string';
            }
            if (isset($request->is_mercado_enabled) && $request->is_mercado_enabled == 'on') {
                $validate['mercado_access_token']     = 'required|string';
                $validate['mercado_mode'] = 'required|string';
            }
            if (isset($request->is_paytm_enabled) && $request->is_paytm_enabled == 'on') {
                $validate['paytm_mode']          = 'required|string';
                $validate['paytm_merchant_id']   = 'required|string';
                $validate['paytm_merchant_key']  = 'required|string';
                $validate['paytm_industry_type'] = 'required|string';
            }
            if (isset($request->is_mollie_enabled) && $request->is_mollie_enabled == 'on') {
                $validate['mollie_api_key']    = 'required|string';
                $validate['mollie_profile_id'] = 'required|string';
                $validate['mollie_partner_id'] = 'required|string';
            }
            if (isset($request->is_skrill_enabled) && $request->is_skrill_enabled == 'on') {
                $validate['skrill_email'] = 'required|email';
            }
            if (isset($request->is_coingate_enabled) && $request->is_coingate_enabled == 'on') {
                $validate['coingate_mode']       = 'required|string';
                $validate['coingate_auth_token'] = 'required|string';
            }

            if (isset($request->is_toyyibpay_enabled) && $request->is_toyyibpay_enabled == 'on') {
                $validate['toyyibpay_secret_key'] = 'required|string';
                $validate['toyyibpay_category_code'] = 'required|string';
            }

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

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

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

            if (isset($request->is_paytab_enabled) && $request->is_paytab_enabled == 'on') {
                $validate['paytabs_region'] = 'required|string';
                $validate['paytab_server_key'] = 'required|string';
                $validate['paytabs_profile_id'] = 'required|string';
            }

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

            if (isset($request->is_cashfree_enabled) && $request->is_cashfree_enabled == 'on') {
                $validate['cashfree_api_key'] = 'required|string';
                $validate['cashfree_secret_key'] = 'required|string';
            }

            if (isset($request->is_aamarpay_enabled) && $request->is_aamarpay_enabled == 'on') {
                $validate['aamarpay_store_id'] = 'required|string';
                $validate['aamarpay_signature_key'] = 'required|string';
                $validate['aamarpay_description'] = 'required|string';
            }

            if (isset($request->is_paytr_enabled) && $request->is_paytr_enabled == 'on') {
                $validate['paytr_merchant_id'] = 'required|string';
                $validate['paytr_merchant_key'] = 'required|string';
                $validate['paytr_merchant_salt'] = 'required|string';
            }

            if (isset($request->is_midtrans_enabled) && $request->is_midtrans_enabled == 'on') {
                $validate['is_midtrans_enabled'] = 'required|string';
                $validate['midtrans_server_key'] = 'required|string';
            }

            if (isset($request->is_xendit_enabled) && $request->is_xendit_enabled == 'on') {
                $validate['is_xendit_enabled'] = 'required|string';
                $validate['xendit_api_key'] = 'required|string';
                $validate['xendit_token'] = 'required|string';
            }


            if (isset($request->is_yookassa_enabled) && $request->is_yookassa_enabled == 'on') {
                $validate['is_yookassa_enabled'] = 'required|string';
                $validate['yookassa_shopid'] = 'required|string';
                $validate['yookassa_secret_key'] = 'required|string';
            }

            if ($request->has('interval_time')) {
                $validate['interval_time'] = 'required';
            }

            if ($request->has('zoom_account_id')) {
                $validate['zoom_account_id'] = 'required';
            }
            if ($request->has('zoom_client_id')) {
                $validate['zoom_client_id'] = 'required';
            }
            if ($request->has('zoom_client_secret')) {
                $validate['zoom_client_secret'] = 'required';
            }

            $validator = Validator::make(
                $request->all(),
                $validate
            );

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

            $dir = 'logo/';
            if ($request->name) {
                if ($request->logo) {
                    $request->validate(['logo' => 'required']);
                    // $logoName = 'logo_' . $currentWorkspace->id . '.png';
                    $logo_dark_Name = $currentWorkspace->id . '_' . 'logo-light.png';
                    // $request->logo->storeAs('logo', $logoName);

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

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

                if ($request->favicon) {
                    $request->validate(['favicon' => 'required']);
                    $logo_favicon_Name = $currentWorkspace->id . '_' . 'favicon.png';
                    $path = Utility::upload_file($request, 'favicon', $logo_favicon_Name, $dir, []);
                    if ($path['flag'] == 1) {
                        $favicon = $path['url'];
                    } else {
                        return redirect()->back()->with('error', __($path['msg']));
                    }
                    // $request->favicon->storeAs('logo', $logoName);
                    $currentWorkspace->favicon = $logo_favicon_Name;
                }
                // dd($request->color);

                if (isset($request->color) && $request->color_flag == 'false') {
                    $currentWorkspace->theme_color = (!empty($request->color)) ? $request->color : 'theme-3';
                    $currentWorkspace->color_flag = $request->color_flag;
                } else {
                    $currentWorkspace->theme_color = $request->custom_color;
                    $currentWorkspace->color_flag = $request->color_flag;
                }
                $currentWorkspace->site_rtl =   !empty($request->site_rtl) ? $request->site_rtl : 'off';

                $currentWorkspace->cust_darklayout = !empty($request->cust_darklayout) ? 'on' : 'off';
                $currentWorkspace->cust_theme_bg = (!empty($request->cust_theme_bg)) ? 'on' : 'off';

                $currentWorkspace->name = $request->name;
                $currentWorkspace->lang = $request->default_language;
            } elseif ($request->has('interval_time')) {
                $currentWorkspace->interval_time = $request->interval_time;
            } elseif ($request->has('zoom_account_id')) {
                // $currentWorkspace->zoom_api_key = $request->zoom_api_key;
                // $currentWorkspace->zoom_api_secret = $request->zoom_api_secret;

                $currentWorkspace->zoom_account_id = $request->zoom_account_id;
                $currentWorkspace->zoom_client_id = $request->zoom_client_id;
                $currentWorkspace->zoom_client_secret = $request->zoom_client_secret;
            } elseif ($request->invoice_template) {
                $currentWorkspace->invoice_template = $request->invoice_template;
                $currentWorkspace->invoice_color    = $request->invoice_color;
            } elseif ($request->has('invoice_footer_title')) {
                $currentWorkspace->invoice_footer_title = $request->invoice_footer_title;
                $currentWorkspace->invoice_footer_notes = $request->invoice_footer_notes;
            } elseif ($request->currency) {
                $currentWorkspace->currency          = $request->currency;
                $currentWorkspace->currency_code     = $request->currency_code;
                $currentWorkspace->is_stripe_enabled = $stripe_status;
                $currentWorkspace->stripe_key        = $request->stripe_key;
                $currentWorkspace->stripe_secret     = $request->stripe_secret;
                $currentWorkspace->is_paypal_enabled = $paypal_status;
                $currentWorkspace->paypal_mode       = $request->paypal_mode;
                $currentWorkspace->paypal_client_id  = $request->paypal_client_id;
                $currentWorkspace->paypal_secret_key = $request->paypal_secret_key;

                $post = [];

                // Save bank Detail
                if (isset($request->is_bank_enabled) && $request->is_bank_enabled == 'on') {
                    $post['is_bank_enabled'] = $request->is_bank_enabled;
                    $post['bank_details'] = $request->bank_details;
                } else {
                    $post['is_bank_enabled'] = 'off';
                }

                // Save Paystack Detail
                if (isset($request->is_paystack_enabled) && $request->is_paystack_enabled == 'on') {
                    $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';
                }

                // Save Fluuterwave Detail
                if (isset($request->is_flutterwave_enabled) && $request->is_flutterwave_enabled == 'on') {
                    $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';
                }

                // Save Razorpay Detail
                if (isset($request->is_razorpay_enabled) && $request->is_razorpay_enabled == 'on') {
                    $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';
                }

                // Save Marcado Detail

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

                // Save Paytm Detail
                if (isset($request->is_paytm_enabled) && $request->is_paytm_enabled == 'on') {
                    $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';
                }

                // Save Mollie Detail
                if (isset($request->is_mollie_enabled) && $request->is_mollie_enabled == 'on') {
                    $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';
                }

                // Save Skrill Detail
                if (isset($request->is_skrill_enabled) && $request->is_skrill_enabled == 'on') {
                    $post['is_skrill_enabled'] = $request->is_skrill_enabled;
                    $post['skrill_email']      = $request->skrill_email;
                } else {
                    $post['is_skrill_enabled'] = 'off';
                }

                // Save Coingate Detail
                if (isset($request->is_coingate_enabled) && $request->is_coingate_enabled == 'on') {
                    $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') {
                    $post['is_paymentwall_enabled'] = $request->is_paymentwall_enabled;
                    $post['paymentwall_public_key']       = $request->paymentwall_public_key;
                    $post['paymentwall_private_key'] = $request->paymentwall_private_key;
                } else {
                    $post['is_paymentwall_enabled'] = 'off';
                }

                // Save Toyyibpay Detail
                if (isset($request->is_toyyibpay_enabled) && $request->is_toyyibpay_enabled == 'on') {

                    $post['is_toyyibpay_enabled'] = $request->is_toyyibpay_enabled;
                    $post['toyyibpay_secret_key'] = $request->toyyibpay_secret_key;
                    $post['toyyibpay_category_code'] = $request->toyyibpay_category_code;
                } else {
                    $post['is_toyyibpay_enabled'] = 'off';
                }

                // Save payfast Detail
                if (isset($request->is_payfast_enabled) && $request->is_payfast_enabled == 'on') {
                    $post['is_payfast_enabled'] = $request->is_payfast_enabled;
                    $post['payfast_merchant_key'] = $request->payfast_merchant_key;
                    $post['payfast_merchant_id'] = $request->payfast_merchant_id;
                    $post['payfast_signature'] = $request->payfast_signature;
                    $post['payfast_mode'] = $request->payfast_mode;
                } else {
                    $post['is_payfast_enabled'] = 'off';
                }

                // Save iyzipay Detail
                if (isset($request->is_iyzipay_enabled) && $request->is_iyzipay_enabled == 'on') {
                    $post['is_iyzipay_enabled'] = $request->is_iyzipay_enabled;
                    $post['iyzipay_api_key'] = $request->iyzipay_api_key;
                    $post['iyzipay_secret_key'] = $request->iyzipay_secret_key;
                    $post['iyzipay_mode'] = $request->iyzipay_mode;
                } else {
                    $post['is_iyzipay_enabled'] = 'off';
                }

                // Save sspay Detail
                if (isset($request->is_sspay_enabled) && $request->is_sspay_enabled == 'on') {
                    $post['is_sspay_enabled'] = $request->is_sspay_enabled;
                    $post['sspay_secret_key'] = $request->sspay_secret_key;
                    $post['sspay_category_code'] = $request->sspay_category_code;
                } else {
                    $post['is_sspay_enabled'] = 'off';
                }

                // Save paytab Detail
                if (isset($request->is_paytab_enabled) && $request->is_paytab_enabled == 'on') {
                    $post['is_paytab_enabled'] = $request->is_paytab_enabled;
                    $post['paytabs_profile_id'] = $request->paytabs_profile_id;
                    $post['paytab_server_key'] = $request->paytab_server_key;
                    $post['paytabs_region'] = $request->paytabs_region;
                } else {
                    $post['is_paytab_enabled'] = 'off';
                }

                // Save benefit Detail
                if (isset($request->is_benefit_enabled) && $request->is_benefit_enabled == 'on') {
                    $post['is_benefit_enabled'] = $request->is_benefit_enabled;
                    $post['benefit_secret_key'] = $request->benefit_secret_key;
                    $post['benefit_publishable_key'] = $request->benefit_publishable_key;
                } else {
                    $post['is_benefit_enabled'] = 'off';
                }

                // Save cashfree Detail
                if (isset($request->is_cashfree_enabled) && $request->is_cashfree_enabled == 'on') {
                    $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';
                }

                // Save aamarpay Detail
                if (isset($request->is_aamarpay_enabled) && $request->is_aamarpay_enabled == 'on') {
                    $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';
                }

                // Save PAYTr Detail
                if (isset($request->is_paytr_enabled) && $request->is_paytr_enabled == 'on') {
                    $post['is_paytr_enabled'] = $request->is_paytr_enabled;
                    $post['paytr_merchant_key'] = $request->paytr_merchant_key;
                    $post['paytr_merchant_id'] = $request->paytr_merchant_id;
                    $post['paytr_merchant_salt'] = $request->paytr_merchant_salt;
                } else {
                    $post['is_paytr_enabled'] = 'off';
                }

                // Save Midtrans Detail
                if (isset($request->is_midtrans_enabled) && $request->is_midtrans_enabled == 'on') {
                    $post['is_midtrans_enabled'] = $request->is_midtrans_enabled;
                    $post['midtrans_mode'] = $request->midtrans_mode;
                    $post['midtrans_server_key'] = $request->midtrans_server_key;
                } else {
                    $post['is_midtrans_enabled'] = 'off';
                }

                // save Xendit Details
                if (isset($request->is_xendit_enabled) && $request->is_xendit_enabled == 'on') {
                    $post['is_xendit_enabled'] = $request->is_xendit_enabled;
                    $post['xendit_api_key'] = $request->xendit_api_key;
                    $post['xendit_token'] = $request->xendit_token;
                } else {
                    $post['is_xendit_enabled'] = 'off';
                }


                // save yookassa Details
                if (isset($request->is_yookassa_enabled) && $request->is_yookassa_enabled == 'on') {
                    $post['is_yookassa_enabled'] = $request->is_yookassa_enabled;
                    $post['yookassa_shopid'] = $request->yookassa_shopid;
                    $post['yookassa_secret_key'] = $request->yookassa_secret_key;
                } else {
                    $post['is_yookassa_enabled'] = 'off';
                }

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

                foreach ($post as $key => $data) {
                    \DB::insert(
                        'insert into payment_settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`)',
                        [
                            $data,
                            $key,
                            $currentWorkspace->id,
                            $created_at,
                            $updated_at,
                        ]
                    );
                }
            } else {
                $currentWorkspace->company   = $request->company;
                $currentWorkspace->address   = $request->address;
                $currentWorkspace->city      = $request->city;
                $currentWorkspace->state     = $request->state;
                $currentWorkspace->zipcode   = $request->zipcode;
                $currentWorkspace->country   = $request->country;
                $currentWorkspace->telephone = $request->telephone;
            }
            $currentWorkspace->save();

            return redirect()->back()->with('success', __('Settings Save Successfully.!'));
        } else {
            return redirect()->route('home')->with('error', __("You can't access workspace settings!"));
        }
    }

    public function ZoomMeetingStore($slug, Request $request)
    {

        if ($request->has('zoom_account_id')) {
            $validate['zoom_account_id'] = 'required';
        }
        if ($request->has('zoom_client_id')) {
            $validate['zoom_client_id'] = 'required';
        }
        if ($request->has('zoom_client_secret')) {
            $validate['zoom_client_secret'] = 'required';
        }

        $validator = Validator::make(
            $request->all(),
            $validate
        );

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

        // Save PAYTr Detail
        $post['zoom_account_id'] = $request->zoom_account_id;
        $post['zoom_client_id'] = $request->zoom_client_id;
        $post['zoom_client_secret'] = $request->zoom_client_secret;


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


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

        return redirect()->back()->with('success', __('Zoom Metting Saved Successfully.'));
    }

    public function create_tax($slug)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->created_by == $objUser->id) {
            return view('users.create_tax', compact('currentWorkspace'));
        }
    }

    public function edit_tax($slug, $id)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->created_by == $objUser->id) {
            $tax = Tax::find($id);

            return view('users.edit_tax', compact('currentWorkspace', 'tax'));
        }
    }

    public function store_tax($slug, Request $request)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->created_by == $objUser->id) {
            $request->validate(
                [
                    'name' => [
                        'required',
                        'string',
                        'max:255',
                    ],
                    'rate' => ['required'],
                ]
            );
            $tax               = new Tax();
            $tax->name         = $request->name;
            $tax->rate         = $request->rate;
            $tax->workspace_id = $currentWorkspace->id;
            $tax->save();

            return redirect()->back()->with('success', __('Tax Save Successfully.!'));
        } else {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }

    public function update_tax($slug, Request $request, $id)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->created_by == $objUser->id) {
            $request->validate(
                [
                    'name' => [
                        'required',
                        'string',
                        'max:255',
                    ],
                    'rate' => ['required'],
                ]
            );
            $tax       = Tax::find($id);
            $tax->name = $request->name;
            $tax->rate = $request->rate;
            $tax->save();

            return redirect()->back()->with('success', __('Tax Save Successfully.!'));
        } else {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }

    public function destroy_tax($slug, $id)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->created_by == $objUser->id) {
            $tax = Tax::find($id);
            $tax->delete();

            return redirect()->back()->with('success', __('Tax Delete Successfully.!'));
        } else {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }

    public function store_stages($slug, Request $request)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->created_by == $objUser->id) {

            $rules      = [
                'stages' => 'required|present|array',
            ];
            $attributes = [];
            if ($request->stages) {

                foreach ($request->stages as $key => $val) {
                    $rules['stages.' . $key . '.name']      = 'required|max:255';
                    $attributes['stages.' . $key . '.name'] = __('Stage Name');
                }
            }
            $validator = \Validator::make($request->all(), $rules, [], $attributes);
            if ($validator->fails()) {
                $messages = $validator->getMessageBag();

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

            $arrStages = Stage::where('workspace_id', '=', $currentWorkspace->id)->orderBy('order')->pluck('name', 'id')->all();
            $order     = 0;
            foreach ($request->stages as $key => $stage) {

                $obj = null;
                if ($stage['id']) {
                    $obj = Stage::find($stage['id']);
                    unset($arrStages[$obj->id]);
                } else {
                    $obj               = new Stage();
                    $obj->workspace_id = $currentWorkspace->id;
                }
                $obj->name     = $stage['name'];
                $obj->color    = $stage['color'];
                $obj->order    = $order++;
                $obj->complete = 0;
                $obj->save();
            }

            $taskExist = [];
            if ($arrStages) {
                foreach ($arrStages as $id => $name) {
                    $count = Task::where('status', '=', $id)->count();
                    if ($count != 0) {
                        $taskExist[] = $name;
                    } else {
                        Stage::find($id)->delete();
                    }
                }
            }

            $lastStage = Stage::where('workspace_id', '=', $currentWorkspace->id)->orderBy('order', 'desc')->first();
            if ($lastStage) {
                $lastStage->complete = 1;
                $lastStage->save();
            }

            if (empty($taskExist)) {
                return redirect()->back()->with('success', __('Stage Save Successfully.!'));
            } else {
                return redirect()->back()->with('error', __('Please remove tasks from stage: ' . implode(', ', $taskExist)));
            }
        } else {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }

    public function store_bug_stages($slug, Request $request)
    {
        $objUser          = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        if ($currentWorkspace->created_by == $objUser->id) {
            $rules      = [
                'stages' => 'required|present|array',
            ];
            $attributes = [];
            if ($request->stages) {

                foreach ($request->stages as $key => $val) {
                    $rules['stages.' . $key . '.name']      = 'required|max:255';
                    $attributes['stages.' . $key . '.name'] = __('Stage Name');
                }
            }
            $validator = \Validator::make($request->all(), $rules, [], $attributes);
            if ($validator->fails()) {
                $messages = $validator->getMessageBag();

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

            $arrStages = BugStage::where('workspace_id', '=', $currentWorkspace->id)->orderBy('order')->pluck('name', 'id')->all();
            $order     = 0;
            foreach ($request->stages as $key => $stage) {

                $obj = null;
                if ($stage['id']) {
                    $obj = BugStage::find($stage['id']);
                    unset($arrStages[$obj->id]);
                } else {
                    $obj               = new BugStage();
                    $obj->workspace_id = $currentWorkspace->id;
                }
                $obj->name     = $stage['name'];
                $obj->color    = $stage['color'];
                $obj->order    = $order++;
                $obj->complete = 0;
                $obj->save();
            }

            $taskExist = [];
            if ($arrStages) {
                foreach ($arrStages as $id => $name) {
                    $count = BugReport::where('status', '=', $id)->count();
                    if ($count != 0) {
                        $taskExist[] = $name;
                    } else {
                        BugStage::find($id)->delete();
                    }
                }
            }

            $lastStage = BugStage::where('workspace_id', '=', $currentWorkspace->id)->orderBy('order', 'desc')->first();
            if ($lastStage) {
                $lastStage->complete = 1;
                $lastStage->save();
            }

            if (empty($taskExist)) {
                return redirect()->back()->with('success', __('Stage Save Successfully.!'));
            } else {
                return redirect()->back()->with('error', __('Please remove bugs from stage: ' . implode(', ', $taskExist)));
            }
        } else {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }


    public function settingsSlack($slug, Request $request)
    {

        $objUser          = Auth::user();

        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        $created_by = $currentWorkspace->id;
        if ($currentWorkspace->created_by == $objUser->id) {
            $post = [];
            $post['slack_webhook'] = $request->slack_webhook;
            if (isset($request->project_notificaation) && $request->project_notificaation == '1') {
                $post['project_notificaation'] = $request->project_notificaation;
            } else {
                $post['project_notificaation'] = '0';
            }

            $post['task_notificaation'] = $request->has('task_notificaation') ? $request->input('task_notificaation') : 0;
            $post['taskmove_notificaation'] = $request->has('taskmove_notificaation') ? $request->input('taskmove_notificaation') : 0;
            $post['taskcom_notificaation'] = $request->has('taskcom_notificaation') ? $request->input('taskcom_notificaation') : 0;
            $post['milestone_notificaation'] = $request->has('milestone_notificaation') ? $request->input('milestone_notificaation') : 0;
            $post['milestonest_notificaation'] = $request->has('milestonest_notificaation') ? $request->input('milestonest_notificaation') : 0;
            $post['invoice_notificaation'] = $request->has('invoice_notificaation') ? $request->input('invoice_notificaation') : 0;
            $post['invoicest_notificaation'] = $request->has('invoicest_notificaation') ? $request->input('invoicest_notificaation') : 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 payment_settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`) ',
                        [
                            $data,
                            $key,
                            $created_by,
                            $created_at,
                            $updated_at,
                        ]
                    );
                }
            }

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


    public function settingstelegram($slug, Request $request)
    {

        $objUser          = Auth::user();

        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        $created_by = $currentWorkspace->id;
        if ($currentWorkspace->created_by == $objUser->id) {
            $post = [];
            $post['telegram_token'] = $request->telegram_token;
            $post['telegram_chatid'] = $request->telegram_chatid;
            if (isset($request->telegram_project_notificaation) && $request->telegram_project_notificaation == '1') {
                $post['telegram_project_notificaation'] = $request->telegram_project_notificaation;
            } else {
                $post['telegram_project_notificaation'] = '0';
            }

            $post['telegram_task_notificaation'] = $request->has('telegram_task_notificaation') ? $request->input('telegram_task_notificaation') : 0;


            $post['telegram_taskmove_notificaation'] = $request->has('telegram_taskmove_notificaation') ? $request->input('telegram_taskmove_notificaation') : 0;


            $post['telegram_taskcom_notificaation'] = $request->has('telegram_taskcom_notificaation') ? $request->input('telegram_taskcom_notificaation') : 0;


            $post['telegram_milestone_notificaation'] = $request->has('telegram_milestone_notificaation') ? $request->input('telegram_milestone_notificaation') : 0;


            $post['telegram_milestonest_notificaation'] = $request->has('telegram_milestonest_notificaation') ? $request->input('telegram_milestonest_notificaation') : 0;


            $post['telegram_invoice_notificaation'] = $request->has('telegram_invoice_notificaation') ? $request->input('telegram_invoice_notificaation') : 0;



            $post['telegram_invoicest_notificaation'] = $request->has('telegram_invoicest_notificaation') ? $request->input('telegram_invoicest_notificaation') : 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 payment_settings (`value`, `name`,`created_by`,`created_at`,`updated_at`) values (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `updated_at` = VALUES(`updated_at`) ',
                        [
                            $data,
                            $key,
                            $created_by,
                            $created_at,
                            $updated_at,
                        ]
                    );
                }
            }

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


    public function saveGoogleCalenderSettings($slug, Request $request)
    {

        // dd($request);
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        $currentWorkspace->is_googlecalendar_enabled = $request->is_googlecalendar_enabled ? 'on' : 'off';

        if ($request->google_calender_json_file) {

            $dir = storage_path() . "/" . md5(time());
            if (!is_dir($dir)) {
                \File::makeDirectory($dir, $mode = 0777, true, true);
            }
            $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);
            $currentWorkspace->google_calender_json_file = $file_path;
        }

        if ($request->google_calender_id) {

            $currentWorkspace->google_calender_id = $request->google_calender_id;
        }

        $currentWorkspace->save();

        return redirect()->back()->with('success', 'Google Calendar Settings updated successfully.');
    }

    public function conpanyEmailSettingStore(Request $request, $slug)
    {
        $user = Auth::user();
        $currentWorkspace = Utility::getWorkspaceBySlug($slug);
        $created_by = $currentWorkspace->id;

        if ($user->type == 'user') {
            $rules = [
                'mail_driver'       => 'required|string|max:50',
                'mail_host'         => 'required|string|max:50',
                'mail_port'         => 'required|string|max:50',
                'mail_username'     => 'required|string|max:50',
                'mail_password'     => 'required|string|max:255',
                'mail_encryption'   => 'required|string|max:50',
                'mail_from_address' => 'required|string|max:50',
                'mail_from_name'    => 'required|string|max:50',
            ];

            $request->validate($rules);

            $post['mail_driver']        = $request->input('mail_driver');
            $post['mail_host']          = $request->input('mail_host');
            $post['mail_port']          = $request->input('mail_port');
            $post['mail_username']      = $request->input('mail_username');
            $post['mail_password']      = $request->input('mail_password');
            $post['mail_encryption']    = $request->input('mail_encryption');
            $post['mail_from_address']  = $request->input('mail_from_address');
            $post['mail_from_name']     = $request->input('mail_from_name');

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

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

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