process();
        //dd($check);
        if ($check == true) {
            //$this->notificationBar();
            $this->checkNewUpdate();
//            if (Utility::getFileVersion() > Utility::getDatabaseVersion()) {
//                return redirect('database-update');
//            }
//            if (Utility::getFileVersion() < Utility::getDatabaseVersion()) {
//                return redirect('file-update');
//            }
        }
        return $next($request);
    }
    public function notificationBar()
    {
        $notify = new BarNotification();
        $path = base_path('UPDATES');
        if (is_dir($path)) {
            $notify->create(['key' => 'update-ready', 'value' => 'New version has downloaded, click here to update now']);
        }
    }
    public function checkNewUpdate()
    {
        $notify = new BarNotification();
        if (!\Schema::hasTable('bar_notifications')) {
            $url = url('database-upgrade');
            //$string = "Your Database is outdated please upgrade Now !";
            echo view('themes.default1.update.database', compact('url'));
            exit;
        }
        $not = $notify->get();
        if ($not->count() > 0) {
            $now = \Carbon\Carbon::now();
            $yesterday = \Carbon\Carbon::yesterday();
            $notifications = $notify->whereBetween('created_at', [$yesterday, $now])->pluck('value', 'key');
            $todelete = $notify->where('created_at', '<', $yesterday)->get();
            if ($todelete->count() > 0) {
                foreach ($todelete as $delete) {
                    $delete->delete();
                }
            }
            if (count($notifications) > 0) {
                if (!array_key_exists('new-version', $notifications)) {
                    $check_version = $this->checkNewVersion();
                    if ($check_version == true) {
                        $notify->create(['key' => 'new-version', 'value' => 'new version found please click here to download']);
                    }
                } else {
                    $n = $notify->where('key', 'new-version')->first();
                    $last = $n->created_at;
                    $now = \Carbon\Carbon::now();
                    $difference = $now->diffInHours($last);
                    if ($difference >= 24) {
                        $n->delete();
                        $this->checkNewUpdate();
                    }
                }
            }
        } else {
            $check_version = $this->checkNewVersion();
            if ($check_version == true) {
                //dd('if');
                $notify->create(['key' => 'new-version', 'value' => 'new version found please click here to download', 'created_at' => \Carbon\Carbon::now()]);
            } else {
                //dd('else');
                $notify->create(['key' => 'new-version', 'value' => '', 'created_at' => \Carbon\Carbon::now()]);
            }
        }
    }
    public function checkNewVersion()
    {
        $controller = new UpgradeController();
        $version_from_billing = $controller->getLatestVersion();
        $app_version = Utility::getFileVersion();
        if ($version_from_billing > $app_version) {
            return true;
        }
    }
    public function process()
    {
        $notify = new BarNotification();
        $not = $notify->get();
        if ($not->count() > 0) {
            $n = $notify->where('key', 'new-version')->first();
            if ($n) {
                $now = \Carbon\Carbon::now();
                $yesterday = \Carbon\Carbon::yesterday();
                $notifications = $notify->where('key', 'new-version')->whereBetween('created_at', [$yesterday, $now])->pluck('value', 'key');
                if ($notifications->count() > 0) {
                    return false;
                }
            }
        }
        return true;
    }
}