<?php

namespace App\Http\Controllers\Reseller;


use App\DataTables\ClientSellingPriceDataTable;
use App\Http\Controllers\Controller;
use App\SellingPrice;
use App\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;

class SettingsController extends Controller
{
    // client selling price list
    public function client_selling_price_list(ClientSellingPriceDataTable $dataTable)
    {
        return $dataTable->render('reseller.settings.selling_price_list', ['dataTable' => $dataTable]);
    }

    // client selling price edit
    public function client_selling_price_edit($user, Request $request)
    {
        if (strtoupper($request->method()) == 'POST')
        {
            $user       = \Auth::user();
            $data       = $request->request;
            $record     = \App\SellingPrice::where('user_id', $data->get('user'))->where('country_id', $data->get('country'))->first();
            $record     = $record != null ? $record : new SellingPrice();
            $sdata      = [];
            $networks   = $data->get('network');

            $cost       = \App\CostPrice::where('user_id', $user->id)->where('country_id', $data->get('country'))->first();
            if ($cost != null)
            {
                // validation
                if ($data->get('price') >= $cost->price)
                {
                    foreach ($networks as $ntwk)
                        $sdata[] = ['network' => $ntwk, 'price' => $data->get('price')];

                    $record->country_id = $data->get('country');
                    $record->user_id    = $data->get('user');
                    $record->data       = \GuzzleHttp\json_encode($sdata);
                    $record->price      = $data->get('price');
                    $record->save();
                }
            }

            return redirect()->route('reseller.setting.selling.price.list');
        }
        else
        {
            $ctx    = \App\Country::get();
            $record = DB::table('selling_prices')->where('user_id', '=', $user)->first();

            $networks = [];

            if ($record != null)
            {
                $data = json_decode($record->data, true);

                foreach ($data as $dt)
                {
                    if (array_key_exists('network', $dt))
                        if (!in_array($dt['network'], $networks))
                            $networks[] = $dt['network'];
                }
            }

            if (count($record) <= 0) $record = (object) ['price' => 0.00, 'user_id' => $user, 'country_id' => null];

            return view('reseller.settings.selling_price_edit', [
                'data' => $record,
                'countries' => $ctx,
                'networks' => json_encode($networks)
            ]);
        }
    }

    // find networks by country
    public function get_networks_by_country($country)
    {
        $data = [];

        if ($country != null)
        {
            $data = DB::table('networks')->where('country_id', '=', $country)->orderby('nice_name', 'asc')->get();
        }

        $response = ['data' => $data];
        return response($response)->header('Content-Type', 'text/json');
    }

    // operational setting
    public function operational_setting(Request $request)
    {
        $user       = Auth::user();
        $setting    = \App\Setting::where('user_id', $user->id)->first();

        if (strtoupper($request->method()) == 'POST')
        {
            $data       = $request->request;
            $setting    = \App\Setting::where('user_id', $user->id)->first();
            $setting    = $setting != null ? $setting : new Setting();

            if ($data != null)
            {
                $setting->user_id       = $user->id;
                $setting->electricity   = $data->get('electricity');
                $setting->water         = $data->get('water');
                $setting->nhil          = $data->get('nhil');
                $setting->vat           = $data->get('vat');
                $setting->others        = $data->get('others');

                $setting->save();
                $request->session()->flash('success', 'The data have been successfully saved!');
            }
        }
        else
        {
            if ($setting == null)
            {
                $setting = new Setting();
                $setting->user_id       = $user->id;
                $setting->electricity   = 0.00;
                $setting->water         = 0.00;
                $setting->nhil          = 0.00;
                $setting->vat           = 0.00;
                $setting->others        = 0.00;
            }
        }

        return view('reseller.settings.operational_setting', [
            'data' => $setting
        ]);
    }
}