From a283f1dcf7bf20a2789a81ceb0b1e9e0ab27f26f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 30 Oct 2020 20:17:29 +1100 Subject: [PATCH] Working on migration for expenses and tasks --- app/Jobs/Util/Import.php | 98 +++++++++++++++++++ app/Models/Expense.php | 2 +- app/Transformers/ExpenseTransformer.php | 3 +- ...4139_change_expense_currency_id_column.php | 30 ++++++ 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2020_10_30_084139_change_expense_currency_id_column.php diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php index a761d5194043..f02eb511d181 100644 --- a/app/Jobs/Util/Import.php +++ b/app/Jobs/Util/Import.php @@ -44,12 +44,15 @@ use App\Models\CompanyGateway; use App\Models\Credit; use App\Models\Document; use App\Models\Expense; +use App\Models\ExpenseCategory; use App\Models\Invoice; use App\Models\Payment; use App\Models\PaymentTerm; use App\Models\Product; use App\Models\Quote; use App\Models\RecurringInvoice; +use App\Models\Task; +use App\Models\TaskStatus; use App\Models\TaxRate; use App\Models\User; use App\Repositories\ClientContactRepository; @@ -111,6 +114,10 @@ class Import implements ShouldQueue 'payments', 'company_gateways', 'client_gateway_tokens', + 'expense_categories', + 'task_statuses', + 'expenses', + 'tasks', // //'documents', ]; @@ -906,6 +913,97 @@ class Import implements ShouldQueue $data = null; } + private function processTaskStatuses(array $data) :void + { + TaskStatus::unguard(); + + foreach ($data as $resource) { + $modified = $resource; + + unset($modified['id']); + + $modified['company_id'] = $this->company->id; + $modified['user_id'] = $this->transformId('users', $resource['user_id']); + + $task_status = TaskStatus::Create($modified); + + $old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id; + + $this->ids['task_statuses'] = [ + "task_statuses_{$old_user_key}" => [ + 'old' => $resource['id'], + 'new' => $task_status->id, + ], + ]; + } + + TaskStatus::reguard(); + + $data = null; + } + + private function processExpenseCategories(array $data) :void + { + ExpenseCategory::unguard(); + + foreach ($data as $resource) { + $modified = $resource; + + unset($modified['id']); + + $modified['company_id'] = $this->company->id; + $modified['user_id'] = $this->transformId('users', $resource['user_id']); + + $expense_category = ExpenseCategory::Create($modified); + + $old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id; + + $this->ids['expense_categories'] = [ + "expense_categories_{$old_user_key}" => [ + 'old' => $resource['id'], + 'new' => $expense_category->id, + ], + ]; + } + + ExpenseCategory::reguard(); + + $data = null; + } + + private function processTasks(array $data) :void + { + Task::unguard(); + + foreach ($data as $resource) { + $modified = $resource; + + unset($modified['id']); + + $modified['company_id'] = $this->company->id; + $modified['user_id'] = $this->transformId('users', $resource['user_id']); + $modified['client_id'] = $this->transformId('clients', $resource['client_id']); + $modified['invoice_id'] = $this->transformId('invoices', $resource['invoice_id']); + $modified['project_id'] = $this->transformId('projects', $resource['project_id']); + $modified['status_id'] = $this->transformId('task_statuses', $resource['status_id']); + + $task = Task::Create($modified); + + $old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id; + + $this->ids['tasks'] = [ + "tasks_{$old_user_key}" => [ + 'old' => $resource['id'], + 'new' => $task->id, + ], + ]; + } + + Task::reguard(); + + $data = null; + } + /** * |-------------------------------------------------------------------------- * | Additional migration methods. diff --git a/app/Models/Expense.php b/app/Models/Expense.php index 29ad16e5e918..47e80d7398b1 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -26,7 +26,7 @@ class Expense extends BaseModel 'assigned_user_id', 'vendor_id', 'invoice_id', - 'expense_currency_id', + 'currency_id', 'date', 'invoice_currency_id', 'amount', diff --git a/app/Transformers/ExpenseTransformer.php b/app/Transformers/ExpenseTransformer.php index 3dba3db520a9..2760fe9c0033 100644 --- a/app/Transformers/ExpenseTransformer.php +++ b/app/Transformers/ExpenseTransformer.php @@ -58,7 +58,8 @@ class ExpenseTransformer extends EntityTransformer 'client_id' => $this->encodePrimaryKey($expense->client_id), 'bank_id' => (string) $expense->bank_id ?: '', 'invoice_currency_id' => (string) $expense->invoice_currency_id ?: '', - 'expense_currency_id' => (string) $expense->expense_currency_id ?: '', + 'expense_currency_id' => '', //todo remove redundant in 5.0.25 + 'currency_id' => (string) $expense->expense_currency_id ?: '', 'category_id' => $this->encodePrimaryKey($expense->category_id), 'payment_type_id' => (string) $expense->payment_type_id ?: '', 'recurring_expense_id' => (string) $expense->recurring_expense_id ?: '', diff --git a/database/migrations/2020_10_30_084139_change_expense_currency_id_column.php b/database/migrations/2020_10_30_084139_change_expense_currency_id_column.php new file mode 100644 index 000000000000..e2f5690c0865 --- /dev/null +++ b/database/migrations/2020_10_30_084139_change_expense_currency_id_column.php @@ -0,0 +1,30 @@ +renameColumn('expense_currency_id', 'currency_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}