File: /home/imensosw/.trash/app/Models/DocumentPartService.php
<?php
/**
* DocumentPartServiceModel 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 Illuminate\Support\Facades\Auth;
use DB;
use Illuminate\Database\Eloquent\Model;
use App\Models\UserContract;
use App\Models\Document;
/**
* DocumentPartServiceModel class
*
* The class manage Document Part Service related queries
*
* @category DocumentPartServiceModel
* @package Ez
* @author Imenso Software <admin@imensosoftware.com>
* @license http://imensosoftware/license.php GNU Public License
* @link http://imensosoftware.com/recipes
*/
class DocumentPartService extends Model
{
public $table = 'document_part_services';
public $fillable = [
'document_part_id',
'document_service_id',
'delivery_datetime',
'minutes',
];
public $timestamps = false;
/**
* GetDocumentPartServices function gets the services of parts of specified document
* and return the document service list .
*
* @param array request
* @return \App\Models\DocumentPartService
*/
public static function getDocumentPartServices($request)
{
$documentPartServices = self::join(
'document_services',
'document_services.id',
'=',
'document_part_services.document_service_id'
)->join(
'services',
'services.id',
'=',
'document_services.service_id'
)->leftjoin(
'users',
'users.id',
'=',
'document_part_services.assigned_to_id'
)->select(
'document_part_services.*',
'document_services.service_id',
'users.name',
'services.service_l as service_name',
DB::raw(
"DATE_FORMAT(document_part_services.end_datetime,'%a, %D %b, %l %p')
as part_deadline"
)
// DB::raw(
// "DATE_FORMAT(document_part_services.delivery_datetime,'%Y-%m-%dT%TZ')
// as delivery_datetime_dmy,
// if( document_part_services.delivery_datetime ,
// DATE_FORMAT(document_part_services.delivery_datetime,'%d-%m-%Y %h:%i %p') ,'')
// as delivery_dmy"
// )
);
if ($request->document_id) {
$document = Document::getDocument($request->document_id);
$documentPartServices = $documentPartServices->where(
'document_services.document_id',
$request->document_id
);
}
$documentPartServices = $documentPartServices->get();
foreach ($documentPartServices as $key => $value) {
$result = UserContract::select('rating')
->where('user_id',$value->assigned_to_id)
->where('from_language_id',$document->from_language_id)
->where('to_language_id',$document->to_language_id)->first();
$rating = null;
if($result)
$rating = $result->rating;
$documentPartServices[$key]['rating'] = $rating;
}
return $documentPartServices;
}
// end getDocumentPartServices()
/**
* getAssignmentFeeds function gets the assignment feeds of specified assignment
* and return the assignment feeds list .
*
* @param array request
* @return \App\Models\DocumentPartService
*/
public static function getAssignmentFeeds($request)
{
$documentPartServices = self::join(
'document_services','document_services.id','=','document_part_services.document_service_id')
->join('services','services.id','=','document_services.service_id')
->join('document_parts','document_parts.id','=','document_part_services.document_part_id')
->join('documents','documents.id','=','document_services.document_id')
->join('document_contexts','document_contexts.id','=','documents.context_id')
->join('document_segments','document_segments.document_part_id','=','document_parts.id')
->join("user_contracts",function($join){
$join->on("user_contracts.from_language_id","=","documents.from_language_id")
->on("user_contracts.to_language_id","=","documents.to_language_id")
->where("user_contracts.user_id",Auth::user()->id);
})
->select(
'document_part_services.*',
'document_parts.document_id',
'document_parts.part_id',
'document_contexts.context',
'document_services.service_id',
'services.service_s',
DB::raw("
SUM(document_segments.no_of_words) as no_of_words
"),
DB::raw("
SUM(document_parts.part_id) as no_of_parts
")
);
$documentPartServices = $documentPartServices->where( 'documents.document_status_id', 3 );
$documentPartServices = $documentPartServices->groupBy('document_part_services.id')->get();
return $documentPartServices;
}
// end getAssignmentFeeds()
}
// end class