'required|integer', 'supplier_id' => 'required|integer', 'asset_maintenance_type' => 'required', 'title' => 'required|max:100', 'is_warranty' => 'boolean', 'start_date' => 'required|date_format:"Y-m-d"', 'completion_date' => 'nullable|date_format:"Y-m-d"', 'notes' => 'string|nullable', 'cost' => 'numeric|nullable' ]; public function getCompanyableParents() { return [ 'asset' ]; } /** * getImprovementOptions * * @return array * @author Vincent Sposato * @version v1.0 */ public static function getImprovementOptions() { return [ trans('admin/asset_maintenances/general.maintenance') => trans('admin/asset_maintenances/general.maintenance'), trans('admin/asset_maintenances/general.repair') => trans('admin/asset_maintenances/general.repair'), trans('admin/asset_maintenances/general.upgrade') => trans('admin/asset_maintenances/general.upgrade'), 'PAT test' => 'PAT test', ]; } public function setIsWarrantyAttribute($value) { if ($value == '') { $value = 0; } $this->attributes['is_warranty'] = $value; } /** * @param $value */ public function setCostAttribute($value) { $value = Helper::ParseFloat($value); if ($value == '0.0') { $value = null; } $this->attributes['cost'] = $value; } /** * @param $value */ public function setNotesAttribute($value) { if ($value == '') { $value = null; } $this->attributes['notes'] = $value; } /** * @param $value */ public function setCompletionDateAttribute($value) { if ($value == '' || $value == "0000-00-00") { $value = null; } $this->attributes['completion_date'] = $value; } /** * asset * Get asset for this improvement * * @return mixed * @author Vincent Sposato * @version v1.0 */ public function asset() { return $this->belongsTo('\App\Models\Asset', 'asset_id') ->withTrashed(); } /** * Get the admin who created the maintenance * * @return mixed * @author A. Gianotto * @version v3.0 */ public function admin() { return $this->belongsTo('\App\Models\User', 'user_id') ->withTrashed(); } public function supplier() { return $this->belongsTo('\App\Models\Supplier', 'supplier_id') ->withTrashed(); } /** * ----------------------------------------------- * BEGIN QUERY SCOPES * ----------------------------------------------- **/ /** * Query builder scope to search on text * * @param Illuminate\Database\Query\Builder $query Query builder instance * @param text $search Search term * * @return Illuminate\Database\Query\Builder Modified query builder */ public function scopeTextSearch($query, $search) { return $query->where(function ($query) use ($search) { $query->where('asset_maintenances.title', 'LIKE', '%'.$search.'%') ->orWhere('asset_maintenances.notes', 'LIKE', '%'.$search.'%') ->orWhere('asset_maintenances.asset_maintenance_type', 'LIKE', '%'.$search.'%') ->orWhere('asset_maintenances.cost', 'LIKE', '%'.$search.'%') ->orWhere('asset_maintenances.start_date', 'LIKE', '%'.$search.'%') ->orWhere('asset_maintenances.completion_date', 'LIKE', '%'.$search.'%'); }); } /** * Query builder scope to order on admin user * * @param Illuminate\Database\Query\Builder $query Query builder instance * @param text $order Order * * @return Illuminate\Database\Query\Builder Modified query builder */ public function scopeOrderAdmin($query, $order) { return $query->leftJoin('users', 'asset_maintenances.user_id', '=', 'users.id') ->orderBy('users.first_name', $order) ->orderBy('users.last_name', $order); } /** * Query builder scope to order on asset tag * * @param Illuminate\Database\Query\Builder $query Query builder instance * @param text $order Order * * @return Illuminate\Database\Query\Builder Modified query builder */ public function scopeOrderByTag($query, $order) { return $query->leftJoin('assets', 'asset_maintenances.asset_id', '=', 'assets.id') ->orderBy('assets.asset_tag', $order); } /** * Query builder scope to order on asset tag * * @param Illuminate\Database\Query\Builder $query Query builder instance * @param text $order Order * * @return Illuminate\Database\Query\Builder Modified query builder */ public function scopeOrderByAssetName($query, $order) { return $query->leftJoin('assets', 'asset_maintenances.asset_id', '=', 'assets.id') ->orderBy('assets.name', $order); } }