File: /home/imensosw/www/ezwork/app/Models/DocumentService.php
<?php
/**
* DocumentServiceModel class file
*
* PHP Version 7.2
*
* @category Model
* @package Ez
* @author Imenso Software <admin@imensosoftware.com>
* @license http://imensosoftware/license.php GNU Public License
* @link http://imensosoftware.com/recipes
*/
namespace App\Models;
use DB ;
use Illuminate\Database\Eloquent\Model;
/**
* DocumentServiceModel class
*
* The class manage Document Service related queries
*
* @category DocumentServiceModel
* @package Ez
* @author Imenso Software <admin@imensosoftware.com>
* @license http://imensosoftware/license.php GNU Public License
* @link http://imensosoftware.com/recipes
*/
class DocumentService extends Model
{
public $table = "document_services";
public $fillable = ['document_id','service_id'];
public $timestamps = false ;
/**
* DocumentParts gets the list of the parts that belong to the document_service.
*
* @param void
* @return \App\Models\DocumentPart
*/
public function documentParts()
{
return $this->belongsToMany(
'App\Models\DocumentPart',
'document_part_services',
'document_service_id',
'document_part_id'
);
}
/**
* GetDocumentServices function gets the list of document services of specified
* document and return the document service list .
*
* @param array request
* @return \App\Models\DocumentService
*/
public static function getDocumentServices($request)
{
$documentServices = DocumentService::
join('services', 'services.id', '=', 'document_services.service_id')
->select("document_services.*",'services.service_l','services.service_s');
if ($request->document_id) {
$documentServices = $documentServices->where('document_services.document_id', $request->document_id);
}
$documentServices = $documentServices->orderBy('services.id', 'ASC')->get();
return $documentServices;
}
/**
* GetDocumentServices function gets the list of document services of specified
* document and return the document service list .
*
* @param array request
* @return \App\Models\DocumentService
*/
public static function getCurrentService($documentId)
{
return DocumentPartService::select(
'services.id','services.service_s','services.service_l',
DB::raw("TIMESTAMPDIFF(SECOND,now(),document_part_services.end_datetime)*1000 as time_remaining")
)
->join('document_services', 'document_services.id', '=', 'document_part_services.document_service_id')
->join('services', 'services.id', '=', 'document_services.service_id')
->where('document_services.document_id', $documentId)
->whereNull('document_part_services.output_file')
->whereNotNull('document_part_services.end_datetime')
->orderBy('document_services.service_id', 'ASC')
->orderBy('document_part_services.end_datetime', 'ASC')
->first();
}
}