Files
wticreatorstudio/Modules/WTIJobBoard/Repositories/JobRequestShipmentsRepository.php
T
2024-05-04 03:38:25 -04:00

88 lines
2.8 KiB
PHP

<?php
namespace Modules\WTIJobBoard\Repositories;
use Carbon\Carbon;
use Modules\WTIJobBoard\Entities\JobRequest;
use Modules\WTIJobBoard\Entities\JobRequestShipment;
use Modules\WTIJobBoard\Entities\JobRequestStatus;
use Modules\WTIJobBoard\Entities\JobRequestTrack;
use Modules\WTIJobBoard\Entities\JobRequestTrackMeta;
use Modules\WTIJobBoard\Repositories\JobRequestsRepository;
class JobRequestShipmentsRepository
{
public function ship($data)
{
$job_request = JobRequest::find($data['job_request_id']);
if ($job_request) {
$shipment = JobRequestShipment::updateOrCreate(
['job_request_id' => $job_request->id],
[
'courier' => $data['courier'],
'tracking_number' => $data['tracking_number']
]
);
$shipped_status = JobRequestStatus::where('name', 'shipped')->first();
$track_exist = JobRequestTrack::where('job_request_id',$job_request->id)->where('status_id',$shipped_status->id)->first();
if(!$track_exist) {
$track = new JobRequestTrack();
$track->job_request_id = $data['job_request_id'];
$track->status_id = $shipped_status->id;
$track->save();
}
$job_request->job_status = 'In Progress';
$job_request->track_package_status = 'Shipped';
$job_request->save();
if($job_request->category->name == 'giveaway'){
$data['id'] = $data['job_request_id'];
$job_request->job_status = 'Completed';
$job_request->save();
(new JobRequestsRepository())->fulfilled($data);
}
return $shipment;
}
return false;
}
public function received($data)
{
$received_status = JobRequestStatus::where('name', 'received')->first();
$track = new JobRequestTrack();
$track->job_request_id = $data['id'];
$track->status_id = $received_status->id;
$track->save();
$meta = new JobRequestTrackMeta();
$meta->track_id = $track->id;
$meta->name = 'received_at';
$meta->value = $data['received_at'];
$meta->save();
$job_request = JobRequest::find($data['id']);
$job_request->job_status = 'In Progress';
$job_request->track_package_status = 'Received';
$job_request->save();
return true;
}
public function receivedUpdate($data)
{
$meta = JobRequestTrackMeta::where('track_id', $data['track_id'])->first();
if($meta){
$meta->value = $data['received_at'];
$meta->update();
return true;
}
return false;
}
}