Allow models to be deleted and restored which in turn allows deleted hardware to function when model is deleted.
321 lines
10 KiB
PHP
Executable File
321 lines
10 KiB
PHP
Executable File
<?php namespace Controllers\Admin;
|
|
|
|
use AdminController;
|
|
use Image;
|
|
use Input;
|
|
use Lang;
|
|
use Model;
|
|
use Redirect;
|
|
use Setting;
|
|
use Sentry;
|
|
use DB;
|
|
use Depreciation;
|
|
use Manufacturer;
|
|
use Str;
|
|
use Validator;
|
|
use View;
|
|
|
|
class ModelsController extends AdminController
|
|
{
|
|
/**
|
|
* Show a list of all the models.
|
|
*
|
|
* @return View
|
|
*/
|
|
public function getIndex()
|
|
{
|
|
// Grab all the models
|
|
$models = Model::orderBy('created_at', 'DESC');
|
|
if (Input::get('Deleted')) {
|
|
$models->withTrashed()->Deleted();
|
|
}
|
|
|
|
$models = $models->get();
|
|
|
|
// Show the page
|
|
return View::make('backend/models/index', compact('models'));
|
|
}
|
|
|
|
/**
|
|
* Model create.
|
|
*
|
|
* @return View
|
|
*/
|
|
public function getCreate()
|
|
{
|
|
// Show the page
|
|
$depreciation_list = array('' => 'Do Not Depreciate') + Depreciation::lists('name', 'id');
|
|
$manufacturer_list = array('' => 'Select One') + Manufacturer::lists('name', 'id');
|
|
$category_list = array('' => '') + DB::table('categories')->whereNull('deleted_at')->lists('name', 'id');
|
|
$view = View::make('backend/models/edit');
|
|
$view->with('category_list',$category_list);
|
|
$view->with('depreciation_list',$depreciation_list);
|
|
$view->with('manufacturer_list',$manufacturer_list);
|
|
$view->with('model',new Model);
|
|
return $view;
|
|
}
|
|
|
|
|
|
/**
|
|
* Model create form processing.
|
|
*
|
|
* @return Redirect
|
|
*/
|
|
public function postCreate()
|
|
{
|
|
|
|
// get the POST data
|
|
$new = Input::all();
|
|
|
|
// Create a new manufacturer
|
|
$model = new Model;
|
|
|
|
// attempt validation
|
|
if ($model->validate($new)) {
|
|
|
|
if ( e(Input::get('depreciation_id')) == '') {
|
|
$model->depreciation_id = 0;
|
|
} else {
|
|
$model->depreciation_id = e(Input::get('depreciation_id'));
|
|
}
|
|
|
|
if ( e(Input::get('eol')) == '') {
|
|
$model->eol = 0;
|
|
} else {
|
|
$model->eol = e(Input::get('eol'));
|
|
}
|
|
|
|
// Save the model data
|
|
$model->name = e(Input::get('name'));
|
|
$model->modelno = e(Input::get('modelno'));
|
|
$model->manufacturer_id = e(Input::get('manufacturer_id'));
|
|
$model->category_id = e(Input::get('category_id'));
|
|
$model->user_id = Sentry::getId();
|
|
$model->show_mac_address = e(Input::get('show_mac_address', '0'));
|
|
|
|
|
|
if (Input::file('image')) {
|
|
$image = Input::file('image');
|
|
$file_name = str_random(25).".".$image->getClientOriginalExtension();
|
|
$path = public_path('uploads/models/'.$file_name);
|
|
Image::make($image->getRealPath())->resize(300, null, function ($constraint) {
|
|
$constraint->aspectRatio();
|
|
$constraint->upsize();
|
|
})->save($path);
|
|
$model->image = $file_name;
|
|
}
|
|
|
|
// Was it created?
|
|
if($model->save()) {
|
|
// Redirect to the new model page
|
|
return Redirect::to("hardware/models")->with('success', Lang::get('admin/models/message.create.success'));
|
|
}
|
|
} else {
|
|
// failure
|
|
$errors = $model->errors();
|
|
return Redirect::back()->withInput()->withErrors($errors);
|
|
}
|
|
|
|
// Redirect to the model create page
|
|
return Redirect::to('hardware/models/create')->with('error', Lang::get('admin/models/message.create.error'));
|
|
|
|
}
|
|
|
|
/**
|
|
* Model update.
|
|
*
|
|
* @param int $modelId
|
|
* @return View
|
|
*/
|
|
public function getEdit($modelId = null)
|
|
{
|
|
// Check if the model exists
|
|
if (is_null($model = Model::find($modelId))) {
|
|
// Redirect to the model management page
|
|
return Redirect::to('assets/models')->with('error', Lang::get('admin/models/message.does_not_exist'));
|
|
}
|
|
|
|
$depreciation_list = array('' => 'Do Not Depreciate') + Depreciation::lists('name', 'id');
|
|
$manufacturer_list = array('' => 'Select One') + Manufacturer::lists('name', 'id');
|
|
$category_list = array('' => '') + DB::table('categories')->lists('name', 'id');
|
|
$view = View::make('backend/models/edit', compact('model'));
|
|
$view->with('category_list',$category_list);
|
|
$view->with('depreciation_list',$depreciation_list);
|
|
$view->with('manufacturer_list',$manufacturer_list);
|
|
return $view;
|
|
}
|
|
|
|
|
|
/**
|
|
* Model update form processing page.
|
|
*
|
|
* @param int $modelId
|
|
* @return Redirect
|
|
*/
|
|
public function postEdit($modelId = null)
|
|
{
|
|
// Check if the model exists
|
|
if (is_null($model = Model::find($modelId))) {
|
|
// Redirect to the models management page
|
|
return Redirect::to('admin/models')->with('error', Lang::get('admin/models/message.does_not_exist'));
|
|
}
|
|
|
|
//attempt to validate
|
|
$validator = Validator::make(Input::all(), $model->validationRules($modelId));
|
|
|
|
if ($validator->fails())
|
|
{
|
|
// The given data did not pass validation
|
|
return Redirect::back()->withInput()->withErrors($validator->messages());
|
|
}
|
|
// attempt validation
|
|
else {
|
|
|
|
if ( e(Input::get('depreciation_id')) == '') {
|
|
$model->depreciation_id = 0;
|
|
} else {
|
|
$model->depreciation_id = e(Input::get('depreciation_id'));
|
|
}
|
|
|
|
if ( e(Input::get('eol')) == '') {
|
|
$model->eol = 0;
|
|
} else {
|
|
$model->eol = e(Input::get('eol'));
|
|
}
|
|
|
|
// Update the model data
|
|
$model->name = e(Input::get('name'));
|
|
$model->modelno = e(Input::get('modelno'));
|
|
$model->manufacturer_id = e(Input::get('manufacturer_id'));
|
|
$model->category_id = e(Input::get('category_id'));
|
|
$model->show_mac_address = e(Input::get('show_mac_address', '0'));
|
|
|
|
if (Input::file('image')) {
|
|
$image = Input::file('image');
|
|
$file_name = str_random(25).".".$image->getClientOriginalExtension();
|
|
$path = public_path('uploads/models/'.$file_name);
|
|
Image::make($image->getRealPath())->resize(300, null, function ($constraint) {
|
|
$constraint->aspectRatio();
|
|
$constraint->upsize();
|
|
})->save($path);
|
|
$model->image = $file_name;
|
|
}
|
|
|
|
if (Input::get('image_delete') == 1 && Input::file('image') == "") {
|
|
$model->image = NULL;
|
|
}
|
|
|
|
// Was it created?
|
|
if($model->save()) {
|
|
// Redirect to the new model page
|
|
return Redirect::to("hardware/models")->with('success', Lang::get('admin/models/message.update.success'));
|
|
}
|
|
}
|
|
|
|
// Redirect to the model create page
|
|
return Redirect::to("hardware/models/$modelId/edit")->with('error', Lang::get('admin/models/message.update.error'));
|
|
|
|
}
|
|
|
|
/**
|
|
* Delete the given model.
|
|
*
|
|
* @param int $modelId
|
|
* @return Redirect
|
|
*/
|
|
public function getDelete($modelId)
|
|
{
|
|
// Check if the model exists
|
|
if (is_null($model = Model::find($modelId))) {
|
|
// Redirect to the blogs management page
|
|
return Redirect::to('hardware/models')->with('error', Lang::get('admin/models/message.not_found'));
|
|
}
|
|
|
|
if ($model->assets->count() > 0) {
|
|
// Throw an error that this model is associated with assets
|
|
return Redirect::to('hardware/models')->with('error', Lang::get('admin/models/message.assoc_users'));
|
|
|
|
} else {
|
|
// Delete the model
|
|
$model->delete();
|
|
|
|
// Redirect to the models management page
|
|
return Redirect::to('hardware/models')->with('success', Lang::get('admin/models/message.delete.success'));
|
|
}
|
|
}
|
|
|
|
public function getRestore($modelId = null)
|
|
{
|
|
|
|
// Get user information
|
|
$model = Model::withTrashed()->find($modelId);
|
|
|
|
if (isset($model->id)) {
|
|
|
|
// Restore the user
|
|
$model->restore();
|
|
|
|
// Prepare the success message
|
|
$success = Lang::get('admin/models/message.restore.success');
|
|
|
|
// Redirect to the user management page
|
|
return Redirect::to('hardware/models')->with('success', $success);
|
|
|
|
} else {
|
|
return Redirect::to('hardware/models')->with('error', Lang::get('admin/models/message.not_found'));
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Get the asset information to present to the model view page
|
|
*
|
|
* @param int $assetId
|
|
* @return View
|
|
**/
|
|
public function getView($modelId = null)
|
|
{
|
|
$model = Model::find($modelId);
|
|
|
|
if (isset($model->id)) {
|
|
return View::make('backend/models/view', compact('model'));
|
|
} else {
|
|
// Prepare the error message
|
|
$error = Lang::get('admin/models/message.does_not_exist', compact('id'));
|
|
|
|
// Redirect to the user management page
|
|
return Redirect::route('models')->with('error', $error);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public function getClone($modelId = null)
|
|
{
|
|
// Check if the model exists
|
|
if (is_null($model_to_clone = Model::find($modelId))) {
|
|
// Redirect to the model management page
|
|
return Redirect::to('assets/models')->with('error', Lang::get('admin/models/message.does_not_exist'));
|
|
}
|
|
|
|
$model = clone $model_to_clone;
|
|
$model->id = null;
|
|
|
|
// Show the page
|
|
$depreciation_list = array('' => 'Do Not Depreciate') + Depreciation::lists('name', 'id');
|
|
$manufacturer_list = array('' => 'Select One') + Manufacturer::lists('name', 'id');
|
|
$category_list = array('' => '') + DB::table('categories')->whereNull('deleted_at')->lists('name', 'id');
|
|
$view = View::make('backend/models/edit');
|
|
$view->with('category_list',$category_list);
|
|
$view->with('depreciation_list',$depreciation_list);
|
|
$view->with('manufacturer_list',$manufacturer_list);
|
|
$view->with('model',$model);
|
|
$view->with('clone_model',$model_to_clone);
|
|
return $view;
|
|
|
|
}
|
|
|
|
|
|
}
|