] * @see Api\ManufacturersController::index() method that generates the JSON response * @since [v1.0] * @return \Illuminate\Contracts\View\View */ public function index() { $this->authorize('index', Manufacturer::class); return view('manufacturers/index'); } /** * Returns a view that displays a form to create a new manufacturer. * * @author [A. Gianotto] [] * @see ManufacturersController::store() * @since [v1.0] * @return \Illuminate\Contracts\View\View */ public function create() { $this->authorize('create', Manufacturer::class); return view('manufacturers/edit')->with('item', new Manufacturer); } /** * Validates and stores the data for a new manufacturer. * * @author [A. Gianotto] [] * @see ManufacturersController::create() * @since [v1.0] * @param Request $request * @return \Illuminate\Http\RedirectResponse */ public function store(ImageUploadRequest $request) { $this->authorize('create', Manufacturer::class); $manufacturer = new Manufacturer; $manufacturer->name = $request->input('name'); $manufacturer->user_id = Auth::user()->id; $manufacturer->url = $request->input('url'); $manufacturer->support_url = $request->input('support_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); if ($request->file('image')) { $image = $request->file('image'); $file_name = str_slug($image->getClientOriginalName()).".".$image->getClientOriginalExtension(); $path = public_path('uploads/manufacturers/'.$file_name); Image::make($image->getRealPath())->resize(200, null, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->save($path); $manufacturer->image = $file_name; } if ($manufacturer->save()) { return redirect()->route('manufacturers.index')->with('success', trans('admin/manufacturers/message.create.success')); } return redirect()->back()->withInput()->withErrors($manufacturer->getErrors()); } /** * Returns a view that displays a form to edit a manufacturer. * * @author [A. Gianotto] [] * @see ManufacturersController::update() * @param int $manufacturerId * @since [v1.0] * @return \Illuminate\Contracts\View\View */ public function edit($id = null) { $this->authorize('edit', Manufacturer::class); // Check if the manufacturer exists if (is_null($item = Manufacturer::find($id))) { return redirect()->route('manufacturers.index')->with('error', trans('admin/manufacturers/message.does_not_exist')); } // Show the page return view('manufacturers/edit', compact('item')); } /** * Validates and stores the updated manufacturer data. * * @author [A. Gianotto] [] * @see ManufacturersController::getEdit() * @param Request $request * @param int $manufacturerId * @return \Illuminate\Http\RedirectResponse * @since [v1.0] */ public function update(ImageUploadRequest $request, $manufacturerId = null) { $this->authorize('edit', Manufacturer::class); // Check if the manufacturer exists if (is_null($manufacturer = Manufacturer::find($manufacturerId))) { // Redirect to the manufacturer page return redirect()->route('manufacturers.index')->with('error', trans('admin/manufacturers/message.does_not_exist')); } // Save the data $manufacturer->name = $request->input('name'); $manufacturer->url = $request->input('url'); $manufacturer->support_url = $request->input('support_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); $old_image = $manufacturer->image; // Set the model's image property to null if the image is being deleted if ($request->input('image_delete') == 1) { $manufacturer->image = null; } if ($request->file('image')) { $image = $request->file('image'); $file_name = $manufacturer->id.'-'.str_slug($image->getClientOriginalName()) . "." . $image->getClientOriginalExtension(); if ($image->getClientOriginalExtension()!='svg') { Image::make($image->getRealPath())->resize(500, null, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->save(app('manufacturers_upload_path').$file_name); } else { $image->move(app('manufacturers_upload_path'), $file_name); } $manufacturer->image = $file_name; } if ((($request->file('image')) && (isset($old_image)) && ($old_image!='')) || ($request->input('image_delete') == 1)) { try { unlink(app('manufacturers_upload_path').$old_image); } catch (\Exception $e) { \Log::error($e); } } if ($manufacturer->save()) { return redirect()->route('manufacturers.index')->with('success', trans('admin/manufacturers/message.update.success')); } return redirect()->back()->withInput()->withErrors($manufacturer->getErrors()); } /** * Deletes a manufacturer. * * @author [A. Gianotto] [] * @param int $manufacturerId * @since [v1.0] * @return \Illuminate\Http\RedirectResponse */ public function destroy($manufacturerId) { $this->authorize('delete', Manufacturer::class); // Check if the manufacturer exists if (is_null($manufacturer = Manufacturer::find($manufacturerId))) { // Redirect to the manufacturers page return redirect()->route('manufacturers.index')->with('error', trans('admin/manufacturers/message.not_found')); } if ($manufacturer->has_models() > 0) { // Redirect to the asset management page return redirect()->route('manufacturers.index')->with('error', trans('admin/manufacturers/message.assoc_users')); } if ($manufacturer->image) { try { unlink(public_path().'/uploads/manufacturers/'.$manufacturer->image); } catch (\Exception $e) { \Log::error($e); } } // Delete the manufacturer $manufacturer->delete(); // Redirect to the manufacturers management page return redirect()->route('manufacturers.index')->with('success', trans('admin/manufacturers/message.delete.success')); } /** * Returns a view that invokes the ajax tables which actually contains * the content for the manufacturers detail listing, which is generated via API. * This data contains a listing of all assets that belong to that manufacturer. * * @author [A. Gianotto] [] * @param int $manufacturerId * @since [v1.0] * @return \Illuminate\Contracts\View\View */ public function show($manufacturerId = null) { $this->authorize('view', Manufacturer::class); $manufacturer = Manufacturer::find($manufacturerId); if (isset($manufacturer->id)) { return view('manufacturers/view', compact('manufacturer')); } $error = trans('admin/manufacturers/message.does_not_exist'); // Redirect to the user management page return redirect()->route('manufacturers.index')->with('error', $error); } /** * Restore a given Manufacturer (mark as un-deleted) * * @author [A. Gianotto] [] * @since [v4.1.15] * @param int $manufacturers_id * @return Redirect */ public function restore($manufacturers_id) { $this->authorize('create', Manufacturer::class); $manufacturer = Manufacturer::onlyTrashed()->where('id',$manufacturers_id)->first(); if ($manufacturer) { // Not sure why this is necessary - it shouldn't fail validation here, but it fails without this, so.... $manufacturer->setValidating(false); if ($manufacturer->restore()) { return redirect()->route('manufacturers.index')->with('success', trans('admin/manufacturers/message.restore.success')); } return redirect()->back()->with('error', 'Could not restore.'); } return redirect()->back()->with('error', trans('admin/manufacturers/message.does_not_exist')); } }