mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-26 06:04:08 -08:00
9adb2c24f3
commitdddbf27d78
Author: snipe <snipe@snipe.net> Date: Wed Sep 18 14:18:52 2024 +0100 Updated language strings Signed-off-by: snipe <snipe@snipe.net> commitfcefcc8184
Merge:04bb3eec8
3519a82dd
Author: snipe <snipe@snipe.net> Date: Wed Sep 18 13:44:44 2024 +0100 Merge pull request #15512 from marcusmoore/testing/fmcs Added tests for delete methods in api commit04bb3eec83
Merge:154d5d8d9
f963b9a19
Author: snipe <snipe@snipe.net> Date: Wed Sep 18 13:41:37 2024 +0100 Merge pull request #15521 from uberbrady/improve_country_selector Fix selected-index of Countries drop-down [fd-44144] commitf963b9a19f
Author: Brady Wetherington <bwetherington@grokability.com> Date: Wed Sep 18 13:24:26 2024 +0100 Fix selected-index of Countries drop-down commit154d5d8d91
Merge:6c996b775
9e5f6d656
Author: snipe <snipe@snipe.net> Date: Tue Sep 17 23:40:25 2024 +0100 Merge pull request #15491 from uberbrady/numeric_prefixes_add_multiple_assets [Fixes fd-43940] Improve multi-asset create when using numeric prefixes to asset_tags commit3519a82ddd
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 16:55:20 2024 -0700 Fix name: TestsFullMultipleCompaniesSupport commita629df07bf
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 14:49:08 2024 -0700 Implement interfaces on existing test classes commit9a13fcab23
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 14:38:38 2024 -0700 Pluralize commitf5705a1dde
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 14:34:55 2024 -0700 More unification commitf325c4afdb
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 14:32:38 2024 -0700 Unify assertion method commit1fddacd7d0
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 14:25:11 2024 -0700 Re-order test methods commit4af893df61
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 14:20:24 2024 -0700 Improve assertions commitb8b3f91ce4
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 13:55:18 2024 -0700 Formatting commit7f40f55343
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 13:52:02 2024 -0700 Add tests for delete supplier endpoint commitb06e8d442d
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 13:37:08 2024 -0700 Add tests for delete status label endpoint commitc269184c60
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 13:29:41 2024 -0700 Add tests for delete predefined kit endpoint commit53c673dee2
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 13:13:12 2024 -0700 Add tests for delete manufacturer endpoint commit50730fc4fb
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 12:37:18 2024 -0700 Add tests for delete location endpoint commit60a54cee79
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 12:33:30 2024 -0700 Add tests for delete license endpoint commit446e962a50
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 10:38:51 2024 -0700 Add tests for delete group endpoint commit79a4bb7316
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 10:35:44 2024 -0700 Add tests for delete depreciation endpoint commit2f76c1bc5b
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 10:33:21 2024 -0700 Add assertion commit38b9f4a438
Author: Marcus Moore <contact@marcusmoore.io> Date: Mon Sep 16 10:29:20 2024 -0700 Add tests for delete departments endpoint commit3105f53aff
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 16:54:29 2024 -0700 Add tests for delete custom fieldsets endpoint commit2047cfed09
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 16:20:32 2024 -0700 Add tests for delete custom fields endpoint commite3268d32df
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 16:00:02 2024 -0700 Add tests for delete consumable endpoint commit6df8b0ac0e
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 15:52:07 2024 -0700 Add tests for delete component endpoint commit910f13c1f7
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 15:38:30 2024 -0700 Add tests for delete companies endpoint commit8ce2512f55
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:54:44 2024 -0700 Add tests for delete category endpoint commit0ec415d4d0
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:46:22 2024 -0700 Clean up commit2044570e95
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:39:36 2024 -0700 Add tests for delete asset model endpoint commitb336c6273d
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:32:42 2024 -0700 Pluralize test classes commit5299b3e9f0
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:29:44 2024 -0700 Remove code handled by CompanyableChildTrait commit872b76b45f
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:29:10 2024 -0700 Add tests for delete asset maintenance endpoint commit275cf4630e
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:16:37 2024 -0700 Add tests for delete asset endpoint commit5c2660bd34
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 13:02:32 2024 -0700 Introduce interface commitc7ae9d9dfa
Author: Marcus Moore <contact@marcusmoore.io> Date: Thu Sep 12 12:58:47 2024 -0700 Add tests for delete accessory endpoint commit9e5f6d656a
Author: Brady Wetherington <bwetherington@grokability.com> Date: Wed Sep 11 15:45:01 2024 +0100 Improve multi-asset create when using numeric prefixes to asset_tags Signed-off-by: snipe <snipe@snipe.net>
185 lines
5.5 KiB
PHP
185 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Models\Traits\Searchable;
|
|
use App\Presenters\Presentable;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Validation\Rule;
|
|
use Watson\Validating\ValidatingTrait;
|
|
|
|
/**
|
|
* Model for predefined kits.
|
|
*
|
|
* @author [D. Minaev.] [<dmitriy.minaev.v@gmail.com>]
|
|
* @version v1.0
|
|
*/
|
|
class PredefinedKit extends SnipeModel
|
|
{
|
|
protected $presenter = \App\Presenters\PredefinedKitPresenter::class;
|
|
use HasFactory;
|
|
use Presentable;
|
|
protected $table = 'kits';
|
|
|
|
/**
|
|
* Category validation rules
|
|
*/
|
|
public $rules = [
|
|
'name' => 'required|min:1|max:255|unique',
|
|
];
|
|
|
|
use ValidatingTrait;
|
|
|
|
public $modelRules = [
|
|
'model_id' => 'required|exists:models,id',
|
|
'quantity' => 'required|integer|min:1',
|
|
'pivot_id' => 'integer|exists:kits_models,id',
|
|
];
|
|
|
|
/**
|
|
* this rules use in edit an attached asset model form
|
|
* see PredefinedKit::_makeRuleHelper function for details
|
|
* @param int $model_id
|
|
* @param bool $new = true if append a new element to kit
|
|
*/
|
|
public function makeModelRules($model_id, $new = false)
|
|
{
|
|
return $this->_makeRuleHelper('models', 'kits_models', 'model_id', $model_id, $new);
|
|
}
|
|
|
|
/**
|
|
* this rules use in edit an attached license form
|
|
* see PredefinedKit::_makeRuleHelper function for details
|
|
* @param int $license_id
|
|
* @param bool $new = true if append a new element to kit
|
|
*/
|
|
public function makeLicenseRules($license_id, $new = false)
|
|
{
|
|
return $this->_makeRuleHelper('licenses', 'kits_licenses', 'license_id', $license_id, $new);
|
|
}
|
|
|
|
/**
|
|
* this rules use in edit an attached accessory form
|
|
* see PredefinedKit::_makeRuleHelper function for details
|
|
* @param int $accessoriy_id
|
|
* @param bool $new = true if append a new element to kit
|
|
*/
|
|
public function makeAccessoryRules($accessory_id, $new = false)
|
|
{
|
|
return $this->_makeRuleHelper('accessories', 'kits_accessories', 'accessory_id', $accessory_id, $new);
|
|
}
|
|
|
|
/**
|
|
* this rules use in edit an attached consumable form
|
|
* see PredefinedKit::_makeRuleHelper function for details
|
|
* @param int $consumable_id
|
|
* @param bool $new = true if append a new element to kit
|
|
*/
|
|
public function makeConsumableRules($consumable_id, $new = false)
|
|
{
|
|
return $this->_makeRuleHelper('consumables', 'kits_consumables', 'consumable_id', $consumable_id, $new);
|
|
}
|
|
|
|
/**
|
|
* Make rules for validation kit attached elements via Illuminate\Validation\Rule
|
|
* checks:
|
|
* uniqueness of the record in table for this kit
|
|
* existence of record in table
|
|
* and simple types check
|
|
* @param string $table element table name
|
|
* @param string $pivot_table kit+element table name
|
|
* @param string $pivot_elem_key element key name inside pivot table
|
|
* @param int $element_id
|
|
* @param bool $new = true if append a new element to kit
|
|
* @return array
|
|
*/
|
|
protected function _makeRuleHelper($table, $pivot_table, $pivot_elem_key, $element_id, $new)
|
|
{
|
|
$rule = [
|
|
$pivot_elem_key => [
|
|
'required',
|
|
"exists:$table,id",
|
|
Rule::unique($pivot_table)->whereNot($pivot_elem_key, $element_id)->where('kit_id', $this->id),
|
|
],
|
|
'quantity' => 'required|integer|min:1',
|
|
];
|
|
if (! $new) {
|
|
$rule['pivot_id'] = "integer|exists:$pivot_table,id";
|
|
}
|
|
|
|
return $rule;
|
|
}
|
|
|
|
/**
|
|
* The attributes that are mass assignable.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $fillable = [
|
|
'name',
|
|
];
|
|
|
|
use Searchable;
|
|
|
|
/**
|
|
* The attributes that should be included when searching the kit.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $searchableAttributes = ['name'];
|
|
|
|
/**
|
|
* The relations and their attributes that should be included when searching the kit.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $searchableRelations = [];
|
|
|
|
/**
|
|
* Establishes the kits -> models relationship
|
|
* @return \Illuminate\Database\Eloquent\Relations\Relation
|
|
*/
|
|
public function models()
|
|
{
|
|
return $this->belongsToMany(\App\Models\AssetModel::class, 'kits_models', 'kit_id', 'model_id')->withPivot('id', 'quantity');
|
|
}
|
|
|
|
public function assets()
|
|
{
|
|
return $this->hasManyThrough(\App\Models\Asset::class, \App\Models\AssetModel::class, 'country_id', 'user_id');
|
|
}
|
|
|
|
/**
|
|
* Establishes the kits -> licenses relationship
|
|
* @return \Illuminate\Database\Eloquent\Relations\Relation
|
|
*/
|
|
public function licenses()
|
|
{
|
|
return $this->belongsToMany(\App\Models\License::class, 'kits_licenses', 'kit_id', 'license_id')->withPivot('id', 'quantity');
|
|
}
|
|
|
|
/**
|
|
* Establishes the kits -> licenses relationship
|
|
* @return \Illuminate\Database\Eloquent\Relations\Relation
|
|
*/
|
|
public function consumables()
|
|
{
|
|
return $this->belongsToMany(\App\Models\Consumable::class, 'kits_consumables', 'kit_id', 'consumable_id')->withPivot('id', 'quantity');
|
|
}
|
|
|
|
/**
|
|
* Establishes the kits -> licenses relationship
|
|
* @return \Illuminate\Database\Eloquent\Relations\Relation
|
|
*/
|
|
public function accessories()
|
|
{
|
|
return $this->belongsToMany(\App\Models\Accessory::class, 'kits_accessories', 'kit_id', 'accessory_id')->withPivot('id', 'quantity');
|
|
}
|
|
|
|
/**
|
|
* -----------------------------------------------
|
|
* BEGIN QUERY SCOPES
|
|
* -----------------------------------------------
|
|
**/
|
|
}
|