File: /home/imensosw/www/ezwork/app/Models/DocumentPart.php
<?php
/**
* DocumentPartModel 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;
/**
* DocumentPartModel class
*
* The class manage Document Part related queries
*
* @category DocumentPartModel
* @package Ez
* @author Imenso Software <admin@imensosoftware.com>
* @license http://imensosoftware/license.php GNU Public License
* @link http://imensosoftware.com/recipes
*/
class DocumentPart extends Model
{
public $table = "document_parts";
public $fillable = ['document_id','part_id','part_no'];
public $timestamps = false ;
/**
* DocumentServices function gets the document_services that belong to the document_part
* and return it.
*
* @param void
* @return \App\Models\DocumentPart
*/
public function documentServices()
{
return $this->belongsToMany(
'App\Models\DocumentPart',
'document_part_services',
'document_part_id',
'document_service_id'
);
}
/**
* GetDocumentParts function gets the list of parts of specified document and
* return the document part list .
*
* @param array request
* @return \App\Models\DocumentPart
*/
public static function getDocumentParts($request)
{
$documentParts = DocumentPart::
leftJoin('document_segments', 'document_segments.document_part_id', '=', 'document_parts.id')
->select(
"document_parts.*",
DB::raw("CONCAT('Part ', document_parts.part_id) AS part_name"),
//DB::raw("CONCAT('Part ', (@cnt := if(@cnt IS NULL, 0, @cnt) + 1)) AS part_name"),
DB::raw("SUM(IF(document_segments.is_skip=0, document_segments.no_of_words , 0) ) AS word_counts")
);
if ($request->document_id) {
$documentParts = $documentParts->where('document_parts.document_id', $request->document_id);
}
$documentParts = $documentParts->orderBy('document_parts.id', 'ASC')->groupBy('document_parts.id')
->get();
return $documentParts;
}
}