config("services.$site.key"), 'action' => 'services']); } public static function smmkings($service_id, $id) { $services = Http::post(config("services.smmkings.link"), ['key' => config("services.smmkings.key"), 'action' => 'services'])->json(); foreach ($services as $service) { if ($service['service'] == $id){ $s = new Supplier; $s->service_id = $service_id; $s->supplier = 'smmkings'; $s->supplier_id = (int) $service['service']; $s->supplier_name = $service['name']; $s->min = (int) $service['min']; $s->max = (int) $service['max']; $s->cost = $service['rate'] * 100; $s->save(); return $s; } } } public static function smmworld($service_id, $id) { $services = Http::post(config("services.smmworld.link"), ['key' => config("services.smmworld.key"), 'action' => 'services']); $services = $services['services']; foreach ($services as $service) { if ($service['id'] == $id){ $s = new Supplier; $s->service_id = $service_id; $s->supplier = 'smmworld'; $s->supplier_id = $service['id']; $s->supplier_name = $service['name']; $s->min = $service['min']; $s->max = $service['max']; $s->cost = $service['price_per_k'] * 100; $s->save(); return $s; } } } //Fulfills an order with only the primary supplier of it's service public static function fulfill($order) { if (gettype($order) == 'integer') { $order = Order::find($order); } return Supply::orderPrimary($order); } //Fulfills an order with the first available supplier it finds. It returns //false if none could be found and the refreshed order model otherwise. public static function fulfillWithAny($order) { if (gettype($order) == 'integer') { $order = Order::find($order); } if (Supply::orderPrimary($order)) { return $order->refresh(); }; $suppliers = $order->service->suppliers; foreach ($suppliers as $s) { switch ($s->supplier) { case 'smmkings': if (Supply::orderSmmkings($order, $s)){ return $order->refresh(); } break; case 'smmworld': if (Supply::orderSmmkings($order, $s)){ return $order->refresh(); } break; } } return false; } //Fulfills an order with only the primary supplier of it's service public static function orderPrimary($order) { if (gettype($order) == 'integer') { $order = Order::find($order); } $primary = $order->service->primary; switch ($primary->supplier) { case 'smmkings': return Supply::orderSmmkings($order, $primary); break; case 'smmworld': return Supply::orderSmmworld($order, $primary); break; } } //Should check that cost is not greater than price and store order //information if completed. return false/NULL if an error occured public static function orderSmmkings($order, $supplier) { if ($supplier->supplier != 'smmkings') { return false; } //Check that the order is not already pending. Probably by calling //another function. //Check supplier cost here to make sure the request is a good idea $response = Http::post(config("services.smmkings.link"), ['key' => config("services.smmkings.key"), 'action' => 'add', 'service' => $supplier->supplier_id, 'link' => $order->url, 'quantity' => $order->quantity])->json(); //This should log the error for later reporting if (array_key_exists('error', $response)){ return; } //store order information here $status = Http::post(config("services.smmkings.link"), ['key' => config("services.smmkings.key"), 'action' => 'status', 'order' => $response['order']])->json(); return $response; } public static function orderSmmworld($order, $supplier) { if ($supplier->supplier != 'smmworld') { return false; } $response = Http::post(config("services.smmworld.link"), ['key' => config("services.smmworld.key"), 'action' => 'add', 'service' => $supplier->supplier_id, 'link' => $order->url, 'quantity' => $order->quantity])->json(); return $response; } }