From 962e626c9eb61d64b83562d8f5ff7c6f199c16ff Mon Sep 17 00:00:00 2001 From: Sevan Nerse Date: Fri, 26 Feb 2021 15:38:45 +0300 Subject: [PATCH] this makes possible adding extra attributes to models --- app/Abstracts/Model.php | 4 ++ app/Events/Common/ModelCreated.php | 24 +++++++++ app/Imports/Banking/Transactions.php | 7 ++- app/Imports/Banking/Transfers.php | 59 ++++++++++++---------- app/Imports/Common/Sheets/Items.php | 7 ++- app/Imports/Purchases/Payments.php | 9 +++- app/Imports/Purchases/Sheets/BillItems.php | 7 ++- app/Imports/Purchases/Sheets/Bills.php | 7 ++- app/Imports/Purchases/Vendors.php | 9 +++- app/Imports/Sales/Customers.php | 9 +++- app/Imports/Sales/Revenues.php | 7 ++- app/Imports/Sales/Sheets/InvoiceItems.php | 7 ++- app/Imports/Sales/Sheets/Invoices.php | 7 ++- app/Imports/Settings/Categories.php | 7 ++- app/Models/Common/Company.php | 4 ++ app/Models/Setting/Setting.php | 8 ++- 16 files changed, 139 insertions(+), 43 deletions(-) create mode 100644 app/Events/Common/ModelCreated.php diff --git a/app/Abstracts/Model.php b/app/Abstracts/Model.php index b6dc5f8c1..1ba1b25c6 100644 --- a/app/Abstracts/Model.php +++ b/app/Abstracts/Model.php @@ -21,6 +21,10 @@ abstract class Model extends Eloquent 'enabled' => 'boolean', ]; + public $extras = [ + // + ]; + public static function observe($classes) { parent::observe($classes); diff --git a/app/Events/Common/ModelCreated.php b/app/Events/Common/ModelCreated.php new file mode 100644 index 000000000..de7d71ea5 --- /dev/null +++ b/app/Events/Common/ModelCreated.php @@ -0,0 +1,24 @@ +model = $model; + $this->attributes = $attributes; + } +} diff --git a/app/Imports/Banking/Transactions.php b/app/Imports/Banking/Transactions.php index 03d86d35a..31c48c802 100644 --- a/app/Imports/Banking/Transactions.php +++ b/app/Imports/Banking/Transactions.php @@ -3,6 +3,7 @@ namespace App\Imports\Banking; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Banking\Transaction as Request; use App\Models\Banking\Transaction as Model; @@ -10,7 +11,11 @@ class Transactions extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Banking/Transfers.php b/app/Imports/Banking/Transfers.php index fcf796c72..480742f91 100644 --- a/app/Imports/Banking/Transfers.php +++ b/app/Imports/Banking/Transfers.php @@ -3,6 +3,7 @@ namespace App\Imports\Banking; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Models\Banking\Transaction; use App\Models\Banking\Transfer as Model; use App\Models\Setting\Category; @@ -15,7 +16,11 @@ class Transfers extends Import public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array @@ -49,19 +54,19 @@ class Transfers extends Import private function getExpenseTransactionId($row) { $expense_transaction = Transaction::create([ - 'company_id' => session('company_id'), - 'type' => 'expense', - 'account_id' => $row['from_account_id'], - 'paid_at' => $row['transferred_at'], - 'currency_code' => $row['from_currency_code'], - 'currency_rate' => $row['from_currency_rate'], - 'amount' => $row['amount'], - 'contact_id' => 0, - 'description' => $row['description'], - 'category_id' => Category::transfer(), // Transfer Category ID - 'payment_method' => $row['payment_method'], - 'reference' => $row['reference'], - ]); + 'company_id' => session('company_id'), + 'type' => 'expense', + 'account_id' => $row['from_account_id'], + 'paid_at' => $row['transferred_at'], + 'currency_code' => $row['from_currency_code'], + 'currency_rate' => $row['from_currency_rate'], + 'amount' => $row['amount'], + 'contact_id' => 0, + 'description' => $row['description'], + 'category_id' => Category::transfer(), // Transfer Category ID + 'payment_method' => $row['payment_method'], + 'reference' => $row['reference'], + ]); return $expense_transaction->id; } @@ -81,19 +86,19 @@ class Transfers extends Import } $income_transaction = Transaction::create([ - 'company_id' => session('company_id'), - 'type' => 'income', - 'account_id' => $row['to_account_id'], - 'paid_at' => $row['transferred_at'], - 'currency_code' => $row['to_currency_code'], - 'currency_rate' => $row['to_currency_rate'], - 'amount' => $amount, - 'contact_id' => 0, - 'description' => $row['description'], - 'category_id' => Category::transfer(), // Transfer Category ID - 'payment_method' => $row['payment_method'], - 'reference' => $row['reference'], - ]); + 'company_id' => session('company_id'), + 'type' => 'income', + 'account_id' => $row['to_account_id'], + 'paid_at' => $row['transferred_at'], + 'currency_code' => $row['to_currency_code'], + 'currency_rate' => $row['to_currency_rate'], + 'amount' => $amount, + 'contact_id' => 0, + 'description' => $row['description'], + 'category_id' => Category::transfer(), // Transfer Category ID + 'payment_method' => $row['payment_method'], + 'reference' => $row['reference'], + ]); return $income_transaction->id; } diff --git a/app/Imports/Common/Sheets/Items.php b/app/Imports/Common/Sheets/Items.php index 53fa519df..e58d38a6e 100644 --- a/app/Imports/Common/Sheets/Items.php +++ b/app/Imports/Common/Sheets/Items.php @@ -3,6 +3,7 @@ namespace App\Imports\Common\Sheets; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Common\Item as Request; use App\Models\Common\Item as Model; @@ -10,7 +11,11 @@ class Items extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Purchases/Payments.php b/app/Imports/Purchases/Payments.php index e5b9a9dde..649ce9f6e 100644 --- a/app/Imports/Purchases/Payments.php +++ b/app/Imports/Purchases/Payments.php @@ -3,14 +3,19 @@ namespace App\Imports\Purchases; use App\Abstracts\Import; -use App\Models\Banking\Transaction as Model; +use App\Events\Common\ModelCreated; use App\Http\Requests\Banking\Transaction as Request; +use App\Models\Banking\Transaction as Model; class Payments extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Purchases/Sheets/BillItems.php b/app/Imports/Purchases/Sheets/BillItems.php index 885b3d3ce..13b231a58 100644 --- a/app/Imports/Purchases/Sheets/BillItems.php +++ b/app/Imports/Purchases/Sheets/BillItems.php @@ -3,6 +3,7 @@ namespace App\Imports\Purchases\Sheets; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Document\DocumentItem as Request; use App\Models\Document\Document; use App\Models\Document\DocumentItem as Model; @@ -11,7 +12,11 @@ class BillItems extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Purchases/Sheets/Bills.php b/app/Imports/Purchases/Sheets/Bills.php index b8e177be7..b69d1ba2f 100644 --- a/app/Imports/Purchases/Sheets/Bills.php +++ b/app/Imports/Purchases/Sheets/Bills.php @@ -3,6 +3,7 @@ namespace App\Imports\Purchases\Sheets; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Document\Document as Request; use App\Models\Document\Document as Model; use Illuminate\Support\Str; @@ -11,7 +12,11 @@ class Bills extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Purchases/Vendors.php b/app/Imports/Purchases/Vendors.php index 2e9889714..10002e397 100644 --- a/app/Imports/Purchases/Vendors.php +++ b/app/Imports/Purchases/Vendors.php @@ -3,14 +3,19 @@ namespace App\Imports\Purchases; use App\Abstracts\Import; -use App\Models\Common\Contact as Model; +use App\Events\Common\ModelCreated; use App\Http\Requests\Common\Contact as Request; +use App\Models\Common\Contact as Model; class Vendors extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Sales/Customers.php b/app/Imports/Sales/Customers.php index a744bc64c..cfba9619f 100644 --- a/app/Imports/Sales/Customers.php +++ b/app/Imports/Sales/Customers.php @@ -3,14 +3,19 @@ namespace App\Imports\Sales; use App\Abstracts\Import; -use App\Models\Common\Contact as Model; +use App\Events\Common\ModelCreated; use App\Http\Requests\Common\Contact as Request; +use App\Models\Common\Contact as Model; class Customers extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Sales/Revenues.php b/app/Imports/Sales/Revenues.php index babc5e92a..ff9442a4f 100644 --- a/app/Imports/Sales/Revenues.php +++ b/app/Imports/Sales/Revenues.php @@ -3,6 +3,7 @@ namespace App\Imports\Sales; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Banking\Transaction as Request; use App\Models\Banking\Transaction as Model; @@ -10,7 +11,11 @@ class Revenues extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Sales/Sheets/InvoiceItems.php b/app/Imports/Sales/Sheets/InvoiceItems.php index 36f068cd1..154133026 100644 --- a/app/Imports/Sales/Sheets/InvoiceItems.php +++ b/app/Imports/Sales/Sheets/InvoiceItems.php @@ -3,6 +3,7 @@ namespace App\Imports\Sales\Sheets; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Document\DocumentItem as Request; use App\Models\Document\Document; use App\Models\Document\DocumentItem as Model; @@ -11,7 +12,11 @@ class InvoiceItems extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Sales/Sheets/Invoices.php b/app/Imports/Sales/Sheets/Invoices.php index 89c997505..b3c58bafe 100644 --- a/app/Imports/Sales/Sheets/Invoices.php +++ b/app/Imports/Sales/Sheets/Invoices.php @@ -3,6 +3,7 @@ namespace App\Imports\Sales\Sheets; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Document\Document as Request; use App\Models\Document\Document as Model; use Illuminate\Support\Str; @@ -11,7 +12,11 @@ class Invoices extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function map($row): array diff --git a/app/Imports/Settings/Categories.php b/app/Imports/Settings/Categories.php index 7443c09d3..529e1c000 100644 --- a/app/Imports/Settings/Categories.php +++ b/app/Imports/Settings/Categories.php @@ -3,6 +3,7 @@ namespace App\Imports\Settings; use App\Abstracts\Import; +use App\Events\Common\ModelCreated; use App\Http\Requests\Setting\Category as Request; use App\Models\Setting\Category as Model; @@ -10,7 +11,11 @@ class Categories extends Import { public function model(array $row) { - return new Model($row); + $model = new Model($row); + + event(new ModelCreated($model, $row)); + + return $model; } public function rules(): array diff --git a/app/Models/Common/Company.php b/app/Models/Common/Company.php index 210fc8772..18f47c48b 100644 --- a/app/Models/Common/Company.php +++ b/app/Models/Common/Company.php @@ -28,6 +28,10 @@ class Company extends Eloquent 'enabled' => 'boolean', ]; + public $extras = [ + // + ]; + /** * Sortable columns. * diff --git a/app/Models/Setting/Setting.php b/app/Models/Setting/Setting.php index c12ce0191..80f2366a2 100644 --- a/app/Models/Setting/Setting.php +++ b/app/Models/Setting/Setting.php @@ -13,8 +13,6 @@ class Setting extends Eloquent protected $tenantable = true; - public $timestamps = false; - /** * Attributes that should be mass-assignable. * @@ -22,6 +20,12 @@ class Setting extends Eloquent */ protected $fillable = ['company_id', 'key', 'value']; + public $extras = [ + // + ]; + + public $timestamps = false; + public function company() { return $this->belongsTo('App\Models\Common\Company');