Viewing file: Api.php (5.89 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Controllers;
use App\Libraries\Provider;
class Api extends BaseController { public function getProviderCategories($provider) { if (!user()) { return redirect()->to('/login'); }
$api = new Provider($provider); $key = "categories.$provider.json"; if (!$categories = cache($key)) { $categories = json_encode($api->getCategories()); cache()->save($key, $categories, 60 * 60 * 24); } return $this->response->setJSON(json_decode($categories)); } public function getProviderServices($provider, $categoryId) { if (!user()) { return redirect()->to('/login'); } $api = new Provider($provider); $key = "services.$provider.$categoryId.json"; if (!$services = cache($key)) { $services = json_encode($api->getServices($categoryId)); cache()->save($key, $services, 60 * 60 * 24); } return $this->response->setJSON(json_decode($services)); } public function getProviderServiceDetails($provider, $category, $serviceId) { if (!user()) { return redirect()->to('/login'); } $api = new Provider($provider); $key = "serviceDetails.$provider.$category.$serviceId.json"; if (!$serviceDetails = cache($key)) { $serviceDetails = json_encode($api->getServiceDetails($category, $serviceId)); cache()->save($key, $serviceDetails, 60 * 60 * 24); } return $this->response->setJSON(json_decode($serviceDetails)); } public function getServices($categoryId) { if (!user()) { return redirect()->to('/login'); } $services = db('services')->select('services.*, categories.name as categoryName, categories.icon, categories.id as categoryId')->where('category', $categoryId)->join('categories', 'services.category = categories.id')->get()->getResultArray(); foreach ($services as $index => $service) { unset($services[$index]['providerCategory']); unset($services[$index]['service']); } return $this->response->setJSON($services); } public function getService($serviceId) { if (!user()) { return redirect()->to('/login'); } $service = db('services')->where('id', $serviceId)->get()->getResultArray()[0]; unset($service['providerCategory']); unset($service['service']);
return $this->response->setJSON($service); } public function getNumber($serviceId) { if (!user()) { return redirect()->to('/login'); } $service = db('services')->where('id', $serviceId)->get()->getResultArray()[0]; $service['price'] = floatval($service['price']); if (!$service) { return $this->response->setJSON([ 'type' => 'error', 'message' => 'Servis bulunamadı.' ]); } if ($service['price'] == 0 || $service['price'] < 0) { return $this->response->setJSON([ 'type' => 'error', 'message' => 'Bu ülke teknik sorunlar nedeniyle satışa kapalıdır.' ]); } if ((user()['balance'] - $service['price']) < 0) { return $this->response->setJSON([ 'type' => 'error', 'message' => 'Bakiyeniz yeterli değil.' ]); } $api = new Provider($service['provider']); $order = $api->getNumber($service['providerCategory'], $service['service']); if (!$order['success']) { file_put_contents("errors/getNumber.$serviceId." . uniqid() . '.json', json_encode($order)); return $this->response->setJSON([ 'type' => 'error', 'message' => 'Numara satın alınırken bir hata oluştu.' ]); }
db('users')->where('id', user()['id'])->update([ 'balance' => floatval(user()['balance']) - $service['price'] ]);
db('numbers')->insert([ 'number' => $order['number'], 'number_id' => $order['number_id'], 'service' => $serviceId, 'provider' => $service['provider'], 'user' => user()['id'], 'cost' => $service['price'], 'status' => 0, 'created_at' => time() ]);
return $this->response->setJSON([ 'type' => 'success', 'message' => 'Satın alma işlemi başarılı.' ]); } public function cancelNumber($numberId) { if (!user()) { return redirect()->to('/login'); } $number = db('numbers')->where('id', $numberId)->get()->getResultArray()[0];
if (!$number) { return $this->response->setJSON([ 'type' => 'error', 'message' => 'Sipariş bulunamadı.' ]); } if ($number['status'] != '0') { return $this->response->setJSON([ 'type' => 'error', 'message' => 'Sipariş aktif değil.' ]); }
$api = new Provider($number['provider']); $process = $api->cancelNumber($number['number_id']);
if (!$process['success']) { file_put_contents("errors/cancelNumber.$numberId." . uniqid() . '.json', json_encode($process)); return $this->response->setJSON([ 'type' => 'error', 'message' => 'İptal edilirken bir hata oluştu.' ]); } db('users')->where('id', user()['id'])->update([ 'balance' => floatval(user()['balance']) + $number['cost'] ]); db('numbers')->where('id', $numberId)->update([ 'status' => -1 ]); return $this->response->setJSON([ 'type' => 'success', 'message' => 'İptal edildi.' ]); } }
|