From 8ac394bd3f888c5049fb97010e7141103f8b9e3b Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 6 Dec 2013 12:36:43 -0500 Subject: [PATCH 1/5] Escaping parens --- app/validators.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/validators.php b/app/validators.php index e6407872e7..1ebbf5f2d0 100644 --- a/app/validators.php +++ b/app/validators.php @@ -2,5 +2,5 @@ Validator::extend('alpha_space', function($attribute,$value,$parameters) { - return preg_match("/^[-+:?#~'\/()_,!. a-zA-Z0-9]+$/",$value); + return preg_match("/^[-+:?#~'\/\(\)_,!. a-zA-Z0-9]+$/",$value); }); From da9f28fbe70eb40a7ea5f06c99e48ca2bcdb30fb Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 10 Dec 2013 03:48:20 -0500 Subject: [PATCH 2/5] DB migration for #112 --- ...3_12_10_084038_add_eol_on_models_table.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 app/database/migrations/2013_12_10_084038_add_eol_on_models_table.php diff --git a/app/database/migrations/2013_12_10_084038_add_eol_on_models_table.php b/app/database/migrations/2013_12_10_084038_add_eol_on_models_table.php new file mode 100644 index 0000000000..dadbf46d9a --- /dev/null +++ b/app/database/migrations/2013_12_10_084038_add_eol_on_models_table.php @@ -0,0 +1,34 @@ +integer('eol')->nullable()->default(NULL); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('models', function($table) + { + $table->dropColumn('old'); + }); + } + +} \ No newline at end of file From 4c3e2a9a680353daf57befa00572f107151336f9 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 10 Dec 2013 03:52:23 -0500 Subject: [PATCH 3/5] DB seeding for #112 --- app/database/seeds/ModelsSeeder.php | 102 +++++++++++++++------------- 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/app/database/seeds/ModelsSeeder.php b/app/database/seeds/ModelsSeeder.php index cb1ecc00cc..c6c282cc02 100644 --- a/app/database/seeds/ModelsSeeder.php +++ b/app/database/seeds/ModelsSeeder.php @@ -12,71 +12,77 @@ class ModelsSeeder extends Seeder { $date = new DateTime; $models[] = array( - 'name' => 'MacBook Pro (13-inch, Mid 2012)', - 'manufacturer_id' => '1', - 'category_id' => '1', - 'modelno' => 'MacBookPro9,2', - 'created_at' => $date->modify('-10 day'), - 'updated_at' => $date->modify('-3 day'), - 'depreciation_id' => 1, - 'user_id' => 1, + 'name' => 'MacBook Pro (13-inch, Mid 2012)', + 'manufacturer_id' => '1', + 'category_id' => '1', + 'modelno' => 'MacBookPro9,2', + 'created_at' => $date->modify('-10 day'), + 'updated_at' => $date->modify('-3 day'), + 'depreciation_id' => 1, + 'user_id' => 1, + 'eol' => '36', ); $models[] = array( - 'name' => 'MacBook Pro (Retina, 13-inch, Late 2012)', - 'manufacturer_id' => '1', - 'category_id' => '1', - 'modelno' => 'MacBookPro10,2', - 'created_at' => $date->modify('-4 day'), - 'updated_at' => $date->modify('-1 day'), - 'depreciation_id' => 1, - 'user_id' => 1, + 'name' => 'MacBook Pro (Retina, 13-inch, Late 2012)', + 'manufacturer_id' => '1', + 'category_id' => '1', + 'modelno' => 'MacBookPro10,2', + 'created_at' => $date->modify('-4 day'), + 'updated_at' => $date->modify('-1 day'), + 'depreciation_id' => 1, + 'user_id' => 1, + 'eol' => '36', ); $models[] = array( - 'name' => 'MacBook Pro (Retina, 13-inch, Early 2013)', - 'manufacturer_id' => '2', - 'category_id' => '1', - 'modelno' => 'MacBookPro10,2', - 'created_at' => $date->modify('-2 day'), - 'updated_at' => $date, - 'depreciation_id' => 1, - 'user_id' => 1, + 'name' => 'MacBook Pro (Retina, 13-inch, Early 2013)', + 'manufacturer_id' => '2', + 'category_id' => '1', + 'modelno' => 'MacBookPro10,2', + 'created_at' => $date->modify('-2 day'), + 'updated_at' => $date, + 'depreciation_id' => 1, + 'user_id' => 1, + 'eol' => '36', ); $models[] = array( - 'name' => 'MacBook Pro (Retina, 13-inch, Late 2013)', - 'manufacturer_id' => '2', - 'category_id' => '1', - 'modelno' => 'MacBookPro11,1', - 'created_at' => $date->modify('-2 day'), - 'updated_at' => $date, - 'depreciation_id' => 1, - 'user_id' => 1, + 'name' => 'MacBook Pro (Retina, 13-inch, Late 2013)', + 'manufacturer_id' => '2', + 'category_id' => '1', + 'modelno' => 'MacBookPro11,1', + 'created_at' => $date->modify('-2 day'), + 'updated_at' => $date, + 'depreciation_id' => 1, + 'user_id' => 1, + 'eol' => '24', ); $models[] = array( - 'name' => 'Inspiron 15 Non-Touch', - 'manufacturer_id' => '4', - 'category_id' => '1', - 'modelno' => 'FNCWC16B', - 'created_at' => $date->modify('-2 day'), - 'updated_at' => $date, - 'depreciation_id' => 1, - 'user_id' => 1, + 'name' => 'Inspiron 15 Non-Touch', + 'manufacturer_id' => '4', + 'category_id' => '1', + 'modelno' => 'FNCWC16B', + 'created_at' => $date->modify('-2 day'), + 'updated_at' => $date, + 'depreciation_id' => 1, + 'user_id' => 1, + 'eol' => '36', ); $models[] = array( - 'name' => '22-inch T897', - 'manufacturer_id' => '4', - 'category_id' => '5', - 'modelno' => '78FNCWC16B', - 'created_at' => $date->modify('-2 day'), - 'updated_at' => $date, - 'depreciation_id' => 1, - 'user_id' => 1, + 'name' => '22-inch T897', + 'manufacturer_id' => '4', + 'category_id' => '5', + 'modelno' => '78FNCWC16B', + 'created_at' => $date->modify('-2 day'), + 'updated_at' => $date, + 'depreciation_id' => 1, + 'user_id' => 1, + 'eol' => '60', ); From 4468cbd096e9990300240205baf7139eafbc423c Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 10 Dec 2013 04:48:40 -0500 Subject: [PATCH 4/5] Fixes #112 --- app/controllers/admin/ModelsController.php | 24 ++++++++++++---------- app/lang/en/admin/hardware/table.php | 1 + app/lang/en/admin/models/table.php | 1 + app/models/Asset.php | 24 ++++++++++++++++++++++ app/models/Model.php | 9 ++++---- app/views/backend/hardware/index.blade.php | 10 +++++++-- app/views/backend/hardware/view.blade.php | 10 +++++++++ app/views/backend/models/edit.blade.php | 13 ++++++++++++ app/views/backend/models/index.blade.php | 15 ++++++++++++-- app/views/backend/models/view.blade.php | 4 ++++ 10 files changed, 91 insertions(+), 20 deletions(-) diff --git a/app/controllers/admin/ModelsController.php b/app/controllers/admin/ModelsController.php index 3e239d7ec7..cbc068bdfb 100644 --- a/app/controllers/admin/ModelsController.php +++ b/app/controllers/admin/ModelsController.php @@ -69,12 +69,13 @@ class ModelsController extends AdminController { { // Save the model data - $model->name = e(Input::get('name')); - $model->modelno = e(Input::get('modelno')); - $model->depreciation_id = e(Input::get('depreciation_id')); - $model->manufacturer_id = e(Input::get('manufacturer_id')); - $model->category_id = e(Input::get('category_id')); - $model->user_id = Sentry::getId(); + $model->name = e(Input::get('name')); + $model->modelno = e(Input::get('modelno')); + $model->depreciation_id = e(Input::get('depreciation_id')); + $model->manufacturer_id = e(Input::get('manufacturer_id')); + $model->category_id = e(Input::get('category_id')); + $model->user_id = Sentry::getId(); + $model->eol = e(Input::get('eol')); // Was it created? @@ -145,11 +146,12 @@ class ModelsController extends AdminController { { // Update the model data - $model->name = e(Input::get('name')); - $model->modelno = e(Input::get('modelno')); - $model->depreciation_id = e(Input::get('depreciation_id')); - $model->manufacturer_id = e(Input::get('manufacturer_id')); - $model->category_id = e(Input::get('category_id')); + $model->name = e(Input::get('name')); + $model->modelno = e(Input::get('modelno')); + $model->depreciation_id = e(Input::get('depreciation_id')); + $model->manufacturer_id = e(Input::get('manufacturer_id')); + $model->category_id = e(Input::get('category_id')); + $model->eol = e(Input::get('eol')); // Was it created? diff --git a/app/lang/en/admin/hardware/table.php b/app/lang/en/admin/hardware/table.php index 4def3fcfa3..896787322c 100755 --- a/app/lang/en/admin/hardware/table.php +++ b/app/lang/en/admin/hardware/table.php @@ -13,5 +13,6 @@ return array( 'checkoutto' => 'Checked Out', 'change' => 'In/Out', 'location' => 'Location', + 'eol' => 'EOL', ); diff --git a/app/lang/en/admin/models/table.php b/app/lang/en/admin/models/table.php index 19f1969f31..f6ed847723 100755 --- a/app/lang/en/admin/models/table.php +++ b/app/lang/en/admin/models/table.php @@ -6,5 +6,6 @@ return array( 'modelnumber' => 'Model No.', 'created_at' => 'Created at', 'numassets' => 'Assets', + 'eol' => 'EOL', ); diff --git a/app/models/Asset.php b/app/models/Asset.php index a5ba10fe0f..868d29399c 100644 --- a/app/models/Asset.php +++ b/app/models/Asset.php @@ -149,4 +149,28 @@ class Asset extends Elegant { return $this->belongsTo('Model','model_id'); } + public function months_until_eol() + { + $today = date("Y-m-d"); + $d1 = new DateTime($today); + $d2 = new DateTime($this->eol_date()); + + if ($this->eol_date() > $today) + { + $interval = $d2->diff($d1); + } else { + $interval = NULL; + } + + return $interval; + } + + public function eol_date() + { + $date = date_create($this->purchase_date); + date_add($date, date_interval_create_from_date_string($this->model->eol.' months')); + return date_format($date, 'Y-m-d'); + } + + } diff --git a/app/models/Model.php b/app/models/Model.php index 62cc54eb8b..b24b2cd415 100644 --- a/app/models/Model.php +++ b/app/models/Model.php @@ -4,10 +4,11 @@ class Model extends Elegant { // Declare the rules for the form validation protected $rules = array( - 'name' => 'required|alpha_space|min:3', - 'modelno' => 'alpha_space|min:1', - 'category_id' => 'required|integer', + 'name' => 'required|alpha_space|min:3', + 'modelno' => 'alpha_space|min:1', + 'category_id' => 'required|integer', 'manufacturer_id' => 'required|integer', + 'eol' => 'integer', ); public function assets() @@ -35,6 +36,4 @@ class Model extends Elegant { return $this->belongsTo('Manufacturer','manufacturer_id'); } - - } diff --git a/app/views/backend/hardware/index.blade.php b/app/views/backend/hardware/index.blade.php index 75f905b093..d6d52cae2d 100755 --- a/app/views/backend/hardware/index.blade.php +++ b/app/views/backend/hardware/index.blade.php @@ -54,7 +54,7 @@ Assets :: - + @if (Input::get('Pending') || Input::get('Undeployable') || Input::get('RTD')) @@ -63,7 +63,7 @@ Assets :: @endif - + @@ -108,6 +108,12 @@ Assets :: @endif + + + @foreach ($models as $model) - + + + +
@lang('admin/hardware/table.asset_tag')@lang('admin/hardware/table.asset_tag') @lang('admin/hardware/table.title') @lang('admin/hardware/table.serial')@lang('admin/hardware/table.checkoutto') @lang('admin/hardware/table.location')@lang('admin/hardware/table.eol') @lang('admin/hardware/table.change') @lang('table.actions')
+ @if ($asset->model->eol) + {{ $asset->eol_date() }} + @endif + @if ($asset->status_id < 1 ) @if ($asset->assigned_to != 0) diff --git a/app/views/backend/hardware/view.blade.php b/app/views/backend/hardware/view.blade.php index 1b0d38a794..872ba027af 100644 --- a/app/views/backend/hardware/view.blade.php +++ b/app/views/backend/hardware/view.blade.php @@ -74,6 +74,16 @@ View Asset {{ $asset->asset_tag }} :: {{ $asset->months_until_depreciated()->y }} years @endif + @if ($asset->model->eol) +
EOL Rate: {{ $asset->model->eol }} months
+
EOL Date: {{ $asset->eol_date() }} + @if ($asset->months_until_eol()) + ({{ $asset->months_until_eol()->y }} years, + {{ $asset->months_until_eol()->m }} months) + @endif +
+ @endif + diff --git a/app/views/backend/models/edit.blade.php b/app/views/backend/models/edit.blade.php index 5fcae473c8..237e19d1d7 100755 --- a/app/views/backend/models/edit.blade.php +++ b/app/views/backend/models/edit.blade.php @@ -78,6 +78,19 @@ + +
+ +
+
+ months + {{ $errors->first('eol', ' :message') }} +
+
+
+ + +
diff --git a/app/views/backend/models/index.blade.php b/app/views/backend/models/index.blade.php index ee007147d8..a1b78b5c67 100755 --- a/app/views/backend/models/index.blade.php +++ b/app/views/backend/models/index.blade.php @@ -25,18 +25,18 @@ Asset Models ::
@lang('admin/models/table.numassets') Depreciation CategoryEOL @lang('table.actions')
{{{ $model->name }}}{{{ $model->name }}} {{ $model->modelno }} {{ ($model->assets->count()) }} - @if (($model->depreciation) && ($model->depreciation->id > 0)) {{ $model->depreciation->name }} ({{ $model->depreciation->months }} months) @@ -50,6 +50,17 @@ Asset Models :: {{ $model->category->name }} @endif + + @if ($model->eol) + {{ $model->eol }} months + @else + -- + @endif + + diff --git a/app/views/backend/models/view.blade.php b/app/views/backend/models/view.blade.php index 418640af35..68188f4d08 100644 --- a/app/views/backend/models/view.blade.php +++ b/app/views/backend/models/view.blade.php @@ -90,6 +90,10 @@ View Model {{ $model->model_tag }} ::
  • Depreciation: {{ $model->depreciation->name }} ({{ $model->depreciation->months }} months)
  • @endif + @if ($model->eol) +
  • EOL: {{ $model->eol }} months
  • + @endif + From 1cec46f997b22ae48b68bdbd0dced8db6654a7fd Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 10 Dec 2013 05:17:15 -0500 Subject: [PATCH 5/5] Updated comment, made save on edit return to listing page --- app/controllers/admin/ModelsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/ModelsController.php b/app/controllers/admin/ModelsController.php index cbc068bdfb..f7362acac1 100644 --- a/app/controllers/admin/ModelsController.php +++ b/app/controllers/admin/ModelsController.php @@ -134,7 +134,7 @@ class ModelsController extends AdminController { // Check if the model exists if (is_null($model = Model::find($modelId))) { - // Redirect to the blogs management page + // Redirect to the models management page return Redirect::to('admin/models')->with('error', Lang::get('admin/models/message.does_not_exist')); } @@ -158,7 +158,7 @@ class ModelsController extends AdminController { if($model->save()) { // Redirect to the new model page - return Redirect::to("hardware/models/$modelId/edit")->with('success', Lang::get('admin/models/message.update.success')); + return Redirect::to("hardware/models")->with('success', Lang::get('admin/models/message.update.success')); } } else