<?php

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;

class OMIS
{
    // public function __construct()
    // {
    //     $this->initDB();
    //     $this->seedPermissions();
    // }

    public static function sendSMSWithCurl($destination, $message)
    {
        $userName = (SITEVARS->sms_username) ? SITEVARS->sms_username : '';
        $password = (SITEVARS->sms_password) ? SITEVARS->sms_password : '';
        $sender = (SITEVARS->sms_sender) ? SITEVARS->sms_sender : '';
        $url = (SITEVARS->sms_api) ? SITEVARS->sms_api : 'http://api.ininepal.com/api/index?';
        $encodedMessage = urlencode($message);
        $encodedDestination = urlencode($destination);
        $url_query = "username={$userName}&password={$password}&msg={$encodedMessage}&contacts={$encodedDestination}&responsetype=json";
        $url_final = $url . $url_query;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url_final);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);

        $response = curl_exec($ch);
        ob_clean();
        if ($response === false) {
            // Handle the error if needed (e.g., log the error)
            return false;
        }

        // Close the cURL session
        curl_close($ch);
        return true;
    }

    //CONSULTANCY RELATED TEMP FUNCTIONS
    public static function createMenuLink($text, $URL)
    {
        $isActive = request()->fullUrl() == $URL;
        $activeClass = $isActive ? 'active' : '';
        ?>
        <li>
            <a class="nav-link menu-link <?php echo $activeClass; ?>" href="<?php echo $URL; ?>"><i class="ri-file-text-line "></i> <span data-key="t-landing">
                    <?php echo $text; ?>
                </span></a>
        </li>
<?php
}

    public static function getSiteVars()
    {
        $siteVars = DB::table("settings")->where('status', 1)->orderby('display_order')->first();

        return $siteVars;
    }

    public static function showForm($formID)
    {
        if (is_numeric($formID)) {
            $Form = DB::table("forms")->where('form_id', $formID)->first();
        } else {
            $Form = DB::table("forms")->where('alias', $formID)->first();
        }
        if (!$Form) {
            // Handle the case where the form with the given ID/alias doesn't exist
            return "Error: Form (ID/Alias: $formID) not found.";
        }
        $csrfToken = csrf_token();
        if (session('success')) {
            echo '<div class="alert alert-success" role="alert">';
            echo session('success');
            echo '</div>';
        }
        echo '<form class="mt-5" action="' . route("form.submit") . '" method="POST">';
        echo '<input type="hidden" name="_token" value="' . $csrfToken . '">';
        echo '<input type="hidden" name="form_id" value="' . $Form->form_id . '">';
        $form_fields = json_decode($Form->form_fields);
        foreach ($form_fields as $field) {
            $fieldAlias = strtolower($field->fieldAlias);
            $fieldName = strtolower($field->fieldName);
            $fieldType = $field->fieldType;
            $fieldDefault = $field->fieldDefault;
            $fieldCss = $field->fieldCss;
            echo '<div class="mb-3 ' . $fieldCss . '">';
            echo '<label for="' . $fieldAlias . '" class="form-label">' . ucfirst($fieldName) . '</label>';
            // Check if the "required" class is present in $fieldCss and add the required attribute
            $isRequired = strpos($fieldCss, 'required') !== false;
            if ($fieldType === 'textarea') {
                echo '<textarea class="form-control ' . ($isRequired ? 'required' : '') . '" id="' . $fieldAlias . '" name="' . $fieldAlias . '" ' . ($isRequired ? 'required' : '') . '>' . $fieldDefault . '</textarea>';
            } else {
                echo '<input type="' . $fieldType . '" class="form-control ' . ($isRequired ? 'required' : '') . '" id="' . $fieldAlias . '" name="' . $fieldAlias . '" value="' . $fieldDefault . '" ' . ($isRequired ? 'required' : '') . '>';
            }
            echo '</div>';
        }
        echo '<button type="submit" class="btn btn-primary">Submit</button>';
        echo '</form>';
    }

    public static function seedPermissions()
    {
        $modelNames = self::getModelNames();

        foreach ($modelNames as $modelName) {
            self::createPermission($modelName, 'create');
            self::createPermission($modelName, 'edit');
            self::createPermission($modelName, 'index');
            self::createPermission($modelName, 'delete');
            self::createPermission($modelName, 'store');
            self::createPermission($modelName, 'update');
        }
    }

    public static function getModelNames()
    {
        // Adjust the directory path based on your model location
        $modelsDirectory = app_path('Models');
        $files = scandir($modelsDirectory);
        $models = [];

        foreach ($files as $file) {
            if (pathinfo($file, PATHINFO_EXTENSION) == 'php') {
                $modelName = pathinfo($file, PATHINFO_FILENAME);
                $models[] = $modelName;
            }
        }

        return $models;
    }
    public static function createPermission($modelName, $command)
    {

        $AdminUser = DB::table('users')
            ->where('roles_id', 1)
            ->first();
        if (!$AdminUser) {
            // dd("hello");
            DB::table('users')->insert([
                'name' => 'Prajwal Adhikari',
                'email' => 'prajwalbro@hotmail.com',
                'username' => 'prajwalbro@hotmail.com',
                'password' => Hash::make('p@ssw0rd'),
                'roles_id' => 1,
                'created_at' => now(), // or use a specific timestamp if needed
                'createdby' => 1, // replace with the actual user ID who created it
                'updated_at' => now(),
                'updatedby' => 1, // replace with the actual user ID who updated it
                'status' => 1, // adjust as needed
            ]);
        }
        $permissionName = "{$command} {$modelName}";
        $existingPermission = DB::table('permissions')
            ->where('title', $permissionName)
            ->first();
        $adminRole = DB::table('roles')
            ->where('title', 'admin')
            ->first();
        if (!$existingPermission) {
            $LastInsertID = DB::table('permissions')->insert([
                'title' => ucfirst($command) . ' ' . $modelName,
                'alias' => strtolower("{$command}_{$modelName}"),
                'modal' => $modelName,
                'command' => $command,
                'created_at' => now(), // or use a specific timestamp if needed
                'createdby' => 1, // replace with the actual user ID who created it
                'updated_at' => now(),
                'updatedby' => 1, // replace with the actual user ID who updated it
                'status' => 1, // adjust as needed
            ]);
            DB::table('rolepermissions')->insert([
                'roles_id' => $adminRole->role_id,
                'permissions_id' => $LastInsertID,
                'created_at' => now(),
                'createdby' => 1,
                'updated_at' => now(),
                'updatedby' => 1,
                'status' => 1,

            ]);
        }
    }
    private function initDB()
    {
        static $initialized = false;
        if (!$initialized) {
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_operation_logs` (
                `operation_id` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `refNo` varchar(255) DEFAULT NULL,
                `user_id` int(11) DEFAULT NULL,
                `operation_start_no` bigint(20) DEFAULT NULL,
                `operation_end_no` bigint(20) DEFAULT NULL,
                `model_name` varchar(100) DEFAULT NULL,
                `model_id` int(11) DEFAULT NULL,
                `operation_name` varchar(100) DEFAULT NULL,
                `previous_values` text DEFAULT NULL,
                `new_values` longtext DEFAULT NULL,
                `created_at` timestamp NULL DEFAULT NULL,
                `updated_at` timestamp NULL DEFAULT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_error_logs` (
                `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `user_id` bigint(20) UNSIGNED DEFAULT NULL,
                `controller_name` varchar(255) DEFAULT NULL,
                `method_name` varchar(255) DEFAULT NULL,
                `errors` longTEXT NULL,
                `created_at` timestamp NULL DEFAULT NULL,
                `updated_at` timestamp NULL DEFAULT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_activity_logs` (
                `activity_id` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `user_id` int(11) DEFAULT NULL,
                `controllerName` varchar(100) DEFAULT NULL,
                `methodName` varchar(100) DEFAULT NULL,
                `actionUrl` varchar(255) DEFAULT NULL,
                `activity` varchar(255) DEFAULT NULL,
                `created_at` timestamp NULL DEFAULT NULL,
                `updated_at` timestamp NULL DEFAULT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_users` (
                `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `name` varchar(255) NULL,
                `email` varchar(255) NULL,
                `username` varchar(255) NULL,
                `email_verified_at` timestamp NULL DEFAULT NULL,
                `password` varchar(255) NULL,
                `remember_token` varchar(100) DEFAULT NULL,
                `display_order` INT(11) DEFAULT 1,
                `roles_id` INT(11),
                `branches_id` INT(11),
                `vendors_id` INT(11),
                `employees_id` INT(11),
                `status` INT(11) DEFAULT 1,
                `created_at` timestamp NULL DEFAULT NULL,
                `createdby` INT(11),
                `updated_at` timestamp NULL DEFAULT NULL,
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS tbl_roles (
                role_id INT(11) AUTO_INCREMENT PRIMARY KEY,
                title VARCHAR(255),
                alias VARCHAR(255),
                description TEXT,
                display_order INT(11),
                status INT(11),
                remarks TEXT,
                created_at DATETIME,
                createdby INT(11),
                updated_at DATETIME,
                updatedby INT(11)
            );");
            DB::statement("CREATE TABLE IF NOT EXISTS tbl_permissions (
                permission_id INT(11) AUTO_INCREMENT PRIMARY KEY,
               title VARCHAR(255),
               alias VARCHAR(255),
               modal VARCHAR(255),
                command VARCHAR(255),
                created_at DATETIME,
                createdby INT(11),
                updated_at DATETIME,
                updatedby INT(11),
                status INT(11)

            );");
            DB::statement("CREATE TABLE IF NOT EXISTS tbl_rolepermissions (
                    rolepermission_id INT(11) AUTO_INCREMENT PRIMARY KEY,
                    roles_id INT(11),
                    permissions_id INT(11),
                    display_order INT(11),
                    remarks VARCHAR(255),
                    created_at DATETIME,
                    createdby INT(11),
                    updated_at DATETIME,
                    updatedby INT(11),
                    status INT(11)
                );");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_settings` (
                `setting_id` int(11) NOT NULL  AUTO_INCREMENT PRIMARY KEY,
                `title` varchar(255) NULL,
                `description` TEXT NULL,
                `url1` varchar(255) NULL,
                `url2` varchar(255) NULL,
                `email` varchar(255) NULL,
                `phone` varchar(255) NULL,
                `secondary_phone` varchar(255) NULL,
                `google_map` TEXT NULL,
                `fb` varchar(255) NULL,
                `insta` varchar(255) NULL,
                `twitter` varchar(255) NULL,
                `tiktok` varchar(255) NULL,
                `primary_logo` varchar(255) NULL,
                `secondary_logo` varchar(255) NULL,
                `thumb` varchar(255) NULL,
                `icon` varchar(255) NULL,
                `og_image` varchar(255) NULL,
                `no_image` varchar(250) NULL,
                `copyright_text` varchar(250) NULL,
                `content1` TEXT NULL,
                `content2` TEXT NULL,
                `content3` TEXT NULL,
                `seo_title` varchar(255) NULL,
                `seo_description` TEXT NULL,
                `seo_keywords` TEXT NULL,
                `og_tags` TEXT NULL,
                `display_order` int(11) NULL DEFAULT 0,
                `status` int(11) NULL DEFAULT 0,
                `created_at` timestamp NULL DEFAULT NULL,
                `updated_at` timestamp NULL DEFAULT NULL,
                `createdby` int(11) DEFAULT NULL,
                `updatedby` int(11) DEFAULT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS tbl_progressstatuses (
                status_id INT(11) AUTO_INCREMENT PRIMARY KEY,
               title VARCHAR(255),
               alias VARCHAR(255),
                display_order int(11),
                created_at DATETIME,
                createdby INT(11),
                updated_at DATETIME,
                updatedby INT(11),
                status INT(11)

            );");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_articles` (
                `article_id` int(11) NOT NULL  AUTO_INCREMENT PRIMARY KEY,
                `parent_article` int(11) DEFAULT 0,
                `title` varchar(250) NULL,
                `alias` varchar(250) NULL,
                `text` TEXT NULL,
                `cover_photo` varchar(500) NOT NULL,
                `thumb` varchar(255) NULL,
                `display_order` int(11) NULL DEFAULT 0,
                `status` int(11) NULL DEFAULT 0,
                `created_at` timestamp NULL DEFAULT NULL,
                `updated_at` timestamp NULL DEFAULT NULL,
                `createdby` int(11) DEFAULT NULL,
                `updatedby` int(11) DEFAULT NULL
              ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_countries` (
                `country_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `title` VARCHAR(255),
                `alias` VARCHAR(255),
                `description` TEXT,
                `display_order` INT(11),
                `status` INT(11),
                `remarks` TEXT,
                `created_at` DATETIME,
                `createdby` INT(11),
                `updated_at` DATETIME,
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_proviences` (
                `provience_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `countries_id` INT(11) NULL,
                `title` VARCHAR(255),
                `alias` VARCHAR(255),
                `description` TEXT,
                `display_order` INT(11),
                `status` INT(11),
                `remarks` TEXT,
                `created_at` DATETIME,
                `createdby` INT(11),
                `updated_at` DATETIME,
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");

            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_districts` (
                `district_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `proviences_id` INT(11),
                `title` VARCHAR(255),
                `alias` VARCHAR(255),
                `description` TEXT,
                `display_order` INT(11),
                `status` INT(11),
                `remarks` TEXT,
                `created_at` DATETIME DEFAULT NOW(),
                `createdby` INT(11),
                `updated_at` DATETIME DEFAULT NOW(),
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_cities` (
                            `city_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                            `districts_id` INT(11),
                            `title` VARCHAR(255),
                            `alias` VARCHAR(255),
                            `description` TEXT,
                            `display_order` INT(11),
                            `status` INT(11),
                            `remarks` TEXT,
                            `created_at` DATETIME DEFAULT NOW(),
                            `createdby` INT(11),
                            `updated_at` DATETIME DEFAULT NOW(),
                            `updatedby` INT(11)
                          ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
                          ");

            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_companytypes` (
                `companytype_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `title` VARCHAR(255),
                `alias` VARCHAR(255),
                `description` TEXT,
                `display_order` INT(11),
                `status` INT(11),
                `remarks` TEXT,
                `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
                `createdby` INT(11),
                `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_companies` (
                `company_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `title` VARCHAR(255),
                `alias` VARCHAR(255),
                `description` TEXT,
                `address` TEXT,
                `cities_id` INT(11),
                `companytypes_id` INT(11),
                `display_order` INT(11),
                `status` INT(11),
                `remarks` TEXT,
                `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
                `createdby` INT(11),
                `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");
            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_branches` (
    `branch_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `companies_id` INT(11) NULL,
    `title` VARCHAR(255),
    `alias` VARCHAR(255),
    `description` TEXT,
    `email` VARCHAR(255),
    `telephone` VARCHAR(255),
    `phone1` VARCHAR(255),
    `phone2` VARCHAR(255),
    `address` VARCHAR(255),
    `company_reg` VARCHAR(255),
    `company_pan` VARCHAR(255),
    `logo` VARCHAR(255),
    `is_main` INT(11) NULL Default 1,
    `display_order` INT(11),
    `status` INT(11),
    `remarks` TEXT,
    `created_at` DATETIME,
    `createdby` INT(11),
    `updated_at` DATETIME,
    `updatedby` INT(11)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  ");

            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_vendortypes` (
                `vendortypes_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `title` VARCHAR(255),
                `alias` VARCHAR(255),
                `description` TEXT,
                `display_order` INT(11),
                `status` INT(11),
                `remarks` TEXT,
                `created_at` DATETIME DEFAULT NOW(),
                `createdby` INT(11),
                `updated_at` DATETIME DEFAULT NOW(),
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");

            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_vendors` (
                `vendor_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `vendortypes_id` INT(11) NULL,
                `title` VARCHAR(255),
                `alias` VARCHAR(255),
                `description` TEXT,
                `display_order` INT(11),
                `status` INT(11),
                `remarks` TEXT,
                `created_at` DATETIME DEFAULT NOW(),
                `createdby` INT(11),
                `updated_at` DATETIME DEFAULT NOW(),
                `updatedby` INT(11)
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
              ");

            DB::statement("CREATE TABLE IF NOT EXISTS `tbl_genders` (
                                    `gender_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                                    `title` varchar(255) DEFAULT NULL,
                                    `alias` varchar(255) DEFAULT NULL,
                                    `status` varchar(255) DEFAULT NULL,
                                    `remarks` varchar(255) DEFAULT NULL,
                                    `display_order` int(11) DEFAULT NULL,
                                    `created_at` timestamp NULL DEFAULT NULL,
                                    `createdby` int(11) DEFAULT NULL,
                                    `updated_at` timestamp NULL DEFAULT NULL,
                                    `updatedby` int(11) DEFAULT NULL
                                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                                ");

            DB::statement("
                                CREATE TABLE IF NOT EXISTS `tbl_castes` (
                                    `caste_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                                    `title` varchar(255) DEFAULT NULL,
                                    `alias` varchar(255) DEFAULT NULL,
                                    `status` varchar(255) DEFAULT NULL,
                                    `remarks` varchar(255) DEFAULT NULL,
                                    `display_order` int(11) DEFAULT NULL,
                                    `created_at` timestamp NULL DEFAULT NULL,
                                    `createdby` int(11) DEFAULT NULL,
                                    `updated_at` timestamp NULL DEFAULT NULL,
                                    `updatedby` int(11) DEFAULT NULL
                                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                            ");

            DB::statement("
                                CREATE TABLE IF NOT EXISTS `tbl_ethnicities` (
                                    `ethnicity_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                                    `title` varchar(255) DEFAULT NULL,
                                    `alias` varchar(255) DEFAULT NULL,
                                    `status` varchar(255) DEFAULT NULL,
                                    `remarks` varchar(255) DEFAULT NULL,
                                    `display_order` int(11) DEFAULT NULL,
                                    `created_at` timestamp NULL DEFAULT NULL,
                                    `createdby` int(11) DEFAULT NULL,
                                    `updated_at` timestamp NULL DEFAULT NULL,
                                    `updatedby` int(11) DEFAULT NULL
                                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                            ");

            DB::statement("
                            CREATE TABLE IF NOT EXISTS `tbl_dags` (
                                `dag_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                                `title` varchar(255) DEFAULT NULL,
                                `alias` varchar(255) DEFAULT NULL,
                                `status` varchar(255) DEFAULT NULL,
                                `remarks` varchar(255) DEFAULT NULL,
                                `display_order` int(11) DEFAULT NULL,
                                `created_at` timestamp NULL DEFAULT NULL,
                                `createdby` int(11) DEFAULT NULL,
                                `updated_at` timestamp NULL DEFAULT NULL,
                                `updatedby` int(11) DEFAULT NULL
                            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                        ");

            DB::statement("
    CREATE TABLE IF NOT EXISTS `tbl_nationalities` (
        `nationality_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
        `title` varchar(255) DEFAULT NULL,
        `alias` varchar(255) DEFAULT NULL,
        `status` varchar(255) DEFAULT NULL,
        `remarks` varchar(255) DEFAULT NULL,
        `display_order` int(11) DEFAULT NULL,
        `created_at` timestamp NULL DEFAULT NULL,
        `createdby` int(11) DEFAULT NULL,
        `updated_at` timestamp NULL DEFAULT NULL,
        `updatedby` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
");

            DB::statement("
                        CREATE TABLE IF NOT EXISTS `tbl_employees` (
                            `employee_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                            `first_name` varchar(255) DEFAULT NULL,
                            `middle_name` varchar(255) DEFAULT NULL,
                            `last_name` varchar(255) DEFAULT NULL,
                            `email` varchar(255) DEFAULT NULL,
                            `genders_id` int(11) DEFAULT NULL,
                            `nepali_dob` date DEFAULT NULL,
                            `dob` date DEFAULT NULL,
                            `nationalities_id` int(11) DEFAULT NULL,
                            `about_me` text,
                            `signature` varchar(255) DEFAULT NULL,
                            `father_name` varchar(255) DEFAULT NULL,
                            `mother_name` varchar(255) DEFAULT NULL,
                            `grand_father_name` varchar(255) DEFAULT NULL,
                            `grand_mother_name` varchar(255) DEFAULT NULL,
                            `spouse` varchar(255) DEFAULT NULL,
                            `contact` varchar(255) DEFAULT NULL,
                            `alt_contact` varchar(255) DEFAULT NULL,
                            `profile_picture` varchar(255) DEFAULT NULL,
                            `users_id` int(11) DEFAULT NULL,
                            `is_login_required` tinyint(1) DEFAULT NULL,
                            `skills` text,
                            `experience` text,
                            `permanent_address` text,
                            `permanent_city` int(11) DEFAULT NULL,
                            `temporary_address` text,
                            `temporary_city` int(11)  DEFAULT NULL,
                            `old_system_address` text,
                            `education` text,
                            `castes_id` int(11) DEFAULT NULL,
                            `ethnicities_id` int(11) DEFAULT NULL,
                            `dags_id` int(11) DEFAULT NULL,
                            `title` varchar(255) DEFAULT NULL,
                            `alias` varchar(255) DEFAULT NULL,
                            `status` varchar(255) DEFAULT NULL,
                            `display_order` int(11) DEFAULT NULL,
                            `created_at` timestamp NULL DEFAULT NULL,
                            `createdby` int(11) DEFAULT NULL,
                            `updated_at` timestamp NULL DEFAULT NULL,
                            `updatedby` int(11) DEFAULT NULL,
                            `remarks` varchar(255) DEFAULT NULL
                        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                    ");

            DB::statement("
                    CREATE TABLE IF NOT EXISTS `tbl_onboardings` (
                        `onboarding_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                        `doj` datetime DEFAULT NULL,
                        `designations_id` int(11) DEFAULT NULL,
                        `position_status` varchar(255) DEFAULT NULL,
                        `departments_id` int(11) DEFAULT NULL,
                        `shifts_id` int(11) DEFAULT NULL,
                        `agreement` varchar(255) DEFAULT NULL,
                        `nda` varchar(255) DEFAULT NULL,
                        `terms` text DEFAULT NULL,
                        `workoptions` varchar(255) DEFAULT NULL,
                        `title` varchar(255) DEFAULT NULL,
                        `alias` varchar(255) DEFAULT NULL,
                        `status` int(11) DEFAULT NULL,
                        `remarks` text DEFAULT NULL,
                        `display_order` int(11) DEFAULT NULL,
                        `created_at` timestamp NULL DEFAULT NULL,
                        `createdby` int(11) DEFAULT NULL,
                        `updated_at` timestamp NULL DEFAULT NULL,
                        `updatedby` int(11) DEFAULT NULL
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                ");

            //   Dharamaraj

            DB::statement("
                CREATE TABLE IF NOT EXISTS `tbl_departments` (
                    `department_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                    `title` varchar(255) DEFAULT NULL,
                    `alias` varchar(255) DEFAULT NULL,
                    `status` int(11) DEFAULT NULL,
                    `remarks` text DEFAULT NULL,
                    `display_order` int(11) DEFAULT NULL,
                    `created_at` timestamp NULL DEFAULT NULL,
                    `createdby` int(11) DEFAULT NULL,
                    `updated_at` timestamp NULL DEFAULT NULL,
                    `updatedby` int(11) DEFAULT NULL,
                    `branches_id` int(11) DEFAULT NULL,
                    `description` text DEFAULT NULL
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                ");

            DB::statement("
                CREATE TABLE IF NOT EXISTS `tbl_designations` (
                `designation_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `title` varchar(255) DEFAULT NULL,
                `alias` varchar(255) DEFAULT NULL,
                `status` int(11) DEFAULT NULL,
                `remarks` text DEFAULT NULL,
                `display_order` int(11) DEFAULT NULL,
                `created_at` timestamp NULL DEFAULT NULL,
                `createdby` int(11) DEFAULT NULL,
                `updated_at` timestamp NULL DEFAULT NULL,
                `updatedby` int(11) DEFAULT NULL,
                `job_description` text DEFAULT NULL,
                `departments_id` int(11) DEFAULT NULL
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                ");

            DB::statement("
                CREATE TABLE IF NOT EXISTS `tbl_shifts` (
                `shift_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                `title` varchar(255) DEFAULT NULL,
                `alias` varchar(255) DEFAULT NULL,
                `status` int(11) DEFAULT NULL,
                `remarks` text DEFAULT NULL,
                `display_order` int(11) DEFAULT NULL,
                `created_at` timestamp NULL DEFAULT NULL,
                `createdby` int(11) DEFAULT NULL,
                `updated_at` timestamp NULL DEFAULT NULL,
                `updatedby` int(11) DEFAULT NULL
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
                ");

            DB::statement("
            CREATE TABLE IF NOT EXISTS `tbl_workoptions` (
            `workoption_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `title` varchar(255) DEFAULT NULL,
            `alias` varchar(255) DEFAULT NULL,
            `status` int(11) DEFAULT NULL,
            `remarks` text DEFAULT NULL,
            `display_order` int(11) DEFAULT NULL,
            `created_at` timestamp NULL DEFAULT NULL,
            `createdby` int(11) DEFAULT NULL,
            `updated_at` timestamp NULL DEFAULT NULL,
            `updatedby` int(11) DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
            ");

            DB::statement("
            CREATE TABLE IF NOT EXISTS `tbl_leavetypes` (
            `leavetype_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `title` varchar(255) DEFAULT NULL,
            `alias` varchar(255) DEFAULT NULL,
            `status` int(11) DEFAULT NULL,
            `remarks` text DEFAULT NULL,
            `display_order` int(11) DEFAULT NULL,
            `created_at` timestamp NULL DEFAULT NULL,
            `createdby` int(11) DEFAULT NULL,
            `updated_at` timestamp NULL DEFAULT NULL,
            `updatedby` int(11) DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
            ");

            DB::statement("
            CREATE TABLE IF NOT EXISTS `tbl_leaves` (
            `leave_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `title` varchar(255) DEFAULT NULL,
            `alias` varchar(255) DEFAULT NULL,
            `status` int(11) DEFAULT NULL,
            `remarks` text DEFAULT NULL,
            `display_order` int(11) DEFAULT NULL,
            `created_at` timestamp NULL DEFAULT NULL,
            `createdby` int(11) DEFAULT NULL,
            `updated_at` timestamp NULL DEFAULT NULL,
            `updatedby` int(11) DEFAULT NULL,
            `leavetypes_id` int(11) DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
            ");

            if (!(DB::table('users')->first())) {
                DB::statement("INSERT INTO `tbl_users` (`name`,`email`,`username`,`password`,`roles_id`,`status`) VALUES ('Prajwal Adhikari','prajwalbro@hotmail.com','prajwalbro@hotmail.com','$2y$10$3zlF9VeXexzWKRDPZuDio.W7RZIC3tU.cjwMoLzG8ki8bVwAQn1WW','1','1');");
            }
            if (!(DB::table('settings')->first())) {
                DB::statement("INSERT INTO `tbl_settings` (`title`, `description`, `status`) VALUES ('Bibhuti OMIS', '', '1');");
            }

            if (!(DB::table('countries')->first())) {
                DB::statement("INSERT INTO `tbl_countries` (`title`,`alias`,`status`) VALUES ('Nepal','nepal', '1');");
            }
            if (!(DB::table('proviences')->first())) {
                DB::statement("INSERT INTO `tbl_proviences` (`title`,`alias`,`status`) VALUES ('Bagmati','bagmati', '1');");
            }

            if (!(DB::table('roles')->first())) {
                DB::statement("INSERT INTO `tbl_roles` (`title`,`alias`,`status`) VALUES ('Admin','admin','1');");
                DB::statement("INSERT INTO `tbl_roles` (`title`,`alias`,`status`) VALUES ('Manager','manager','1');");
                DB::statement("INSERT INTO `tbl_roles` (`title`,`alias`,`status`) VALUES ('Branch','branch','1');");
                DB::statement("INSERT INTO `tbl_roles` (`title`,`alias`,`status`) VALUES ('Agent','agent','1');");
                DB::statement("INSERT INTO `tbl_roles` (`title`,`alias`,`status`) VALUES ('Student','student','1');");
            }

            $initialized = true;
        }
    }
}