<?php
namespace App\Lib;

use Illuminate\Support\Facades\Crypt;
use DB;

class Lakuemas_tx {
    public function get_detail($id_tx) 
    {
        $field = ['*', 'transaksi.code as tx_code', 'transaksi.created_at as tgl_tx'];
        return DB::table('transaksi')
            ->join('tabungan', 'tabungan.id', '=', 'transaksi.id_tabungan')
            ->join('tabungan_transaksi', 'tabungan_transaksi.id_transaksi', '=', 'transaksi.id')
            ->join('customer', 'customer.id', '=', 'tabungan.id_customer')
            ->where('transaksi.id', $id_tx)
            ->first($field);
    }

    public function update_tx_status($id_user, $id_tx, $status) 
    {
        $arr_tx = [
            'status' => $status,
            'date_approved' => now(),
            'updated_at' => now()
        ];
        DB::table('transaksi')->where('id', $id_tx)->update($arr_tx);

        $arr_log = [
            'act' => 'update',
            'id_transaksi' => $id_tx,
            'content' => json_encode($arr_tx),
            'id_users' => $id_user,
            'created_at' => now()
        ];
        DB::table('transaksi_log')->insertGetId($arr_log);
    }

    public function update_tx_status_jual($id_user, $id_tx, $status) 
    {
        $arr_tx = [
            'status' => $status,            
            'updated_at' => now()
        ];
        DB::table('transaksi')->where('id', $id_tx)->update($arr_tx);

        $arr_log = [
            'act' => 'update',
            'id_transaksi' => $id_tx,
            'content' => json_encode($arr_tx),
            'id_users' => $id_user,
            'created_at' => now()
        ];
        DB::table('transaksi_log')->insertGetId($arr_log);
    }

    public function update_saldo_akhir_tabungan_tx($id_user, $id_tx, $saldo_akhir) 
    {
        $arr_tx = [
            'saldo_akhir' => $saldo_akhir,
            'updated_at' => now()
        ];
        DB::table('tabungan_transaksi')->where('id_transaksi', $id_tx)->update($arr_tx);

        $arr_log = [
            'act' => 'update',
            'id_tabungan_transaksi' => $id_tx,
            'content' => json_encode($arr_tx),
            'id_users' => $id_user,
            'created_at' => now()
        ];
        DB::table('tabungan_transaksi_log')->insertGetId($arr_log);
    }

    public function generate_txcode() 
    {
        do {
            $rand_num = 'LE' . rand(100000000, 599999999);
            $total_data = DB::table('transaksi')->where('code', $rand_num)->count();
        }
        while ($total_data != 0);
        return $rand_num;
    }

    public function create_tx_lakuemas($code, $id_customer=NULL, $id_lakuemas, $type, $status, $id_sponsor=NULL, $id_user)
    {
        $arr_tx = [
            'code' => $code,
            'id_customer' => $id_customer,
            'id_tabungan' => $id_lakuemas,
            'id_sponsor' => $id_sponsor,
            'type' => $type,
            'id_user' => $id_user,
            'status' => $status,
            'date_approved' => now(),
            'created_at' => now()
        ];
        $id_tx = DB::table('transaksi')->insertGetId($arr_tx);

        $arr_log = [
            'act' => 'insert',
            'id_transaksi' => $id_tx,
            'content' => json_encode($arr_tx),
            'id_users' => $id_user,
            'created_at' => now()
        ];
        DB::table('transaksi_log')->insertGetId($arr_log);

        return $id_tx;
    }

    public function insert_tabungan_tx($id_tx, $id_tabungan, $credit='', $debet='', $id_pajak='', $harga_beli, $harga_jual, $dana, $pajak_terhitung='', $total_setor='', $id_metode='', $keterangan, $saldo_akhir='', $customer_bank='', $customer_bank_norek='', $customer_bank_namarek='')
    {
        $data = [
            'id_transaksi' => $id_tx,
            'id_tabungan' => $id_tabungan,
            'keterangan' => $keterangan,
            'harga_beli' => $harga_beli,
            'harga_jual' => $harga_jual,
            'jumlah_dana' => $dana,
            'created_at' => now()
        ];
        if(!empty($credit)) $data['credit'] = $credit;
        if(!empty($debet)) $data['debet'] = $debet;
        if(!empty($id_pajak)) $data['id_pajak_beli'] = $id_pajak;
        if(!empty($pajak_terhitung)) $data['pajak_terhitung'] = $pajak_terhitung;
        if(!empty($total_setor)) $data['total_dana_setor'] = $total_setor;
        if(!empty($id_metode)) $data['id_metode_pembayaran'] = $id_metode;
        if(!empty($saldo_akhir)) $data['saldo_akhir'] = $saldo_akhir;
        if(!empty($customer_bank)) $data['customer_bank'] = $customer_bank;
        if(!empty($customer_bank_norek)) $data['customer_bank_nomor_rekening'] = $customer_bank_norek;
        if(!empty($customer_bank_namarek)) $data['customer_bank_nama_rekening'] = $customer_bank_namarek;

        $id_tabtx = DB::table('tabungan_transaksi')->insertGetId($data);

        $data = [
            'act' => 'insert',
            'id_tabungan_transaksi' => $id_tabtx,
            'content' => json_encode($data),
            'id_users' => '0',
            'created_at' => now()
        ];
        DB::table('tabungan_transaksi_log')->insertGetId($data);
    }
}