diff --git a/app/Http/Controllers/LogoutController.php b/app/Http/Controllers/LogoutController.php new file mode 100644 index 000000000000..68bd4d934a92 --- /dev/null +++ b/app/Http/Controllers/LogoutController.php @@ -0,0 +1,70 @@ +header('X-API-TOKEN')]) + ->company + ->tokens() + ->forceDelete(); + + return response()->json(['message' => 'logged out.'], 200); + } + +} diff --git a/app/Libraries/MultiDB.php b/app/Libraries/MultiDB.php index 7b69e223894b..f2cc25724264 100644 --- a/app/Libraries/MultiDB.php +++ b/app/Libraries/MultiDB.php @@ -16,6 +16,7 @@ use App\Models\ClientContact; use App\Models\Company; use App\Models\CompanyToken; use App\Models\User; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; /** @@ -293,10 +294,16 @@ class MultiDB { /* This will set the database connection for the request */ config(['database.default' => $database]); + + DB::purge($database); + DB::reconnect($database); } public static function setDefaultDatabase() { config(['database.default' => config('ninja.db.default')]); + + DB::purge(config('ninja.db.default')); + DB::reconnect(config('ninja.db.default')); } } diff --git a/app/Models/Task.php b/app/Models/Task.php index 3e3d902dcbdd..b34f9f062a4c 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -74,6 +74,11 @@ class Task extends BaseModel return $this->belongsTo(Client::class); } + public function status() + { + return $this->belongsTo(TaskStatus::class); + } + public function invoice() { return $this->belongsTo(Invoice::class); diff --git a/app/Repositories/TaskRepository.php b/app/Repositories/TaskRepository.php index 778b695763ae..45f1cf20b884 100644 --- a/app/Repositories/TaskRepository.php +++ b/app/Repositories/TaskRepository.php @@ -22,6 +22,7 @@ class TaskRepository extends BaseRepository { use GeneratesCounter; + public $new_task = true; /** * Saves the task and its contacts. @@ -33,10 +34,15 @@ class TaskRepository extends BaseRepository */ public function save(array $data, Task $task) : ?Task { + if($task->id) + $this->new_task = false; $task->fill($data); $task->save(); + if($this->new_task && !$task->status_id) + $this->setDefaultStatus($task); + $task->number = empty($task->number) || !array_key_exists('number', $data) ? $this->getNextTaskNumber($task) : $data['number']; if (isset($data['description'])) { @@ -103,6 +109,19 @@ class TaskRepository extends BaseRepository } + private function setDefaultStatus(Task $task) + { + $first_status = $task->company->task_statuses() + ->whereNull('deleted_at') + ->orderBy('id','asc') + ->first(); + + if($first_status) + return $first_status->id; + + return null; + } + /** * Sorts the task status order IF the old status has changed between requests * diff --git a/config/ninja.php b/config/ninja.php index fe0dab5e2a53..2963c78e852f 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -54,7 +54,7 @@ return [ 'db' => [ 'multi_db_enabled' => env('MULTI_DB_ENABLED', false), - 'default' => env('DB_CONNECTION', 'mysql'), + 'default' => env('DB_CONNECTION', 'db-ninja-01'), ], 'i18n' => [ diff --git a/routes/api.php b/routes/api.php index 1dd0e044e87b..2e84a7977cc1 100644 --- a/routes/api.php +++ b/routes/api.php @@ -90,6 +90,8 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a Route::put('invoices/{invoice}/upload', 'InvoiceController@upload')->name('invoices.upload'); Route::get('invoice/{invitation_key}/download', 'InvoiceController@downloadPdf')->name('invoices.downloadPdf'); Route::post('invoices/bulk', 'InvoiceController@bulk')->name('invoices.bulk'); + + Route::post('logout', 'LogoutController@index')->name('logout'); Route::post('migrate', 'MigrationController@index')->name('migrate.start');