diff --git a/app/Console/Commands/Sync.php b/app/Console/Commands/Sync.php new file mode 100644 index 000000000..a44de0448 --- /dev/null +++ b/app/Console/Commands/Sync.php @@ -0,0 +1,34 @@ +sync(); + return Command::SUCCESS; + } +} diff --git a/app/Http/Controllers/Installer/helpdesk/InstallController.php b/app/Http/Controllers/Installer/helpdesk/InstallController.php index a6eaa1479..2c395d347 100644 --- a/app/Http/Controllers/Installer/helpdesk/InstallController.php +++ b/app/Http/Controllers/Installer/helpdesk/InstallController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Installer\helpdesk; // controllers use App\Http\Controllers\Controller; // requests +use App\Http\Controllers\Update\SyncFaveoToLatestVersion; use App\Http\Requests\helpdesk\InstallerRequest; use App\Model\helpdesk\Settings\System; // models @@ -435,6 +436,7 @@ class InstallController extends Controller $ENV['DB_DATABASE'] = '"'.$database.'"'; $ENV['DB_USERNAME'] = '"'.$dbusername.'"'; $ENV['DB_PASSWORD'] = '"'.$dbpassword.'"'; + $ENV['DB_ENGINE'] = 'InnoDB'; $ENV['MAIL_MAILER'] = 'smtp'; $ENV['MAIL_HOST'] = 'mailtrap.io'; $ENV['MAIL_PORT'] = '2525'; @@ -490,29 +492,23 @@ class InstallController extends Controller public function migrate() { - $db_install_method = ''; - try { - $tableNames = \Schema::getConnection()->getDoctrineSchemaManager()->listTableNames(); + $tableNames = Schema::getConnection()->getDoctrineSchemaManager()->listTableNames(); if (count($tableNames) === 0) { - if (!Cache::get('dummy_data_installation')) { - Artisan::call('migrate', ['--force' => true]); - $db_install_method = 'migrate'; - } else { + (new SyncFaveoToLatestVersion())->sync(); + if (Cache::get('dummy_data_installation')) { $path = base_path().DIRECTORY_SEPARATOR.'DB'.DIRECTORY_SEPARATOR.'dummy-data.sql'; DB::unprepared(file_get_contents($path)); - $db_install_method = 'dump'; } } } catch (Exception $ex) { + dd($ex); $this->rollBackMigration(); $result = ['error' => $ex->getMessage()]; return response()->json(compact('result'), 500); } - $url = ($db_install_method == 'migrate') ? url('seed') : ''; - $message = ($db_install_method == 'migrate') ? 'Tables have been migrated successfully in database.' : 'Database has been setup successfully.'; - $result = ['success' => $message, 'next' => 'Seeding pre configurations data', 'api' => $url]; + $result = ['success' => 'Database has been setup successfully.']; return response()->json(compact('result')); } diff --git a/app/Http/Controllers/Update/SyncFaveoToLatestVersion.php b/app/Http/Controllers/Update/SyncFaveoToLatestVersion.php new file mode 100644 index 000000000..0efff341f --- /dev/null +++ b/app/Http/Controllers/Update/SyncFaveoToLatestVersion.php @@ -0,0 +1,64 @@ +getPhpComaptibleVersion(Config::get('app.version')); + $olderVersion = $this->getOlderVersion(); + + if (version_compare($latestVersion, $olderVersion) == 1) { + $this->updateToLatestVersion($olderVersion); + } + System::first()->update(['version' => Config::get('app.version')]); + } + + private function updateToLatestVersion($olderVersion) + { + Artisan::call('migrate', ['--force' => true]); + + $seederPath = base_path('database'.DIRECTORY_SEPARATOR.'seeders'); + + if(file_exists($seederPath)){ + $seederVersions = scandir($seederPath); + + natsort($seederVersions); + $formattedOlderVersion = $olderVersion; + foreach ($seederVersions as $version) { + if(version_compare($this->getPhpComaptibleVersion($version), $formattedOlderVersion) == 1){ + Artisan::call('db:seed',['--class' => "Database\Seeders\\$version\DatabaseSeeder", '--force' => true]); + } + } + } + } + + private function getOlderVersion() + { + if (!isInstall()) { + return '0.0.0'; + } + + $version = System::value('version') ?: '0.0.0'; + return $this->getPhpComaptibleVersion($version); + } + + private function getPhpComaptibleVersion($version) + { + return preg_replace('#v\.|v#', '', str_replace('_', '.', $version)); + } +} diff --git a/app/Model/helpdesk/Settings/System.php b/app/Model/helpdesk/Settings/System.php index 31c0dc858..9d191d856 100644 --- a/app/Model/helpdesk/Settings/System.php +++ b/app/Model/helpdesk/Settings/System.php @@ -13,6 +13,6 @@ class System extends BaseModel protected $fillable = [ 'id', 'status', 'url', 'name', 'department', 'page_size', 'log_level', 'purge_log', 'name_format', - 'time_farmat', 'date_format', 'date_time_format', 'day_date_time', 'time_zone', 'content', 'api_key', 'api_enable', 'api_key_mandatory', + 'time_farmat', 'date_format', 'date_time_format', 'day_date_time', 'time_zone', 'content', 'api_key', 'api_enable', 'api_key_mandatory', 'version' ]; } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 7d09bba51..13d4409cd 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,8 +2,10 @@ namespace App\Providers; +use App\Model\helpdesk\Settings\System; use App\Model\Update\BarNotification; use Illuminate\Queue\Events\JobFailed; +use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; use Laravel\Dusk\DuskServiceProvider; diff --git a/config/app.php b/config/app.php index 28895a8f3..5ef28ff68 100644 --- a/config/app.php +++ b/config/app.php @@ -35,7 +35,7 @@ return [ | This tells about aplication current version. | */ - 'version' => 'Community 1.11.1', + 'version' => parse_ini_file(storage_path('faveoconfig.ini'), false, INI_SCANNER_RAW)['APP_VERSION'], /* |-------------------------------------------------------------------------- | Application Name @@ -44,7 +44,7 @@ return [ | This Applocation name is used for installation and update checking | */ - 'name' => 'Faveo Helpdesk Community', + 'name' => parse_ini_file(storage_path('faveoconfig.ini'), false, INI_SCANNER_RAW)['APP_NAME'], /* |-------------------------------------------------------------------------- | Application URL diff --git a/database/migrations/2016_02_16_140450_create_date_time_format_table.php b/database/migrations/2016_02_16_140450_create_date_time_format_table.php index 76de41aeb..4e8733a05 100644 --- a/database/migrations/2016_02_16_140450_create_date_time_format_table.php +++ b/database/migrations/2016_02_16_140450_create_date_time_format_table.php @@ -11,7 +11,7 @@ return new class() extends Migration { */ public function up() { - Schema::create('date_time_format', function (Blueprint $table) { + \Illuminate\Support\Facades\Schema::create('date_time_format', function (Blueprint $table) { $table->increments('id'); $table->string('format'); }); diff --git a/database/migrations/2016_06_28_141613_version1079table.php b/database/migrations/2016_06_28_141613_version1079table.php index ab692446f..baaa3619a 100644 --- a/database/migrations/2016_06_28_141613_version1079table.php +++ b/database/migrations/2016_06_28_141613_version1079table.php @@ -10,12 +10,8 @@ return new class() extends Migration { */ public function up() { - $current_version1 = \Config::get('app.version'); - $current_version2 = explode(' ', $current_version1); - $current_version = $current_version2[1]; $settings_system = DB::table('settings_system')->where('id', '=', '1')->first(); if ($settings_system != null) { - DB::table('settings_system')->insert(['version' => $current_version]); DB::table('common_settings') ->insert( ['option_name' => 'enable_rtl', 'option_value' => ''], diff --git a/database/seeders/AlterColumnTypeSeeder.php b/database/seeders/AlterColumnTypeSeeder.php deleted file mode 100644 index 53c48e3b1..000000000 --- a/database/seeders/AlterColumnTypeSeeder.php +++ /dev/null @@ -1,43 +0,0 @@ -modifyStringType(Schema::getAllTables()); - } - - private function modifyStringType($tables) - { - foreach ($tables as $table) { - $tableName = (array)$table; - $tableName = reset($tableName); - - $columns = Schema::getColumnListing($tableName); - - foreach ($columns as $column) { - if (Schema::getColumnType($tableName, $column) == 'string') { - Schema::table($tableName, function ($table) use($column) { - $table->string($column)->nullable()->change(); - }); - } elseif (Schema::getColumnType($tableName, $column) == 'boolean') { - Schema::table($tableName, function ($table) use($column) { - $table->boolean($column)->default(0)->change(); - }); - } - } - } - } -} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/v_2_0_0/DatabaseSeeder.php similarity index 99% rename from database/seeders/DatabaseSeeder.php rename to database/seeders/v_2_0_0/DatabaseSeeder.php index c2a24f1bd..e80fb3186 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/v_2_0_0/DatabaseSeeder.php @@ -1,6 +1,6 @@ run(); + foreach ($tables as $table) { + $tableName = (array)$table; + $tableName = reset($tableName); + + $columns = Schema::getColumnListing($tableName); + + foreach ($columns as $column) { + if (Schema::getColumnType($tableName, $column) == 'string') { + Schema::table($tableName, function ($table) use($column) { + $table->string($column)->nullable()->change(); + }); + } elseif (Schema::getColumnType($tableName, $column) == 'boolean') { + Schema::table($tableName, function ($table) use($column) { + $table->boolean($column)->default(0)->change(); + }); + } + } + } /* Date time format */ $date_time_formats = [ 'd/m/Y H:i:s', diff --git a/database/seeders/OutboundMailSeeder.php b/database/seeders/v_2_0_0/OutboundMailSeeder.php similarity index 97% rename from database/seeders/OutboundMailSeeder.php rename to database/seeders/v_2_0_0/OutboundMailSeeder.php index 42503c28c..4796a7e86 100644 --- a/database/seeders/OutboundMailSeeder.php +++ b/database/seeders/v_2_0_0/OutboundMailSeeder.php @@ -1,6 +1,6 @@ @section('content') -{!! Form::open(['action'=>'Agent\helpdesk\OrganizationController@store','method'=>'post']) !!} +{!! Form::open(['route' => 'organizations.store','method'=>'post']) !!} @if(Session::has('errors')) diff --git a/resources/views/vendor/Chumper/ticket-javascript.blade.php b/resources/views/vendor/Chumper/ticket-javascript.blade.php index 9de42b706..e1e4edec8 100644 --- a/resources/views/vendor/Chumper/ticket-javascript.blade.php +++ b/resources/views/vendor/Chumper/ticket-javascript.blade.php @@ -41,12 +41,24 @@ foreach($segments as $seg){ }, "aaSorting": sort, "columnDefs": [ - { "searchable": false, "targets": [6,7] }, + {"defaultContent": "-", + "targets": "_all"}, + { "searchable": true, "targets": [6,7] }, { "visible": last, "targets": 6 }, {"visible": create, "targets":7}, ], + "columns":[ + {data: "check_box"}, + {data: "ticket_number"}, + {data: "ticket_number"}, + {data: "ticket_number"}, + {data: "ticket_number"}, + {data: "ticket_number"}, + {data: "ticket_number"}, + {data: "ticket_number"}, + ], "fnCreatedRow": function (nRow, aData, iDataIndex) { - var str = aData[3]; + var str = aData['ticket_number']; if (str.search("#000") == -1) { $("td", nRow).css({"background-color": "#F3F3F3", "font-weight": "600", "border-bottom": "solid 0.5px #ddd", "border-right": "solid 0.5px #F3F3F3"}); $("td", nRow).mouseenter(function () { diff --git a/storage/faveoconfig.ini b/storage/faveoconfig.ini new file mode 100644 index 000000000..e94d6f321 --- /dev/null +++ b/storage/faveoconfig.ini @@ -0,0 +1,2 @@ +APP_NAME=Faveo Helpdesk Community +APP_VERSION=v2.0.0 \ No newline at end of file