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/www/ezwork/app/Models/DocumentPartServiceBids.php
<?php

/**
 * DocumentPartServiceBidsModel 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;
use App\Models\UserContract;
use App\Models\Document;

/**
 * DocumentPartServiceBidsModel class
 *
 * The class manage Document Part Service Bids related queries
 *
 * @category DocumentPartServiceBidsModel
 * @package  Ez
 * @author   Imenso Software <admin@imensosoftware.com>
 * @license  http://imensosoftware/license.php GNU Public License
 * @link     http://imensosoftware.com/recipes
 */

class DocumentPartServiceBids extends Model
{

    public $table = 'bids';

    public $fillable = [
        'document_part_service_id',
        'user_id',
        'bid_time',
        'bid_datetime',
    ];

    public $timestamps = false;


    /**
     * GetDocumentPartServiceBids function gets the services of parts of specified document
     * and return the document service list .
     *
     * @param  array request
     * @return \App\Models\DocumentPartServiceBids
     */
    public static function getDocumentPartServiceBids($request)
    {
        $documentPartServiceBids = self::join(
            'document_part_services',
            'document_part_services.id',
            '=',
            'bids.document_part_service_id'
        )
        ->join(
            'document_parts',
            'document_parts.id',
            '=',
            'document_part_services.document_part_id'
        )
        ->join(
            'users',
            'users.id',
            '=',
            'bids.user_id'
        )
        ->select(
            'bids.*',
            'document_part_services.minutes',
            'users.name'
        );
        if ($request->document_id) {
            $document = Document::getDocument($request->document_id);
            $documentPartServiceBids = $documentPartServiceBids->where(
                'document_parts.document_id',
                $request->document_id
            );
        }
        $documentPartServiceBids = $documentPartServiceBids->get();
        foreach ($documentPartServiceBids as $key => $value) {
            $result = UserContract::select('rating')
                ->where('user_id',$value->user_id)
                ->where('from_language_id',$document->from_language_id)
                ->where('to_language_id',$document->to_language_id)->first();
            $timeDifference = $value->minutes - $value->bid_time;
            if(intval($timeDifference / 60))
                $time = sprintf("%+d",intval($timeDifference / 60)).'.'.intval($timeDifference % 60).' hr';
            else
                $time = sprintf("%+d",intval($timeDifference % 60)).' min';
            $rating = 0;
            if($result)
                $rating = $result->rating;
            $documentPartServiceBids[$key]['name'] = $value->name.' ('.$rating.') '.$time;
        }
        return $documentPartServiceBids;
    }
    //  end getDocumentPartServiceBids()

}
//  end class