Anons79 Mini Shell

Directory : /home/aplikasiposinfo/.trash/app.2/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/.trash/app.2/Http/Controllers/TagihanController.php

<?php

namespace App\Http\Controllers;

use Session;
use Carbon\Carbon;
use Helper\Helper;
use App\Models\Log;
use App\Models\NPA;
use App\Models\User;
use App\Models\Lunas;
use App\Models\Surat;
use App\Mail\Emailing;
use App\Models\Tagihan;
use App\Models\Jabatan;
use App\Models\hariLibur;
use App\Models\Pelanggan;
use App\Models\JenisDenda;
use App\Models\Penetapan;
use App\Models\Pembayaran;
use App\Traits\TraitsDenda;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Mail;
use NumberFormatter;
use Yajra\DataTables\Facades\DataTables;
use Illuminate\Support\Facades\Http;
use App\Traits\TraitsApi;
use Str;

class TagihanController extends Controller
{
    use TraitsDenda,TraitsApi;

    protected $routeName = 'tagihan';
    protected $viewName = 'tagihan';
    protected $title = 'Laporan Pemakaian';

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {

        // return Tagihan::find(11)->status;
        $route = $this->routeName;
        $title = $this->title;
        $datas = Tagihan::with('pelanggan')->where(['pelanggan_id'=>$request->id])->where('status', 1)->get();
        // $tagihans = Tagihan::where('pelanggan_id', Auth::user()->pelanggan->id)->where('status', 1)->orWhere('status', 5)->get();
        $hariLibur = hariLibur::select('tanggal')->get();
        foreach($datas as $tagihan){
            $hlArr = [];
            foreach($hariLibur as $hl){
                array_push($hlArr, $hl->tanggal);
            }
            if($tagihan->pembayaran){
                $this->cekDendaPenetapan(2, $tagihan->pembayaran->tanggal, $tagihan, $hlArr);
            }
        }
        $sektor = Auth::user()->pelanggan;
        return view($this->viewName.'.index',compact('route','title', 'sektor'));
    }

    public function datatable(Request $request)
    {
        
        if(Auth::user()->name != 'Admin'){
            $datas = Tagihan::with('pelanggan')->where(['pelanggan_id'=>$request->sektor]);
        }else if(Auth::user()->name == 'Admin'){
            $datas = Tagihan::with('pelanggan');
        }
        $jenis_denda = JenisDenda::where(['type'=>'Denda Keterlambatan'])->first();
        try {
            //code...
            $datatables = DataTables::of($datas)
            ->addIndexColumn()
            ->editColumn('meter_penggunaan', function($data){
                if($data->meter_penggunaan_awal != null){
                    $penggunaan = $data->meter_penggunaan - $data->meter_penggunaan_awal;
                }else if($data->meter_penggunaan_awal == null){
                    $penggunaan = $data->meter_penggunaan;
                }
                return number_format($penggunaan);
                
            })
            ->editColumn('name',function($data){
                return $data->pelanggan->name;
            })
            ->editColumn('jumlah_pembayaran',function($data){
                $jumlah = $data->jumlah_pembayaran;
                if($data->status == 0){
                    return '<h6 class="text-danger">Menunggu Penetapan</h6>';
                } else {
                    return "Rp. ".number_format($jumlah, 2);
                }
            })
            ->editColumn('tanggal',function($data){
                return $data->tanggal->format('F').'-'.$data->tanggal->format('Y');
            })
            ->editColumn('tanggal_akhir',function($data){
                return date("F", strtotime($data->tanggal_akhir)).'-'.date("Y", strtotime($data->tanggal_akhir));
            })
            ->editColumn('status_pemb', function ($data){
                if ($data->status == 0) {
                    return '<h6 class="text-danger">Menunggu Penetapan</h6>';
                }elseif($data->status == 1 || $data->status == 4 || $data->status == 5 || $data->status == 6){
                    return '<h6 class="text-warning">Penetapan</h6>';
                } elseif($data->status == 3){
                    return '<h6 class="text-warning">Menunggu Konfirmasi</h6>';
                }
                elseif($data->status == 2){
                    return '<h6 class="text-success">Dibayarkan</h6>';
                }
            })->rawColumns(['status_pemb', 'jumlah_pembayaran', 'total_tagihan', 'denda_admin', 'denda_Keterlambatan'])
            ->addColumn('denda_Keterlambatan',function($data){
                if($data->status == 0){
                    return '<h6 class="text-danger">Menunggu Penetapan</h6>';
                } else {
                    return 'Rp.'.number_format($data->denda_harian, 2);
                }
            })
            ->addColumn('total_tagihan',function($data){
                if($data->status == 0){
                    return '<h6 class="text-danger">Menunggu Penetapan</h6>';
                } else {
                    return 'Rp.'.number_format($data->denda_harian + $data->denda_admin + $data->jumlah_pembayaran, 2);
                }
            })
            ->addColumn('denda_admin',function($data){
                if($data->status == 0){
                    return '<h6 class="text-danger">Menunggu Penetapan</h6>';
                } else {
                    return 'Rp.'.number_format($data->denda_admin, 2);
                }
            })
            ->addColumn('pembayaran', function ($data) {
                if($data->status == 1 || $data->status == 5){
                    return view('layouts.includes.table-action-pembayaran', compact('data'));   
                } else {
                    return "-";
                }
            })
            ->addColumn('action', function ($data) {
                $route = 'tagihan';
                $url2 = $data->file_path.''.$data->file_name;
                $url = '-';
                if($data->status == 3 || $data->status == 2){
                    $url = $data->pembayaran->file_path.''.$data->pembayaran->file_name;   
                }
                    return view('layouts.includes.table-action',compact('data','route', 'url', 'url2'));   
            });

        return $datatables->make(true);
        } catch (\Throwable $th) {
            //throw $th;
            dd($th->getMessage());
        }
        
    }

