173 lines
5.8 KiB
PHP
173 lines
5.8 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Http\UploadedFile;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class RoadItemsProject extends Model
|
|
{
|
|
use HasFactory;
|
|
///start_way_id
|
|
///end_way_id
|
|
|
|
protected $fillable = [
|
|
'id',
|
|
'user_id',
|
|
'start_lat',
|
|
'start_lng',
|
|
'end_lat',
|
|
'end_lng',
|
|
'project_distance',
|
|
'item',
|
|
'item_fa',
|
|
'sub_item',
|
|
'sub_item_fa',
|
|
'sub_item_data',
|
|
'sub_items',
|
|
'sub_items_data',
|
|
'unit_fa',
|
|
'created_at',
|
|
'updated_at',
|
|
'created_at_fa',
|
|
'province_id',
|
|
'province_fa',
|
|
'city_id',
|
|
'city_fa',
|
|
'user_name',
|
|
'is_new',
|
|
'parent_id ',
|
|
'start_way_id',
|
|
'end_way_id',
|
|
'info_id',
|
|
'status',
|
|
'status_fa',
|
|
'supervisor_id',
|
|
'supervisor_description',
|
|
'supervising_time',
|
|
'edarat_id',
|
|
'edarat_name',
|
|
'edarat_type',
|
|
'supervisor_name',
|
|
'activity_date',
|
|
'activity_time',
|
|
'activity_date_time',
|
|
'cmms_machine_id',
|
|
'cmms_machine_code',
|
|
];
|
|
|
|
/**
|
|
* The attributes that should be cast to native types.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $casts = [
|
|
'sub_items' => 'array',
|
|
'sub_items_data' => 'array'
|
|
];
|
|
|
|
public function subitem()
|
|
{
|
|
return $this->belongsTo('App\Models\InfoItem', 'sub_item', 'sub_item');
|
|
}
|
|
|
|
public function user()
|
|
{
|
|
return $this->belongsTo('App\Models\User');
|
|
}
|
|
|
|
/**
|
|
* Get all of the project's files.
|
|
*/
|
|
public function files()
|
|
{
|
|
return $this->morphMany('App\Models\ProjectFile', 'project_fileable');
|
|
}
|
|
|
|
public function edarat()
|
|
{
|
|
return $this->morphTo();
|
|
}
|
|
|
|
public function observedItem()
|
|
{
|
|
return $this->hasOne(ObservedItem::class);
|
|
}
|
|
|
|
public static function store(User $user, array $attributes, UploadedFile $before_image = null, UploadedFile $after_image = null, int $observed_item_id = null)
|
|
{
|
|
try {
|
|
$road_item = \DB::transaction(function () use ($user, $attributes, $before_image, $after_image, $observed_item_id) {
|
|
// dd($attributes['cmms_machine_id'],$attributes['cmms_machine_code']);
|
|
$road_item = $user->roadItemsProjects()->create([
|
|
'start_lat' => $attributes['start_lat'],
|
|
'start_lng' => $attributes['start_lng'],
|
|
'end_lat' => $attributes['end_lat'],
|
|
'end_lng' => $attributes['end_lng'],
|
|
// 'project_distance' => $attributes['project_distance'],
|
|
'item' => $attributes['item'],
|
|
'item_fa' => $attributes['item_fa'],
|
|
'sub_item' => $attributes['sub_item'],
|
|
'sub_item_fa' => $attributes['sub_item_fa'],
|
|
'sub_item_data' => $attributes['sub_item_data'],
|
|
'province_id' => $attributes['province_id'],
|
|
'province_fa' => $attributes['province_fa'],
|
|
'city_id' => $attributes['city_id'],
|
|
'city_fa' => $attributes['city_fa'],
|
|
'user_name' => $attributes['user_name'],
|
|
'start_way_id' => $attributes['start_way_id'],
|
|
'end_way_id' => $attributes['end_way_id'],
|
|
'unit_fa' => $attributes['unit_fa'],
|
|
'created_at_fa' => $attributes['created_at_fa'],
|
|
'info_id' => $attributes['info_id'],
|
|
'status' => $attributes['status'],
|
|
'status_fa' => $attributes['status_fa'],
|
|
'edarat_id' => $attributes['edarat_id'],
|
|
'edarat_name' => $attributes['edarat_name'],
|
|
'edarat_type' => $attributes['edarat_type'],
|
|
'activity_date' => $attributes['activity_date'],
|
|
'activity_time' => $attributes['activity_time'],
|
|
'activity_date_time' => $attributes['activity_date']." ".$attributes['activity_time'],
|
|
'is_new' => 1,
|
|
'cmms_machine_id' => $attributes['cmms_machine_id'],
|
|
'cmms_machine_code' => $attributes['cmms_machine_code'],
|
|
]);
|
|
|
|
// if ($info_item->needs_image) {
|
|
if ($after_image) {
|
|
$after = $after_image->store('road_items_projects_new/after', 'public');
|
|
$road_item->files()->create(['path' => $after]);
|
|
$urlAfter = "/var/www/rms/public/storage/{$after}";
|
|
// \App\Helpers\Compress::resize($urlAfter);
|
|
}
|
|
if ($before_image) {
|
|
$before = $before_image->store('/road_items_projects_new/before', 'public');
|
|
$road_item->files()->create(['path' => $before]);
|
|
$urlBefore = "/var/www/rms/public/storage/{$before}";
|
|
// \App\Helpers\Compress::resize($urlBefore);
|
|
}
|
|
// }
|
|
|
|
// if has observed item save project
|
|
if ($observed_item_id) {
|
|
if (ObservedItem::where('id', $observed_item_id)->whereNotNull('road_item_id')->exists()) {
|
|
return -1;
|
|
}
|
|
|
|
ObservedItem::where('id', $observed_item_id)
|
|
->update([
|
|
'road_item_id' => $road_item->id
|
|
]);
|
|
}
|
|
|
|
return 1;
|
|
});
|
|
|
|
return $road_item;
|
|
} catch (\Throwable $th) {
|
|
throw $th;
|
|
}
|
|
}
|
|
}
|