<?php
namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;

use App\Lib\Lakuemas;
use App\Lib\Lakuemas_tx;
use App\Libs\Average_sell_price_lib;
use App\Jobs\SendEmailApproveBeliJob;

class Notification_beliController extends Controller
{
    private function validate_input($request)
    {
        $array_validate = [
            'id' => 'required',
            'pin' => 'required',
            'status' => 'required'
        ];
        $request->validate($array_validate);
    }

    /**
     * Action approve / reject notifikasi pembelian
     * Status 1 = Approve, Status 2 = Reject
     */
    public function doAction(Request $request) 
    {
        $this->validate_input($request);

        $id = request('id');
        $pin = request('pin');
        $status = request('status');
        $data_user = Auth::user();

        if($data_user->pin != $pin) {
            $return["message"] = "PIN tidak Sesuai";
            $return["errors"]["pin"][0] = "PIN tidak sesuai";
            return response()->json($return, 422);
        }
        else {
            $class_lakuemas = new Lakuemas;
            $class_lakuemas_tx = new Lakuemas_tx;

            if($status == '1') {                

                $data_tx = $class_lakuemas_tx->get_detail($id);

                $saldo_akhir = bcadd($data_tx->saldo, $data_tx->credit, 4);

                $class_lakuemas_tx->update_tx_status($data_user->id, $id, '1');
                $class_lakuemas_tx->update_saldo_akhir_tabungan_tx($data_user->id, $id, $saldo_akhir);
                $class_lakuemas->update_saldo($data_user->id, $data_tx->id_tabungan, $saldo_akhir);
                $this->update_average_sell_price($data_tx->id_tabungan, $id);

                dispatch(new SendEmailApproveBeliJob($data_tx->email, $data_tx->name, $data_tx->nomor_rekening, $data_tx->tx_code, $data_tx->credit));

                $return['success'] = '1';
                return response()->json($return, 200);
            }
            else if($status == '2') {
                $class_lakuemas_tx->update_tx_status($data_user->id, $id, '2');

                $return['success'] = '1';
                return response()->json($return, 200);
            }

            $return["message"] = "Unknown Error";
            $return["errors"]["error"][0] = "Unknown error";
            return response()->json($return, 422);
        }
    }

    private function update_average_sell_price($id_tabungan, $id_transaksi){
        (new Average_sell_price_lib)->update($id_tabungan, $id_transaksi);
    }
}