    public function data(Request $request){
        $datas = Tagihan::find($request->id);
        if($datas->meter_penggunaan_awal != null){
            $meter_sebelumnya = $datas->meter_penggunaan_awal;
            $meter_sekarang = $datas->meter_penggunaan;
            $pemakaian = $meter_sekarang - $meter_sebelumnya;

            // $jumlah_pembayaran = $pemakaian * 11500;
        }else if($datas->meter_penggunaan_awal == null){
            $pemakaian = $datas->meter_penggunaan;
        }


        // $total_pemakaian = $datas->meter_penggunaan - $datas->meter_penggunaan_awal;

        $data = [
            'name' => $datas->pelanggan->name,
            'kategori_industri' => $datas->pelanggan->kategori_industri->nama_industri,
            'no_telepon' => $datas->pelanggan->no_telepon,
            'alamat' => $datas->pelanggan->alamat,
            'total_pemakaian' => number_format($pemakaian),
            'bulan' => $datas->tanggal->format('n'),
            'tahun' => $datas->tanggal->format('Y'),
        ];

        return response()->json($data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
    
        $route = $this->routeName;
        $title = $this->title;
        if(Tagihan::with('pelanggan')->where(['pelanggan_id'=>$request->category])->where(function($w){
            $w->where('status',0)->orWhere('status',1)->orWhere('status',3);
        })->first()){
            return redirect()->back()->with(['error'=>'Mohon Lunasi Tagihan Terlebih Dahulu Sebelum Melaporkan Penggunaan Kembali']);
        }
        $start = \Carbon\Carbon::now()->subYear()->startOfYear();
        $end = \Carbon\Carbon::now()->subYear()->endOfYear();
        $months_to_render = $start->diffInMonths($end);
    
        $dates = [];
    
        for ($i = 0; $i <= $months_to_render; $i++) {
            $dates[] = $start->isoFormat('MMMM');
            $start->addMonth();
        }

        $pelanggans = [];

        if(Auth::user()->name != 'Admin'){
            $pelanggans = Auth::user()->load(['pelanggan'=>function($query){
                $query->with('kategori_npa');
            }])->load('daerah');
        }
        

        // $pelanggans =  Auth::user()->pelanggan;

        $years = [];
        for ($year=2020; $year <= date('Y'); $year++) $years[$year] = $year;

        // $sektor = Auth::user()->pelanggan;
        // dd($dates);
        // dd(Carbon::now()->format('D MMMM Y, H:i:s'));
        $present = Carbon::now()->addMonth(-1);
        $sektor = $request->category;
        $nama_sektor = Pelanggan::findOrFail($sektor)->kategori_npa->kategori;
        // dd($nama_sektor, $sektor, Pelanggan::findOrFail($sektor)->first());
        
        return view($this->viewName.'.create',compact('route','title','dates','years','pelanggans', 'present', 'sektor', 'nama_sektor'));
    }

    /*
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // return $request->all();
        try {

            // $i = Carbon::make($request->tanggal_awal);
            $count = [];
            $key = 0;
            DB::beginTransaction();

            foreach($request->periode as $key => $periode){
                
                $this->cekTunggakan(Auth::user()->id, $periode,$request);
                $denda_admin = $this->cekDendaAdmin(Auth::user()->id, $periode,$request);
                if($request->has('file')){
                    $validator = $request->validate([
                        'file' => 'max:5000',
                    ]);   
                }
                //appPass = ATBBDGLJbPvstqk3W5xGXcMgGun44FF0AD5E;
                if ($request->has('file') && array_key_exists($key, $request->file('file'))) {
                $file=$request->file('file')[$key];
                $direktori=public_path().'/storage/image/';          
                $nama_file=str_replace(' ','-',$request->file[$key]->getClientOriginalName());
                $file_format= $request->file[$key]->getClientOriginalExtension();
                $uploadSuccess = $request->file[$key]->move($direktori,$nama_file);
                }

                $kategori_npa = 4;

                if(Auth::user()->name != "Admin"){
                    $kategori_npa = Pelanggan::where('id', $request->kategori)->first()->kategori_npa->npa->first();
                }
                $pembayaran = null;
                $harga = null;

                if ($kategori_npa->volume_akhir) {//jika pengguna bukan BUMN dan BUMD
                    $list_harga = NPA::whereHas('kategori.pelanggan',function($query){
                        $query->where(['user_id'=>Auth::user()->id]);
                    })->whereHas('wilayah.pelanggan',function($query){
                        $query->where(['daerah_id'=>Auth::user()->daerah_id]);
                    })->with('kategori')
                    ->get();
                    // 
                    if ($list_harga->count() > 0) { // jika pengguna berada pada list harga
                        $counter_volume = $request->pemakaian[$key];
                        foreach ($list_harga as $keys => $value){
                            if ($counter_volume >= 0 && $list_harga[$keys]->volume_akhir == 50){
                                if($counter_volume - 50 > 0){
                                    $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                                    $pembayaran += ($list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga) * 10/100; 
                                    $counter_volume -= $list_harga[$keys]->volume_akhir;
                                } else {
                                    $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                                    $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                                    break;
                                }
                            } else if ($counter_volume >= 0 && $list_harga[$keys]->volume_akhir == 500){
                                if($counter_volume - 450 > 0){
                                    $harga += 450 * $list_harga[$keys]->harga;
                                    $pembayaran += (450 * $list_harga[$keys]->harga) * 10/100; 
                                    $counter_volume -= 450;
                                } else {
                                    $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                                    $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                                    break;
                                }
                            } else if($counter_volume > 0 && $list_harga[$keys]->volume_akhir == 1000){
                                if($counter_volume - 500 > 0){
                                    $harga += 500 * $list_harga[$keys]->harga;
                                    $pembayaran += (500 * $list_harga[$keys]->harga) * 10/100; 
                                    $counter_volume -= 500;
                                } else {
                                    $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                                    $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                                    break;
                                }
                            } else if($counter_volume > 0 && $list_harga[$keys]->volume_akhir == 2500){
                                if($counter_volume - 1500 > 0){
                                    $harga += 1500 * $list_harga[$keys]->harga;
                                    $pembayaran += (1500 * $list_harga[$keys]->harga) * 10/100; 
                                    $counter_volume -= 1500;
                                } else {
                                    $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                                    $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                                    break;
                                }
                            } else if($counter_volume > 0 && $list_harga[$keys]->volume_awal == 2501){
                                    $harga += $counter_volume * $list_harga[$keys]->harga;
                                    $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                                    break;
                            }
                        }

                       
                    }else{
                        return redirect()->back()->with(['error'=>'Maaf area anda belum terdaftar pada kategori NPA kami']);
                    }
                    
                    }else{//jika pengguna adalah BUMD atau BUMN
                        $harga = $kategori_npa->harga;
                        $pembayaran = ($request->pemakaian[$key] * $harga)*10/100;
                    }
                $denda_Keterlambatan = $this->cekDendaKeterlambatan(Auth::user()->id,$periode,$pembayaran);
                $date_formated = Carbon::createFromFormat('Y-m-d',$periode);
                $number = rand(0,1000);
                $txt = date("Ymdhis").''.$number;
                $id = $txt.$number;
                $request['id_tagihan'] = $txt;
                $request['pelanggan_id'] = $request->kategori;
                $request['tanggal'] = $date_formated;
                $request['tanggal_akhir'] = $date_formated;
                $request['meter_penggunaan_awal'] = $request->meter_sebelumnya[$key];
                $request['meter_penggunaan'] = $request->meter_sekarang[$key] !=0?$request->meter_sekarang[$key]:$request->pemakaian[$key];
                $request['jumlah_pembayaran'] = $pembayaran;
                $request['tarif'] = $harga;
                $request['file_name'] = isset($request->file[$key])?$nama_file:null;
                $request['file_path'] = isset($request->file[$key])?'/storage/image/':null;
                $request['pesan'] = null;
                $request['status'] = 0;
                $request['denda_harian'] = $denda_Keterlambatan;
                $request['denda_admin'] = $denda_admin;
                $tagihan = Tagihan::create($request->all());
                $surat = Surat::where("daerah_id", Pelanggan::where('id', $request->kategori)->first()->daerah->id)->first();
                $penetapan = Penetapan::where("daerah_id", Pelanggan::where('id', $request->kategori)->first()->daerah->id)->first();
                $lunas = Lunas::where("daerah_id", Pelanggan::where('id', $request->kategori)->first()->daerah->id)->first();
                $nomor_tagihan = $surat->awalan_surat . "/" . $surat->urutan . "/" . $surat->kode_wilayah . "/" . $surat->tahun;
                $nomor_penetapan = $penetapan->awalan_surat . "/" . $penetapan->urutan . "/" . $penetapan->kode_wilayah . "/" . $penetapan->tahun;
                $nomor_lunas = $lunas->awalan_surat . "/" . $lunas->urutan . "/" . $lunas->kode_wilayah . "/" . $lunas->tahun;
                $tagihan->update([
                    'nomor_surat_tagihan' => $nomor_tagihan,
                    'nomor_surat_penetapan' => $nomor_penetapan,
                    'nomor_surat_setoran' => $nomor_lunas,
                ]);
                $surat->update([
                    'urutan' => $surat->urutan + 1,
                ]);
                $penetapan->update([
                    'urutan' => $penetapan->urutan + 1,
                ]);
                $lunas->update([
                    'urutan' => $lunas->urutan + 1,
                ]);
                
                $vars  = array(
                    // '{id_pelanggan}' => Auth::user()->pelanggan->id,
                    '{nama_pelanggan}' => Pelanggan::where('id', $request->kategori)->first()->name,
                    '{alamat}' => Pelanggan::where('id', $request->kategori)->first()->alamat,
                    '{tanggal}' => strtoupper($date_formated),
                    '{meter_penggunaan}' => $request["meter_penggunaan"],
                    '{jumlah_pembayaran}' => $request["jumlah_pembayaran"],
                );
                $msg = "Pelanggan atas nama {nama_pelanggan} telah melakukan pelaporan untuk periode tagihan {tanggal}";    
                $msg1 = strtr($msg, $vars);
                $operator = User::role("Operator")->where("daerah_id", '=',Pelanggan::where('id', $request->kategori)->first()->daerah_id)->first();
                Helper::sendWa($operator->no_telepon,$msg1);
                Helper::sendWa(Auth::user()->no_telepon, $msg1);
                Mail::to($operator->email)->send(new Emailing(Pelanggan::where('id', $request->kategori)->first(), false, $operator, $date_formated));
                Mail::to(Auth::user()->email)->send(new Emailing(Pelanggan::where('id', $request->kategori)->first(), false, $operator, $date_formated));
                // dd(Auth::user());
                Log::create([
                    'pengguna' => Auth::user()->name,
                    'kegiatan' => "Melaporkan Penggunaan periode ". $date_formated ." dengan jumlah pembayaran sebesar Rp. ".$pembayaran
                ]);

            }
            DB::commit();
            return redirect(route($this->routeName.'.index'))->with(['success'=>'Berhasil Menambah Data Tagihan']);
            // for($i; $i->format('n') <= Carbon::make($request->tanggal_akhir)->format('n'); $i->addMonth(1)){
            //     if($i->format('n') == 1 && Carbon::make($request->tanggal_akhir)->format('n') == 12 && Carbon::now()->format('n') >= 1){
            //         break;
            //     }

            //     // dd(Auth::user()->id);
            
                    
            //     // return $denda_harian;
            //     // return $kategori_npa.' => pemakaian = '.$request->pemakaian.' x '.$harga.' = '.number_format($pembayaran);
               
            //     if($key <= array_key_last($request->pemakaian)){
            //         $key++;
            //     }
            // }
        } catch (\Throwable $th) {
            DB::rollback();
            dd($th->getMessage(), $key, $request->all(), $request->pemakaian[$key], Auth::user());
            return redirect()->back()->with(['error'=>'Gagal Menambah Data Tagihan : '.$e->getMessage()])->withErrors($request->all());
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {               
        $years = collect();
        for ($year=2020; $year <= date('Y'); $year++) $years[$year] = $year;

        $month = [];
        $carbon = Carbon::now();
        foreach (range($carbon->startOfYear()->format('m'),$carbon->endOfYear()->format('m')) as $value) {
            $month[] = [
                'month'=>Carbon::create($carbon->format('Y').'-'.$value.'-01')->isoFormat('MMMM'),
                'value'=>Carbon::create($carbon->format('Y').'-'.$value.'-01')->format('m'),
            ];
        }
        // return Auth::user()->pelanggan->id;
        $tagihan = Tagihan::where(['id'=>$id])->firstOrFail();
        
        if ($tagihan->status !== 0) {
            return redirect()->back()->with(['error'=>'data sudah tidak dapat diubah karena telah diverifikasi']);
        }

        $start = \Carbon\Carbon::now()->subYear()->startOfYear();
        $end = \Carbon\Carbon::now()->subYear()->endOfYear();
        $months_to_render = $start->diffInMonths($end);
    
        $dates = [];
    
        for ($i = 0; $i <= $months_to_render; $i++) {
            $dates[] = $start->isoFormat('MMMM');
            $start->addMonth();
        }

        $pelanggans = [];

        if(Auth::user()->name != 'Admin'){
            $pelanggans = Auth::user()->load(['pelanggan'=>function($query){
                $query->with('kategori_npa');
            }])->load('daerah');
        }
        

        // $pelanggans =  Auth::user()->pelanggan;

        $years = [];
        for ($year=2020; $year <= date('Y'); $year++) $years[$year] = $year;

        
        // dd($dates);
        // dd(Carbon::now()->format('D MMMM Y, H:i:s'));
        $present = Carbon::now()->addMonth(-1);

        $data = [
            'title'=>$this->title,
            'route'=>$this->routeName,
            'tagihan'=>$tagihan,
            'month'=>collect($month)->pluck('month','value'),
            'selected_month'=>$carbon->create($tagihan->tanggal)->format('m'),
            'year'=>$years,
            'selected_year'=>$carbon->create($tagihan->tanggal)->format('Y'),
            'pelanggan'=>Auth::user()->pelanggan,
            'present' => $present,
        ];
        return view($this->viewName.'.edit')->with($data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
       $tagihan = Tagihan::findOrFail($id);
       $rules = [];
       // return $request->all();
        if ($request->meteran == 1) { // kondisi jika menggunakan meteran
            $rules=[
                'meter_sebelumnya'=>'numeric|required|digits_between:1,100',
                'meter_sekarang'=>'numeric|required|digits_between:1,100',
            ];
        }elseif($request->meteran == 0){ //kondisi jika tidak menggunakan meteran
            $rules = [
                'pemakaian'=>'numeric|required|digits_between:1,100',
            ];
        }

        $other_rules = [
            'bulan' => 'numeric|required|digits_between:1,2',
            'tahun' => 'numeric|required|digits_between:4,4',
        ];

        $validator = $request->validate(array_merge($rules,$other_rules));

        //$this->cekTunggakan(Auth::user()->id,$request->tahun.'-'.$request->bulan.'-10',$request);
       
        
        $kategori_npa = $tagihan->pelanggan->kategori_npa->npa->first();
        $pembayaran = null;
        $harga = null;
        // $list_harga = null;
        // dd($kategori_npa);
        if ($kategori_npa->volume_akhir) {//jika pengguna bukan BUMN dan BUMD
            $list_harga = NPA::whereHas('kategori.pelanggan',function($query){
                $query->where(['user_id'=>Auth::user()->id]);
            })->whereHas('wilayah.pelanggan',function($query){
                $query->where(['daerah_id'=>Auth::user()->daerah_id]);
            })->with('kategori')
            ->get();
            // 
            
            if ($list_harga->count() > 0) { // jika pengguna berada pada list harga
                $counter_volume = $request->pemakaian;
                foreach ($list_harga as $keys => $value){
                    if ($counter_volume >= 0 && $list_harga[$keys]->volume_akhir == 50){
                        if($counter_volume - 50 > 0){
                            $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                            $pembayaran += ($list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga) * 10/100; 
                            $counter_volume -= $list_harga[$keys]->volume_akhir;
                        } else {
                            $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                            $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                            break;
                        }
                    } else if ($counter_volume >= 0 && $list_harga[$keys]->volume_akhir == 500){
                        if($counter_volume - 450 > 0){
                            $harga += 450 * $list_harga[$keys]->harga;
                            $pembayaran += (450 * $list_harga[$keys]->harga) * 10/100; 
                            $counter_volume -= 450;
                        } else {
                            $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                            $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                            break;
                        }
                    } else if($counter_volume > 0 && $list_harga[$keys]->volume_akhir == 1000){
                        if($counter_volume - 500 > 0){
                            $harga += 500 * $list_harga[$keys]->harga;
                            $pembayaran += (500 * $list_harga[$keys]->harga) * 10/100; 
                            $counter_volume -= 500;
                        } else {
                            $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                            $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                            break;
                        }
                    } else if($counter_volume > 0 && $list_harga[$keys]->volume_akhir == 2500){
                        if($counter_volume - 1500 > 0){
                            $harga += 1500 * $list_harga[$keys]->harga;
                            $pembayaran += (1500 * $list_harga[$keys]->harga) * 10/100; 
                            $counter_volume -= 1500;
                        } else {
                            $harga += $list_harga[$keys]->volume_akhir * $list_harga[$keys]->harga;
                            $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                            break;
                        }
                    } else if($counter_volume > 0 && $list_harga[$keys]->volume_awal == 2501){
                            $harga += $counter_volume * $list_harga[$keys]->harga;
                            $pembayaran += ($counter_volume * $list_harga[$keys]->harga) * 10/100; 
                            break;
                    }
                }
               
            }else{
                return redirect()->back()->with(['error'=>'Maaf area anda belum terdaftar pada kategori NPA kami']);
            }
            
        }else{//jika pengguna adalah BUMD atau BUMN
            $harga = $kategori_npa->harga;
            $pembayaran = ($request->pemakaian * $harga)*10/100;
        }
        // dd($pembayaran, $request->pemakaian * $harga, $harga);
        if ($tagihan->tanggal->format('m') == Carbon::now()->format('m')){
            $tanggal = Carbon::now()->format('Y-m-d');
        }else{
            $tanggal = Carbon::create($tagihan->tanggal->format('Y-m').'-20')->format('Y-m-d');
        }
        $date = Carbon::now()->format('Y-m-d');
                // return $tanggal;
        $denda_Keterlambatan = $this->cekDendaKeterlambatan(Auth::user()->id,$tanggal,$pembayaran,$date);
        $denda_admin = $this->cekDendaAdmin(Auth::user()->id,$request->tahun.'-'.$request->bulan.'-10',$request);
        // return $denda_admin;
        if ($request->has('file')) {
            // return 'halo';
            $request->validate([
                'file' => 'max:5000',
            ]);

            $file=$request->file('file');
            $direktori=public_path().'/storage/image/';          
            $nama_file=str_replace(' ','-',$request->file->getClientOriginalName());
            File::delete($direktori.$tagihan->file_name);
            $file_format= $request->file->getClientOriginalExtension();
            $uploadSuccess = $request->file->move($direktori,$nama_file);
        }
        try{
            DB::beginTransaction();
            // $number = rand(0,1000);
            // $txt = date("Ymdhis").''.$number;
            // $id = $txt.$number;
            $request['id_tagihan'] = $tagihan->id_tagihan;
            $request['pelanggan_id'] = $tagihan->pelanggan_id;
            $request['tanggal'] = $request->tahun.'-'.$request->bulan.'-20';
            $request['meter_penggunaan_awal'] = $request->meter_sebelumnya;
            $request['meter_penggunaan'] = $request->meter_sekarang !=0?$request->meter_sekarang:$request->pemakaian;
            $request['jumlah_pembayaran'] = $pembayaran;
            $request['tarif'] = $harga;
            $request['file_name'] = isset($request->file)?$nama_file:$tagihan->file_name;
            $request['file_path'] = isset($request->file)?'/storage/image/':$tagihan->file_path;
            $request['pesan'] = null;
            $request['status'] = 0;
            $request['denda_harian'] = $denda_Keterlambatan;
            $request['denda_admin'] = $denda_admin;
            
            $tagihan->update($request->all());
            Log::create([
                'pengguna' => Auth::user()->name,
                'kegiatan' => "Edit Penggunaan periode ".$request->tahun.'-'.$request->bulan." menjadi " . $pembayaran,
            ]);
            DB::commit();
            return redirect(route($this->routeName.'.index'))->with(['success'=>'Berhasil Menambah Data Tagihan : '.$tagihan->id_tagihan]);
        } catch (\Exception $e){
            return redirect()->back()->with(['error'=>'Gagal Mengubah Data Tagihan : '.$e->getMessage()])->withErrors($request->all());
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        try{
            $query = Tagihan::findOrFail($id);
            if ($query->status !== 0) {
                return redirect()->back()->with(['error'=>'data sudah tidak dapat dihapus karena telah diverifikasi']);
            }
            File::delete(public_path().'/storage/image/'.$query->file_name);
            Log::create([
                'pengguna' => Auth::user()->name,
                'kegiatan' => "Menghapus Penggunaan dengan jumlah pembayaran sebesar Rp. ".$query->jumlah_pembayaran,
            ]);
            $query->delete();
            return redirect(route($this->routeName.'.index'))->with(['success'=>'Berhasil Menghapus Data Tagihan : '.$query->id_tagihan]);
        }catch (\Exception $e){
            return redirect()->back()->with(['error'=>'Gagal Menghapus Data Tagihan : '.$e->getMessage()]);
        }
    }

    public function show_file($id)
    {
        $datas = Tagihan::find($id);

        $url = $datas->file_path.''.$datas->file_name;

        // dd($url);
        return response()->download(asset($url));
    }

    public function nota($id)
    {
        $datas = Tagihan::find($id);
        if ($datas->tanggal->format('m') == Carbon::now()->format('m')){
            $tanggal = Carbon::now()->format('Y-m-d');
        }else{
            $tanggal = Carbon::create($datas->tanggal->format('Y-m').'-20')->format('Y-m-d');
        }
        $date = Carbon::now()->format('Y-m-d');
                // return $tanggal;
        $denda_Keterlambatan = $this->refreshDendaKeterlambatan(Auth::user()->id,$tanggal,$datas->jumlah_pembayaran,$date);

        $data = [
            'datas'=>$datas,
            'denda_keterlambatan'=>$denda_Keterlambatan,
        ];
        return view('tagihan.nota')->with($data);
    }
    public function surat($id)
    {
        $datas = Tagihan::find($id);
        if ($datas->tanggal->format('m') == Carbon::now()->format('m')){
            $tanggal = Carbon::now()->format('Y-m-d');
        }else{
            $tanggal = Carbon::create($datas->tanggal->format('Y-m').'-20')->format('Y-m-d');
        }
        $date = Carbon::now()->format('Y-m-d');
                // return $tanggal;
        $denda_Keterlambatan = $this->refreshDendaKeterlambatan(Auth::user()->id,$tanggal,$datas->jumlah_pembayaran,$date);
        $jabatanKepala = Jabatan::where('jabatan', 'LIKE', '%'.'Kepala'."%")->where('daerah_id', $datas->pelanggan->daerah->id)->first();
        $jabatanBendahara = Jabatan::where('jabatan', 'LIKE', '%'.'Bendahara'."%")->where('daerah_id', $datas->pelanggan->daerah->id)->first();


        $jenis_denda = JenisDenda::where(['type'=>'Denda Keterlambatan'])->first();
        $counter = 0;
		if($jenis_denda){
			if($jenis_denda->tanggal_jt == 30 || $jenis_denda->tanggal_jt == 31){
			$diff = Carbon::create($datas->tanggal->format("Y-m"))->diffInMonths(Carbon::now()->format('Y-m'));
				if($diff == 0){
					if(Carbon::now()->format("d") == Carbon::now()->endOfMonth()->format('d')){
						$counter = $diff * 2;
					}
				}
				else if($diff > 15){
					$counter = 15 * 2;
    			} 
    			else if($diff > 0) {
					$counter = $diff * 2;
				}
			} else {
				$diff = Carbon::create($datas->tanggal->format('Y-m'))->diffInMonths(Carbon::now()->format('Y-m'));
				if($diff > 15){
					$counter = 15 * 2;
				} else if($diff == 0){
				if(Carbon::now()->addMonth(-1)->format("d") > $jenis_denda->tanggal_jt){
					$counter= $diff * 2;
				} 
				} else if($diff > 0){
					if(Carbon::now()->format("d") > $jenis_denda->tanggal_jt){
						$counter= $diff * 2;
					} else {
						$counter = $diff * 2;
                    }
                }
            }
        }
    //     $hariLibur = hariLibur::select('tanggal')->get();
    //     $hlArr = [];
    //         foreach($hariLibur as $hl){
    //             array_push($hlArr, $hl->tanggal);
    //         }
    //         $counter = 0;
	// $i = Carbon::make($datas->pembayaran->tanggal);

	// for ($i;  $i < Carbon::now(); $i->addDay(1)) { 
	// 	if(in_array($i->format("Y-m-d"), $hlArr)){
	// 		continue;
	// 	}
	// 	if(Carbon::make($tanggal) < Carbon::now()){
	// 		$counter++;
	// 	}
	// }

    $hlArr = [];

    $hariLibur = hariLibur::select('tanggal')->get();
    foreach($hariLibur as $hl){
         array_push($hlArr, $hl->tanggal);
    }

    $i = Carbon::make($datas->pembayaran->tanggal);
    $counter_libur = 0;
    $limit = Carbon::now()->addDay(15);
    for ($i;  $i < $limit; $i->addDay(1)) {
		if(in_array($i->format("Y-m-d"), $hlArr)){
           $counter_libur += 1;
		}
	}
    $deadline = Carbon::now()->addDay(15 + $counter_libur)->format("d-M-Y");
        $data = [
            'datas'=>$datas,
            'denda_keterlambatan'=>$denda_Keterlambatan,
            'awalan_surat' => Surat::where("daerah_id", '=', Auth::user()->daerah_id)->first(),
            'counter' => $counter,
            'deadline' => $deadline,
            'kepala'=>$jabatanKepala,
            'bendahara'=>$jabatanBendahara
        ];
        return view('tagihan.surat')->with($data);
    }
    public function lunas($id)
    {
        $datas = Tagihan::find($id);
        $jabatanKepala = Jabatan::where('jabatan', 'LIKE', '%'.'Kepala'."%")->where('daerah_id', $datas->pelanggan->daerah->id)->first();
        $jabatanBendahara = Jabatan::where('jabatan', 'LIKE', '%'.'Bendahara'."%")->where('daerah_id', $datas->pelanggan->daerah->id)->first();
        if ($datas->tanggal->format('m') == Carbon::now()->format('m')){
            $tanggal = Carbon::now()->format('Y-m-d');
        }else{
            $tanggal = Carbon::create($datas->tanggal->format('Y-m').'-20')->format('Y-m-d');
        }
        $date = Carbon::now()->format('Y-m-d');
                // return $tanggal;
        $denda_Keterlambatan = $this->refreshDendaKeterlambatan(Auth::user()->id,$tanggal,$datas->jumlah_pembayaran,$date);
        $digit = new NumberFormatter('id', NumberFormatter::SPELLOUT);

        $data = [
            'datas'=>$datas,
            'denda_keterlambatan'=>$denda_Keterlambatan,
            'awalan_surat' => Lunas::where("daerah_id", '=', Auth::user()->daerah_id)->first(),
            'word'=>$digit->format($datas->jumlah_pembayaran + $datas->denda_admin + $datas->denda_keterlambatan),
            'kepala'=>$jabatanKepala,
            'bendahara'=>$jabatanBendahara
        ];
        return view('tagihan.lunas')->with($data);
    }
    public function pemberitahuan($id)
    {
        // dd(Auth::user()->pelanggan->daerah);
        $datas = Tagihan::find($id);
        $jabatanKepala = Jabatan::where('jabatan', 'LIKE', '%'.'Kepala'."%")->where('daerah_id', $datas->pelanggan->daerah->id)->first();
        $jabatanBendahara = Jabatan::where('jabatan', 'LIKE', '%'.'Bendahara'."%")->where('daerah_id', $datas->pelanggan->daerah->id)->first();
        if ($datas->tanggal->format('m') == Carbon::now()->format('m')){
            $tanggal = Carbon::now()->format('Y-m-d');
        }else{
            $tanggal = Carbon::create($datas->tanggal->format('Y-m').'-20')->format('Y-m-d');
        }
        $date = Carbon::now()->format('Y-m-d');
                // return $tanggal;
        $denda_Keterlambatan = $this->refreshDendaKeterlambatan(Auth::user()->id,$tanggal,$datas->jumlah_pembayaran,$date);
        $digit = new NumberFormatter('id', NumberFormatter::SPELLOUT);

        $data = [
            'datas'=>$datas,
            'denda_keterlambatan'=>$denda_Keterlambatan,
            'awalan_surat' => Lunas::where("daerah_id", '=', Auth::user()->daerah_id)->first(),
            'word'=>$digit->format($datas->jumlah_pembayaran + $datas->denda_admin + $datas->denda_keterlambatan),
            'kepala'=>$jabatanKepala,
            'bendahara'=>$jabatanBendahara
        ];
        return view('tagihan.pemberitahuan')->with($data);
    }

    public function penetapan($id)
    {
        try {
            //code...
            $datas = Tagihan::find($id);
        if ($datas->tanggal->format('m') == Carbon::now()->format('m')){
            $tanggal = Carbon::now()->format('Y-m-d');
        }else{
            $tanggal = Carbon::create($datas->tanggal->format('Y-m').'-20')->format('Y-m-d');
        }
        $date = Carbon::now()->format('Y-m-d');
                // return $tanggal;
        $denda_Keterlambatan = $this->refreshDendaKeterlambatan(Auth::user()->id,$tanggal,$datas->jumlah_pembayaran,$date);

        $jenis_denda = JenisDenda::where(['type'=>'Denda Keterlambatan'])->first();
        $counter = 0;
		if($jenis_denda){
			if($jenis_denda->tanggal_jt == 30 || $jenis_denda->tanggal_jt == 31){
			$diff = Carbon::create($datas->tanggal->format("Y-m"))->diffInMonths(Carbon::now()->format('Y-m'));
				if($diff == 0){
					if(Carbon::now()->format("d") == Carbon::now()->endOfMonth()->format('d')){
						$counter = $diff * 2;
					}
				}
				else if($diff > 15){
					$counter = 15 * 2;
    			} 
    			else if($diff > 0) {
					$counter = $diff * 2;
				}
			} else {
				$diff = Carbon::create($datas->tanggal->format("Y-m"))->diffInMonths(Carbon::now()->format('Y-m'));
				if($diff > 15){
					$counter = 15 * 2;
				} else if($diff == 0){
				if(Carbon::now()->addMonth(-1)->format("d") > $jenis_denda->tanggal_jt){
					$counter= $diff * 2;
				} 
				} else if($diff > 0){
					if(Carbon::now()->format("d") > $jenis_denda->tanggal_jt){
						$counter= $diff * 2;
					} else {
						$counter = $diff * 2;
                    }
                }
            }
        }
        // dd($datas);
        $data = [
            'datas'=>$datas,
            'denda_keterlambatan'=>$denda_Keterlambatan,
            'awalan_surat' => Penetapan::where("daerah_id", '=', Auth::user()->daerah_id)->first(),
            'counter' => $counter
        ];
        return view('tagihan.penetapan')->with($data);
        } catch (\Throwable $th) {
            //throw $th;
            dd($th->getMessage());
        }
    }

    public function tagihan_telat()
    {
        try {
            $datas = Tagihan::doesntHave('pembayaran')->orderBy('created_at', 'DESC')->get();

            $tagihan = [];

            foreach($datas as $d){
                if($d->tanggal->format('Y-m-d') < date('Y-m-d')){
                    $diff = $d->tanggal->diffInDays(Carbon::now()->format('Y-m-d'));
                    $tagihan[] = [
                        'id' => $d->id,
                        'no_tagihan' => $d->id_tagihan,
                        'no_pelanggan' => $d->pelanggan->id_pelanggan,
                        'nama' => $d->pelanggan->name,
                        'jumlah_pembayaran' => $d->jumlah_pembayaran,
                        'hari' => $diff.' Hari'
                    ];
                }
            }

            $data = [
                'status' => 200,
                'data' => $tagihan,
            ];
        } catch (\Throwable $th) {
            $data = [
                'status' => 500,
                'message' => 'Tagihan Tidak Ditemukan',
                'data' => null,
            ];
        }
        return response()->json($data,$data['status']);
    }

    // public function checkRunggakan(){

    // }
    public function upload(Request $request){
        $route = $this->routeName;
        $title = $this->title;
        $datas = Tagihan::where("id", "=", $request->id)->first();
        return view('tagihan.upload', compact('route', 'title', 'datas'));
    }
    public function bukti(Request $request, $id){
        $direktori=public_path().'/storage/image/';          
        $nama_file=str_replace(' ','-',$request->file->getClientOriginalName());
        $file_format= $request->file->getClientOriginalExtension();
        $tagihan = Tagihan::findOrFail($id);

        DB::beginTransaction();
        try{
            $request['file_path'] = '/storage/image/';
            $request['file_name'] = $nama_file;
            $tagihan->update(['status' => 3]);
            if($tagihan->pembayaran->file_name == null){
                $uploadSuccess = $request->file->move($direktori,$nama_file);
                $tagihan->pembayaran()->update($request->except(['_token', "file"]));
                Log::create([
                    'pengguna' => Auth::user()->name,
                    'kegiatan' => "Upload Bukti Pembayaran untuk penggunaan periode ".$tagihan->tanggal." dengan jumlah Rp. ".$tagihan->jumlah_pembayaran,
                ]);
            } else {
                File::delete($direktori.$tagihan->pembayaran->file_name);
                $uploadSuccess = $request->file->move($direktori,$nama_file);
                $tagihan->pembayaran()->update($request->except(['_token', "file"]));
                Log::create([
                    'pengguna' => Auth::user()->name,
                    'kegiatan' => "Edit Bukti Pembayaran"
                ]);
            }
            $operator = User::role("Operator")->where("daerah_id", '=', $tagihan->pelanggan->daerah_id)->first();
            $admin = User::role("Admin")->first();
            $user = $tagihan->pelanggan->name;
            $periode = $tagihan->tanggal->isoFormat("MMMM-Y");
            $msg1 = "Pelanggan atas nama $user telah mengupload bukti pembayaran untuk tagihan periode $periode";
            Helper::sendWa($operator->no_telepon,$msg1);
            Helper::sendWa($admin->no_telepon,$msg1);
            DB::commit();
            return redirect(route($this->routeName.'.index'))->with(['success'=>'Berhasil Menambah Bukti Pembayaran : ']);
        } catch(\Exception $e){
            DB::rollBack();
            return redirect()->back()->with(['error'=>'Gagal Menambah Data Pembayaran : '.$e->getMessage()])->withErrors($request->all());
        }
    }

    

    public function va(Request $request, $id){
        try {
            $tagihan = Tagihan::where(['id'=>$id])->firstOrFail();
            $amount = $tagihan->jumlah_pembayaran+$tagihan->denda_harian+$tagihan->denda_admin;
            $code = null;
            $institution = null;
            $qrisUsername = null;
            $vaUsername = null;
            if($tagihan->pelanggan->daerah_id == 9){
                $code = '1118';
                $vaUsername = 'PAPWILBPP';
                $institution = '230302013';
                $qrisUsername = 'PAP.WIL.BPP';
            } else if($tagihan->pelanggan->daerah_id == 13){
                $code = '1117';
                $vaUsername = 'PAPWILSMD';
                $institution = '230302017';
                $qrisUsername = 'PAP.WIL.SMD';
            } else if($tagihan->pelanggan->daerah_id == 10){
                $code = '1119';
                $vaUsername = 'PAPWILBONTANG';
                $institution = '230302014';
                $qrisUsername = 'PAP.WIL.BONTANG';
            } else if($tagihan->pelanggan->daerah_id == 14){
                $code = '1126';
                $vaUsername = 'PAPWILPASER';
                $institution = '230302016';
                $qrisUsername = 'PAP.WIL.PASER';
            } else if($tagihan->pelanggan->daerah_id == 15){
                $code = '1125';
                $vaUsername = 'PAPWILPPU';
                $institution = '230302015';
                $qrisUsername = 'PAP.WIL.PPU';
            } else if($tagihan->pelanggan->daerah_id == 16){
                $code = '1122';
                $vaUsername = 'PAPWILKUBAR';
                $institution = '230302019';
                $qrisUsername = 'PAP.WIL.KUBAR';
            } else if($tagihan->pelanggan->daerah_id == 18){
                $code = '1121';
                $vaUsername = 'PAPWILKUTIM';
                $institution = '230302021';
                $qrisUsername = 'PAP.WIL.KUTIM';
            } else if($tagihan->pelanggan->daerah_id == 19){
                $code = '1120';
                $vaUsername = 'PAPWILKUKAR';
                $institution = '230302020';
                $qrisUsername = 'PAP.WIL.KUKAR';
            } else if($tagihan->pelanggan->daerah_id == 20){
                $code = '1124';
                $vaUsername = 'PAPWILBERAU';
                $institution = '230302018';
                $qrisUsername = 'PAP.WIL.BERAU';
            }
            if ($tagihan->status != 2) {
                //pengecekan jika sudah pernah melakukan request va atau qris
                if ($tagihan->waktu_token) {
                    //pengecekan status pebayaran
                    if ($this->cekStatus($tagihan, $code, $vaUsername, $institution, $qrisUsername)) {
                        $response = [
                            'html'=>'<div class="response-pesan"><div class="alert alert-success"><h2>Tagihan ini telah lunas</h2></div></div>',
                        ];
                    }else{
                        //pengecekan waktu generate va atau qris
                        if (Carbon::now()->diffInMinutes($tagihan->waktu_token) > 60 ){
                            if ($tagihan->metode == 'Virtual Account'){
                                $number = $code.substr($tagihan->id_tagihan,-15);
                                // $this->deleteVa($number, $code, $vaUsername, $institution, $qrisUsername);
                            }
                            if ($request->types == 'Virtual Account') {
                                $response = $this->requestVA($tagihan, $code, $vaUsername, $institution, $qrisUsername);
                                Log::create([
                                    'pengguna' => Auth::user()->name,
                                    'kegiatan' => "Me-request kode VA dengan tagihan sebesar ".$tagihan->jumlah_pembayaran
                                ]);
                            }elseif($request->types == 'QRIS'){
                                if ($amount > 10000000) {
                                    $response = [
                                        'html'=>'<div class="response-pesan"><div class="alert alert-danger"><h4>Tagihan maksimal untuk metode pembayaran QRIS adalah Rp 10.000.000 silakan gunakan metode Virtual Account untuk menyelesaikan pembayaran!</h4></div></div>',
                                    ];
                                    return response()->json(array_merge($response,['status'=>200]),200);  
                                }else{
                                    $response = $this->requestQRIS($tagihan, $code, $vaUsername, $institution, $qrisUsername);
                                    Log::create([
                                        'pengguna' => Auth::user()->name,
                                        'kegiatan' => "Me-request kode QRIS dengan tagihan sebesar ".$tagihan->jumlah_pembayaran
                                    ]);
                                }
                            }
                            $tagihan->update([
                                'waktu_token' => Carbon::now(),
                                'metode' => $request->types,
                                'qris'=>isset($response['qris'])?$response['qris']:null,
                                'kd_tagihan'=>(string)$code.substr($tagihan->id_tagihan,-15),
                            ]);
                        }else{
                            $times = 60 - Carbon::now()->diffInMinutes($tagihan->waktu_token);
                            $code = $code;
                            $html = view('layouts.includes.response-has-va-or-qris',compact('tagihan','times', 'code'))->render();
                            if ($tagihan->metode == 'Virtual Account') {
                                // dd($this->updateVA($tagihan, $code, $vaUsername, $institution, $qrisUsername));
                                $this->updateVA($tagihan, $code, $vaUsername, $institution, $qrisUsername);
                                Log::create([
                                    'pengguna' => Auth::user()->name,
                                    'kegiatan' => "Mengupdate kode VA dengan tagihan sebesar ".$tagihan->jumlah_pembayaran
                                ]);
                            }
                            $response = [
                                'html'=>$html,
                            ];
                        }
                    }    
                }else{
                    
                    if ($request->types == 'Virtual Account') {
                        $response = $this->requestVA($tagihan, $code, $vaUsername, $institution, $qrisUsername);
                        Log::create([
                            'pengguna' => Auth::user()->name,
                            'kegiatan' => "Me-request kode VA dengan tagihan sebesar ".$tagihan->jumlah_pembayaran
                        ]);
                    }elseif($request->types == 'QRIS'){
                        //jika tagihan di atas 10 jt maka akan ditolak
                        if ($amount > 10000000) {
                            $response = [
                                'html'=>'<div class="response-pesan"><div class="alert alert-danger"><h4>Tagihan maksimal untuk metode pembayaran QRIS adalah Rp 10.000.000 silakan gunakan metode Virtual Account untuk menyelesaikan pembayaran!</h4></div></div>',
                            ];
                            return response()->json(array_merge($response,['status'=>200]),200);  
                        }else{
                            $response = $this->requestQRIS($tagihan, $code, $vaUsername, $institution, $qrisUsername);
                            Log::create([
                                'pengguna' => Auth::user()->name,
                                'kegiatan' => "Me-request kode QRIS dengan tagihan sebesar ".$tagihan->jumlah_pembayaran
                            ]);
                        }
                    }
                    $tagihan->update([
                        'waktu_token' => Carbon::now(),
                        'metode' => $request->types,
                        'qris'=>isset($response['qris'])?$response['qris']:null,
                        'kd_tagihan'=>(string)$code.substr($tagihan->id_tagihan,-15),
                    ]);
                }
            }else{
                $response = [
                    'html'=>'<div class="response-pesan"><div class="alert alert-success"><h2>Tagihan ini telah lunas</h2></div></div>',
                ];
            }

            return response()->json(array_merge($response,['status'=>200]),200);
        } catch (\Exception $e) {
            dd($e->getMessage());
            return response()->json(['status'=>500,'message'=>'terjadi kesalahan'],500);
        }
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]