<?php
namespace App\Http\Controllers\Api\Payments;
use App\Http\Requests\OrderRequest;
use App\Models\Order;
use App\Models\Product;
use App\Models\Server;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Maksa988\UnitPay\UnitPay;
use \Thedudeguy\Rcon;
class UnitPayController extends Controller
{
public static function searchOrder(Request $request, $orderId)
{
$order = Order::join('products', 'products.id', '=','orders.product_id')
->join('servers', 'products.server_id', '=', 'servers.id')
->where(
[
['orders.id', '=', $orderId],
//['orders.server_id', '=', $product->server_id],
['products.surcharge', '=', true],
['orders.paid', '=', false]
])
->select(
[
'orders.product_id',
'products.server_id',
'products.title',
'products.surcharge',
'products.enabled',
'orders.paid',
'orders.cost'
])
->first();
if($order !== null) {
if($order['paid'] == false) {
$order['cost'] = $request->get('params')['orderSum'];
return $order;
}
}
return false;
}
/**
* When paymnet is check, you can paid your order
*
* @param Request $request
* @param $order
* @return bool
*/
public function paidOrder(Request $request, $order)
{
//Get object product
$product = Product::find($order->product_id);
//Get object server
$server = Server::find($order->server_id);
//dd($order);
if( !is_object($product) || !is_object($server) ) return false;
$rcon = new Rcon($server['rcon_ip'], $server['rcon_port'], $server['rcon_password'], 3);
if ($rcon->connect())
{
//Serialise cmd
$cmd = str_replace('%nickname%', $order->nickname, $product['rcon_cmd']);
//Send cmd
$rcon->sendCommand($cmd);
//Update status order
$order->paid = true;
$order->save();
//Status result for unitpay middleware
return true;
}
}
/**
* Start handle process from route
*
* @param Request $request
* @param UnitPay $unitPay
* @return mixed
* @throws \Maksa988\UnitPay\Exceptions\InvalidPaidOrder
* @throws \Maksa988\UnitPay\Exceptions\InvalidSearchOrder
*/
public function handlePayment(Request $request, UnitPay $unitPay)
{
return $unitPay->handle($request);
}
}