<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;

use App\Models\Supplier;
use App\Models\Order;

class Supply extends Controller
{
	// Accepts a site name, service id, and integer/array of supplier rows to
	// create

	public static function fetch($site) {
		return Http::post(config("services.$site.link"), ['key' =>
			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;
			} 
		}
	}

	public static function fulfill($order) {
		if (gettype($order) == 'integer') {
			$order = Order::find($order);
		}
	
		return Supply::orderPrimary($order);
	}

	public static function fulfillAny($order) {
		if (gettype($order) == 'integer') {
			$order = Order::find($order);
		}
		
		if (Supply::orderPrimary($order)) {

		};
	}

	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;
		}
	}


	public static function orderSmmkings($order, $supplier) {
		if ($supplier->supplier != 'smmkings') {
			return false;
		}

		$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();

		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;
	}


}