MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
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