2026-01-24 14:03:11 +00:00
<? php
namespace App\Http\Controllers\Single ;
use App\DB\Te\TableEngine ;
use App\Http\Controllers\Controller ;
use App\Http\Controllers\Admin\TahesabController ;
use App\Models\Customer ;
use App\Models\Order ;
use App\Models\Price ;
use App\Models\Product ;
use App\Models\User ;
use App\Mail\YourMailableClass ;
use Illuminate\Support\Facades\Mail ;
use App\Models\Withdraw ;
use Illuminate\Http\Request ;
use Rooyesh\Wallet\interfaces\TransactionInterface ;
use Rooyesh\Wallet\interfaces\WalletInterface ;
use Rooyesh\Wallet\models\Transaction ;
use Rooyesh\Wallet\models\Wallet ;
use App\Models\TransactionsAdmin ;
use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException ;
use Illuminate\Support\Facades\Http ;
class SingleOrderController extends Controller
{
public function store ( Request $request )
{
// throw new UnprocessableEntityHttpException('به دلیل نوسانات سفارشات بسته میباشد.');
$data = $request -> all ();
$transactionType = $data [ 'direction' ] == 1 ? "خرید" : "فروش" ;
if ( auth ( 'customer' ) -> id ()) {
$data [ 'customer_id' ] = auth ( 'customer' ) -> id ();
$latestPrice = Price :: latest () -> first ();
$data [ 'all_price' ] = $latestPrice ;
$data [ 'price' ] = $latestPrice -> price ;
$data [ 'price_id' ] = $latestPrice -> id ;
$data [ 'difference' ] = config ( 'fee.cash' );
$data [ 'service_charge_percentage' ] = config ( 'fee.service_charge_percentage' );
$data [ 'pay_at' ] = ( new \DateTime ()) -> format ( 'Y-m-d H:i:s' );
} else if ( auth ( 'user' ) -> id ()) { //admin
$data [ 'service_charge_percentage' ] = 0 ;
}
$data [ 'sts' ] = 2 ;
$data [ 'type' ] = 2 ;
$data [ 'payment_sts' ] = 4 ;
$data [ 'price_original' ] = $data [ 'price' ];
$data [ 'payment_remind' ] = 0 ;
$data [ 'fee' ] = $data [ 'difference' ];
$wallet_interface = new WalletInterface ( $data [ 'customer_id' ], 2 );
$wallet = Wallet :: where ( 'owner' , $data [ 'customer_id' ]) -> whereNull ( 'fund_id' ) -> first ();
$response = [];
// Check if the user wants to transact with a product or non-product (gold)
if ( isset ( $data [ 'product_id' ]) and $data [ 'product' ] = Product :: find ( $data [ 'product_id' ])) {
// Check if the user wants to buy
if ( $data [ 'direction' ] == 1 ) {
$data [ 'service_charge_percentage' ] = ( $data [ 'product' ][ 'percent_fee_buy' ]) * $data [ 'number' ];
$data [ 'difference' ] = $data [ 'fee' ] = $data [ 'product' ][ 'cash_fee_buy' ];
$data [ 'total_price_original' ] = $data [ 'product' ][ 'amount' ] * ( $data [ 'price_original' ] ?? 0 );
// Check if the method is cash
if ( $data [ 'method' ] == "cash" ) {
$response [ 'buy' ] = $this -> processBuyTransactionProduct ( $data , $wallet , $wallet_interface );
} // Check if the method is gold
else if ( $data [ 'method' ] == "gold" ) {
$response [ 'buy' ] = $this -> processBuyTransactionProductByGold ( $data , $wallet , $wallet_interface );
}
} // Check if the user wants to sell
else if ( $data [ 'direction' ] == 2 ) {
$data [ 'service_charge_percentage' ] = ( $data [ 'product' ][ 'percent_fee_sell' ]) * $data [ 'number' ];
$data [ 'difference' ] = $data [ 'fee' ] = $data [ 'product' ][ 'cash_fee_sell' ];
$data [ 'total_price_original' ] = $data [ 'product' ][ 'amount' ] * ( $data [ 'price_original' ] ?? 0 );
// Check if the method is cash
if ( $data [ 'method' ] == "cash" ) {
$response [ 'sell' ] = $this -> processSellTransactionProduct ( $data , $wallet , $wallet_interface );
} // Check if the method is gold
else if ( $data [ 'method' ] == "gold" ) {
$response [ 'sell' ] = $this -> processSellTransactionProductByGold ( $data , $wallet , $wallet_interface );
}
}
} else {
// Calculate total price and fee for non-product (gold) transaction
$data [ 'total_price_original' ] = $data [ 'amount' ] * ( $data [ 'price_original' ] ?? 0 );
$data [ 'total_fee' ] = $data [ 'amount' ] * $data [ 'difference' ];
$data [ 'product' ] = Product :: find ( 13 );
// Check if the user wants to buy
if ( $data [ 'direction' ] == 1 ) {
if ( ! $data [ 'product' ][ 'open_buy' ]) {
throw new UnprocessableEntityHttpException ( 'خرید این محصول در این لحظه مقدور نمیباشد' );
}
$response [ 'buy' ] = $this -> processBuyTransaction ( $data , $wallet , $wallet_interface );
} // Check if the user wants to sell
else if ( $data [ 'direction' ] == 2 ) {
if ( ! $data [ 'product' ][ 'open_sell' ]) {
throw new UnprocessableEntityHttpException ( 'خرید این محصول در این لحظه مقدور نمیباشد' );
}
$response [ 'sell' ] = $this -> processSellTransaction ( $data , $wallet , $wallet_interface );
}
}
2026-02-08 08:02:11 +00:00
try {
$tahesab = new TahesabController ();
$data [ 'tahesab' ] = $tahesab -> storeTrade ( $data );
} catch ( \Exception $e ){
return response ( $e -> getMessage (), 500 );
}
2026-01-24 14:03:11 +00:00
// $response['reward'] = $this->give_order_reward($data, $wallet, $wallet_interface);
$response [ 'Notifications' ] = $this -> sendTransactionNotifications ( $data , $transactionType );
return response () -> json ([ $response , $data ]);
}
private function processBuyTransaction ( & $data , $wallet , $wallet_interface )
{
$response = [];
$data [ 'price' ] += $data [ 'difference' ];
$data [ 'total_price' ] = $data [ 'amount' ] * $data [ 'price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
$data [ 'service_charge' ] = $data [ 'service_charge_percentage' ] * $data [ 'amount' ];
$data [ 'service_charge_price' ] = $data [ 'service_charge' ] * $data [ 'price_original' ];
$data [ 'amount' ] -= $data [ 'service_charge' ];
if ( $wallet -> cash < $data [ 'payment_amount' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی شما کمتر از میزان سفارش است' );
}
$data [ 'order' ] = $order = Order :: create ( $data );
new TransactionInterface ( $wallet_interface , [
"cash" => $data [ 'payment_amount' ],
"gold" => $data [ 'amount' ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'start_at' => now (),
], 1 , true , false );
$response [ '1' ] = 2 ;
//send to liman
if ( $this -> Config ( 'do_send_liman' ) == "true" ) {
$payload = [
'amount' => " $order->amount " ,
'description' => $this -> Config ( 'name_fa' ) . " - " . auth ( 'customer' ) -> user () -> name ,
'ref_id' => $order -> id ,
'direction' => 1 ,
'product_id' => 2
];
return $response = Http :: withToken ( $this -> Config ( 'liman_token' ))
-> post ( "https://limangold.ir/kernel/customer/order" , $payload ) -> json ();
$order -> total_price_liman = $response [ "payment_amount" ];
$order -> save ();
}
return $response ;
}
private function processBuyTransactionProduct ( & $data , $wallet , $wallet_interface )
{
$data [ 'price' ] += $data [ 'difference' ];
$data [ 'amount' ] = $data [ 'number' ] * $data [ 'product' ][ 'amount' ];
$data [ 'total_amount' ] = $data [ 'amount' ] + ( $data [ 'product' ][ 'percent_fee_buy' ] * $data [ 'amount' ]);
$data [ 'total_price' ] = $data [ 'total_amount' ] * $data [ 'price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
$data [ 'service_charge' ] = ( $data [ 'product' ][ 'percent_fee_buy' ] * $data [ 'amount' ]);
$data [ 'service_charge_price' ] = $data [ 'service_charge' ] * $data [ 'price_original' ];
$data [ 'wallet' ] = $wallet ;
if ( $wallet -> cash < $data [ 'payment_amount' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی شما کمتر از میزان سفارش است' );
}
if ( ! $data [ 'product' ][ 'open_buy' ]) {
throw new UnprocessableEntityHttpException ( 'خرید این محصول در این لحظه مقدور نمیباشد' );
}
$data [ 'order' ] = $order = Order :: create ( $data );
$data [ 'transaction' ][] = new TransactionInterface ( $wallet_interface , $_inp = [
"number" => $data [ 'number' ],
"cash" => $data [ 'total_price' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'title' => "برداشت وجه نقد"
], 12 , false , false );
$wallet_interface_product = new WalletInterface ( auth ( 'customer' ) -> id (), auth ( 'customer' ) -> user () -> type , null , $data [ "product_id" ]);
$wallet_interface_product -> wallet -> gold = intval ( $wallet_interface_product -> wallet -> gold );
$wallet_interface_product -> wallet -> save ();
new TransactionInterface ( $wallet_interface_product , [
"gold" => $data [ 'number' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'start_at' => now (),
], 1 , true , false );
}
private function processBuyTransactionProductByGold ( & $data , $wallet , $wallet_interface )
{
$data [ 'price' ] += $data [ 'difference' ];
$data [ 'amount' ] = $data [ 'number' ] * $data [ 'product' ][ 'amount' ];
$data [ 'total_amount' ] = $data [ 'amount' ] + ( $data [ 'product' ][ 'percent_fee_buy' ] * $data [ 'amount' ]);
$data [ 'total_price' ] = $data [ 'total_amount' ] * $data [ 'price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
$data [ 'service_charge' ] = ( $data [ 'product' ][ 'percent_fee_buy' ] * $data [ 'amount' ]);
$data [ 'total_fee' ] = 0 ;
$data [ 'service_charge_price' ] = $data [ 'service_charge' ] * $data [ 'price_original' ];
$data [ 'wallet' ] = $wallet ;
if ( $wallet -> gold < $data [ 'total_amount' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی طلایی شما کمتر از میزان سفارش است' );
}
if ( ! $data [ 'product' ][ 'open_buy' ]) {
throw new UnprocessableEntityHttpException ( 'خرید این محصول در این لحظه مقدور نمیباشد' );
}
$data [ 'order' ] = $order = Order :: create ( $data );
$data [ 'transaction' ][] = new TransactionInterface ( $wallet_interface , $_inp = [
"number" => $data [ 'number' ],
"gold" => $data [ 'total_amount' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'title' => "برداشت طلای ابشده"
], 12 , false , true );
$wallet_interface_product = new WalletInterface ( auth ( 'customer' ) -> id (), auth ( 'customer' ) -> user () -> type , null , $data [ "product_id" ]);
$wallet_interface_product -> wallet -> gold = intval ( $wallet_interface_product -> wallet -> gold );
$wallet_interface_product -> wallet -> save ();
new TransactionInterface ( $wallet_interface_product , [
"gold" => $data [ 'number' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'start_at' => now (),
], 1 , true , false );
}
private function processSellTransaction ( & $data , $wallet , $wallet_interface )
{
$response = [];
$data [ 'price' ] -= $data [ 'difference' ];
$data [ 'service_charge' ] = $data [ 'service_charge_percentage' ] * $data [ 'amount' ];
$data [ 'service_charge_price' ] = $data [ 'service_charge' ] * $data [ 'price_original' ];
$data [ 'total_price' ] = $data [ 'amount' ] * $data [ 'price' ] - $data [ 'service_charge_price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
$data [ 'payment_amount' ] -= $data [ 'service_charge_price' ];
if ( $wallet -> gold < $data [ 'amount' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی شما کمتر از میزان سفارش است' );
}
$data [ 'order' ] = $order = Order :: create ( $data );
new TransactionInterface ( $wallet_interface , [
"gold" => $data [ 'amount' ],
"cash" => $data [ 'total_price' ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id
], 2 , false , true );
}
private function processSellTransactionProduct ( & $data , $wallet , $wallet_interface )
{
$data [ 'price' ] -= $data [ 'difference' ];
$data [ 'amount' ] = $data [ 'number' ] * $data [ 'product' ][ 'amount' ];
$data [ 'total_amount' ] = $data [ 'amount' ] - ( $data [ 'product' ][ 'percent_fee_sell' ] * $data [ 'amount' ]) ;
$data [ 'total_price' ] = $data [ 'total_amount' ] * $data [ 'price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
$data [ 'service_charge' ] = ( $data [ 'product' ][ 'percent_fee_sell' ] * $data [ 'amount' ]);
$data [ 'service_charge_price' ] = $data [ 'service_charge' ] * $data [ 'price_original' ];
$wallet_interface_product = new WalletInterface ( auth ( 'customer' ) -> id (), auth ( 'customer' ) -> user () -> type , null , $data [ "product_id" ]);
if ( $wallet_interface_product -> wallet -> gold < $data [ 'number' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی شما کمتر از میزان سفارش است' );
}
if ( ! $data [ 'product' ][ 'open_sell' ]) {
throw new UnprocessableEntityHttpException ( 'فروش این محصول در این لحظه مقدور نمیباشد' );
}
$data [ 'order' ] = $order = Order :: create ( $data );
$wallet_interface_product -> wallet -> gold = intval ( $wallet_interface_product -> wallet -> gold );
$wallet_interface_product -> wallet -> save ();
new TransactionInterface ( $wallet_interface_product , [
"gold" => $data [ 'number' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'start_at' => now (),
], 1 , false , false );
$data [ 'transaction' ][] = new TransactionInterface ( $wallet_interface , $_inp = [
"number" => $data [ 'number' ],
"cash" => $data [ 'total_price' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'title' => "واریز وجه نقد"
], 12 , false , true );
}
private function processSellTransactionProductByGold ( & $data , $wallet , $wallet_interface )
{
$data [ 'price' ] -= $data [ 'difference' ];
$data [ 'amount' ] = $data [ 'number' ] * $data [ 'product' ][ 'amount' ];
$data [ 'total_amount' ] = $data [ 'amount' ] - ( $data [ 'product' ][ 'percent_fee_sell' ] * $data [ 'amount' ]) ;
$data [ 'total_price' ] = $data [ 'total_amount' ] * $data [ 'price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
$data [ 'service_charge' ] = ( $data [ 'product' ][ 'percent_fee_sell' ] * $data [ 'amount' ]);
$data [ 'total_fee' ] = 0 ;
$data [ 'service_charge_price' ] = $data [ 'service_charge' ] * $data [ 'price_original' ];
$wallet_interface_product = new WalletInterface ( auth ( 'customer' ) -> id (), auth ( 'customer' ) -> user () -> type , null , $data [ "product_id" ]);
if ( $wallet_interface_product -> wallet -> gold < $data [ 'number' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی شما کمتر از میزان سفارش است' );
}
if ( ! $data [ 'product' ][ 'open_sell' ]) {
throw new UnprocessableEntityHttpException ( 'فروش این محصول در این لحظه مقدور نمیباشد' );
}
$data [ 'order' ] = $order = Order :: create ( $data );
$data [ 'transaction' ][] = new TransactionInterface ( $wallet_interface , $_inp = [
"number" => $data [ 'number' ],
"gold" => $data [ 'total_amount' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'title' => "واریز طلای ابشده"
], 12 , true , false );
$wallet_interface_product -> wallet -> gold = intval ( $wallet_interface_product -> wallet -> gold );
$wallet_interface_product -> wallet -> save ();
new TransactionInterface ( $wallet_interface_product , [
"gold" => $data [ 'number' ],
"product_id" => $data [ "product_id" ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'start_at' => now (),
], 1 , false , false );
}
private function give_order_reward ( & $data , $wallet , $wallet_interface )
{
$data [ 'aCustomers' ] = [];
$i = 0 ;
$data [ 'aCustomers' ][ $i ] = Customer :: findOrFail ( $data [ 'customer_id' ]);
while ( $data [ 'aCustomers' ][ $i + 1 ] = Customer :: where ( 'referral_id' , $data [ 'aCustomers' ][ $i ] -> referral_to_id ) -> first ()) {
if ( $data [ 'aCustomers' ][ $i + 1 ] -> profit_amount_by_lvl ) {
$levels = json_decode ( str_replace ([ '{' , '}' ], [ '[' , ']' ], $data [ 'aCustomers' ][ $i + 1 ] -> profit_amount_by_lvl ), true );
foreach ( $levels as $level ) {
if ( $level [ 0 ] == $i + 1 ) {
// [$level[1],$data['aCustomers'][$i+1]];
if ( $this -> Config ( 'has_page_earn_money' ) == true ) {
$gift_for_invite = ( $data [ 'order' ][ 'service_charge' ] * $level [ 1 ]) / 100 ;
$profit_receiver = $data [ 'aCustomers' ][ $i + 1 ] -> id ;
$profit_sender = $data [ 'aCustomers' ][ 0 ] -> id ;
$Withdraw = Withdraw :: create ([
'user_id' => $profit_sender ,
'customer_id' => $profit_receiver ,
"cash" => 0 ,
"gold" => $gift_for_invite ,
'sts' => 9 ,
]);
$wallet_interface = new WalletInterface ( $profit_receiver , 2 );
new TransactionInterface ( $wallet_interface , $_inp = [
"cash" => 0 ,
"gold" => $gift_for_invite ,
'expire_at' => now (),
'active' => true ,
'withdraw_id' => $Withdraw -> id ,
'start_at' => now (),
], 9 , true , false );
$transaction = Transaction :: where ( 'customer_id' , $profit_receiver ) -> latest () -> first ();
TransactionsAdmin :: create ([
'customer_id' => $profit_sender ,
'customer_to_id' => $profit_receiver ,
'user_id' => $profit_sender ,
'order_id' => $data [ 'order' ][ 'id' ],
'wallet' => null , // یا مقدار مناسب دیگری
'transaction_id' => $transaction -> id ,
'cash' => 0 ,
'note' => ' سود بابت سفارش' ,
'type' => 1 , // یا مقدار مناسب دیگری
'gold' => $gift_for_invite ,
'balance_cash' => 0 , // یا مقدار مناسب دیگری
'balance_gold' => $gift_for_invite , // مقدار صحیح برای `balance_gold`
'withdraw_id' => $Withdraw -> id ,
]);
}
}
}
}
if ( $i == 100 ) break ;
$i ++ ; // برای جلوگیری از حلقه بینهایت
}
return $data ;
}
private function sendTransactionNotifications ( array $data , string $transactionType )
{
$customer = Customer :: findOrFail ( $data [ 'customer_id' ]);
$companyName = $this -> Config ( 'name_fa' );
$message = "کاربر { $customer -> name } با شماره موبایل { $customer -> mobile } اقدام به $transactionType { $data [ 'product' ][ 'title' ] } به مقدار " .
" { $data [ 'amount' ] } گرم به مبلغ " . number_format ( $data [ 'total_price' ]) .
" ریال کرد. با تشکر، $companyName " ;
User :: where ( 'send_sms' , 1 ) -> get () -> each ( function ( $admin ) use ( $message , $data , $transactionType , $companyName ) {
$this -> send ( $admin -> mobile , $message );
});
$wallet = Wallet :: where ( 'owner' , $data [ 'customer_id' ]) -> whereNull ( 'fund_id' ) -> first ();
// $pricePerGram = $data['total_price'] / $data['amount'];
$customerMessage = " $companyName \n $transactionType آبشده \n گرم: { $data [ 'amount' ] } \n " .
"مبلغ کل: " . number_format ( $data [ 'total_price' ]) . " \n\n " .
"موجودی طلایی: { $wallet -> gold } \n " .
"مانده ریالی: " . number_format ( $wallet -> cash ) . " \n " .
$this -> Config ( 'app_url' );
// ارسال SMS به مشتری
$this -> send ( $customer -> mobile , $customerMessage );
}
public function storeBackUp ( Request $request )
{
$data = $request -> all ();
if ( auth ( 'customer' ) -> id ()) { // متد در پنل کاربر
$data [ 'customer_id' ] = auth ( 'customer' ) -> id ();
$data [ 'price' ] = Price :: orderBy ( 'id' , 'desc' ) -> first () -> price ;
} elseif ( auth ( 'user' ) -> user ()) { // متد در پنل ادمین
$data [ 'customer_id' ] = $request -> customer_id ;
$data [ 'price' ] = $request -> price ;
}
$data [ 'sts' ] = 2 ;
$data [ 'type' ] = 2 ;
$data [ 'payment_sts' ] = 4 ;
$data [ 'price_original' ] = $data [ 'price' ];
$add_sell_price = config ( 'add_sell_price.single' );
$wallet_interface = new WalletInterface ( $data [ 'customer_id' ], 2 );
$wallet = Wallet :: where ( 'owner' , $data [ 'customer_id' ]) -> whereNull ( 'fund_id' ) -> first ();
$data [ 'total_price_original' ] = $data [ 'amount' ] * $data [ 'price_original' ];
$data [ 'payment_remind' ] = 0 ;
$data [ 'fee' ] = $add_sell_price ;
$data [ 'total_fee' ] = $data [ 'amount' ] * $data [ 'fee' ];
if ( $data [ 'direction' ] == 1 ) {
$data [ 'price' ] += $add_sell_price ;
$data [ 'total_price' ] = $data [ 'amount' ] * $data [ 'price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
if ( $wallet -> cash < $data [ 'total_price' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی شما کمتر از میزان سفارش است' );
}
$order = Order :: create ( $data ); //buy
new TransactionInterface ( $wallet_interface , $_inp = [
"cash" => $data [ 'total_price' ],
"gold" => $data [ 'amount' ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id ,
'start_at' => now (),
], 1 , true , false );
} else { //sell
$data [ 'price' ] -= $add_sell_price ;
$data [ 'total_price' ] = $data [ 'amount' ] * $data [ 'price' ];
$data [ 'payment_amount' ] = $data [ 'total_price' ];
if ( $wallet -> gold < $data [ 'amount' ]) {
throw new UnprocessableEntityHttpException ( 'موجودی شما کمتر از میزان سفارش است' );
}
$order = Order :: create ( $data );
new TransactionInterface ( $wallet_interface , $_inp = [
"gold" => $data [ 'amount' ],
"cash" => $data [ 'total_price' ],
'expire_at' => now (),
'active' => true ,
'order_id' => $order -> id
], 2 , false , true );
}
//----------------------------------------------------------------------------sms
// Determine transaction type
$transactionType = ( $data [ 'direction' ] == 1 ) ? "خرید" : "فروش" ;
// User information
$customer = Customer :: where ( "id" , $data [ 'customer_id' ]) -> firstOrFail ();
$userMobile = $customer -> mobile ; // User's mobile number
$userName = $customer -> name ; // User's name
$chargedAmount = $data [ 'total_price' ]; // Total price in Rial
$chargedAmountGold = $data [ 'amount' ]; // Amount of gold
// Company name
$companyName = $this -> Config ( 'name_fa' ); // Company name from configuration
// Constructing the SMS message
$message = "کاربر $userName با شماره موبایل $userMobile اقدام به $transactionType طلا به مقدار " . $chargedAmountGold . " گرم به مبلغ " . number_format ( $chargedAmount ) . " ریال کرد. با تشکر، $companyName " ;
// Getting admin mobile numbers and sending the SMS
User :: where ( 'active' , 1 ) -> get () -> each ( function ( $admin ) use ( $message ) {
$this -> Send ( $admin -> mobile , $message );
});
$Walet = Wallet :: where ( 'owner' , $data [ 'customer_id' ]) -> whereNull ( 'fund_id' ) -> first ();
$companyName = $this -> Config ( 'name_fa' );
$companyurl = $this -> Config ( 'app_url' );
$weight = $data [ 'amount' ];
$totalAmount = $data [ 'total_price' ];
$pricePerGram = $totalAmount / $weight ;
$goldBalance = $Walet -> gold ;
$remainingBalance = $Walet -> cash ;
$message = " $companyName \n " ;
$message .= "خرید آبشده \n " ;
$message .= "گرم: $weight \n " ;
$message .= "قیمت گرم: " . number_format ( $pricePerGram ) . " \n " ;
$message .= "مبلغ کل: " . number_format ( $totalAmount ) . " \n\n " ;
$message .= "موجودی طلایی: $goldBalance \n " ;
$message .= "مانده ریالی: " . number_format ( $remainingBalance ) . " \n " ;
$message .= " $companyurl " . " \n " ;
$this -> Send ( $customer -> mobile , $message );
return response () -> json ( $order );
}
public function table ( Request $request )
{
$records = Order :: where ( 'customer_id' , auth ( 'customer' ) -> id ())
-> where ( 'type' , 2 );
TableEngine :: create ( $records , $request -> all ())
-> initSearch ([])
-> select ([
'*' , Order :: $SELECT_STS_STR
]) -> export ( $records );
return response () -> json ( $records );
}
}