<?php

namespace App\Http\Controllers;

use App\Models\Pembayaran;
use App\Models\Pemeriksaan;
use App\Models\Pasien;
use App\Models\Obat;
use App\Models\Resep;
use App\Models\Tindakan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\App;

class DetailPembayaranController extends Controller
{
    public function index(Request $request)
    {
        $periksaId = $request['id_periksa'];
        $no = 1;

        $pemeriksaan = Pemeriksaan::select('*', 'pemeriksaan.id as id_periksa', DB::raw('(SELECT status FROM pembayaran WHERE pembayaran.id_periksa = pemeriksaan.id) as statuspembayaran'))
            ->leftJoin('pasien', 'pasien.id', 'pemeriksaan.pasien_id')
            ->where('pemeriksaan.id', $periksaId)
            ->orderBy('pemeriksaan.created_at', 'desc')
            ->first();

        $pasien = Pasien::find($pemeriksaan->pasien_id);

        $obat = Resep::leftJoin('obat', 'obat.id', 'resepobat.id_obat')->where('id_periksa', $periksaId)->get();

        $harga = Tindakan::select('harga', 'nama_tindakan')->whereIn('nama_tindakan', $pemeriksaan->tindakan)->get();
        $pemeriksaan->total_harga_tindakan = 0;
        $hargatindakan = [];
        $namatindakan = [];

        foreach ($harga as $item) {
            $namatindakan[] = $item->nama_tindakan;
            if ($pasien->askes == "Dana_Sehat") {
                if ($item->nama_tindakan == "periksa" || $item->nama_tindakan == "pemeriksaan dan konsultasi") {
                    $hargatindakan[] = 0;
                    $pemeriksaan->total_harga_tindakan += 0;
                } else {
                    $hargatindakan[] = $item->harga;
                    $pemeriksaan->total_harga_tindakan += $item->harga;
                }
            } else {
                $hargatindakan[] = $item->harga;
                $pemeriksaan->total_harga_tindakan += $item->harga;
            }

        }
        $pemeriksaan->hargatindakan = $hargatindakan;
        $pemeriksaan->namatindakan = $namatindakan;

        return view('pages.detailpembayaran', compact('no', 'pemeriksaan', 'pasien', 'obat'));
    }
    public function store(Request $request)
    {
        $data = $request->all();
        Pembayaran::create($data);

        return redirect()->route('pembayaran.index');
    }



        public function cetak($id)
    {
        App::setLocale('id');
        // $periksaId = $request['id_periksa'];
$no = 1;
$kunjungan = Resep::select('resepobat.id_periksa', 'pemeriksaan.no_periksa', 'users.name as nama_dokter', 'pemeriksaan.tindakan', 'pemeriksaan.tindakan', 'pembayaran.status as statuspembayaran', 'pasien.nama_pasien', 'pasien.no_rmd', 'pemeriksaan.status as statuspemeriksaan', 'resepobat.status as statusobat', 'pemeriksaan.tgl_kunjungan', 'resepobat.pembelian as pembelian', 'pasien.askes', 'pemeriksaan.waktu_kunjungan', DB::raw('SUM(obat.harga) as total_harga_obat'))
    ->join('pemeriksaan', 'resepobat.id_periksa', '=', 'pemeriksaan.id')
    ->join('pasien', 'pemeriksaan.pasien_id', '=', 'pasien.id') // Join dengan tabel resepobat
    ->join('obat', 'resepobat.id_obat', '=', 'obat.id')
    ->join('users', 'pemeriksaan.user_id', '=', 'users.id')
    ->leftJoin('pembayaran', 'pemeriksaan.id', '=', 'pembayaran.id_periksa') // Left join dengan tabel pembayaran
    ->groupBy('pemeriksaan.no_periksa', 'resepobat.id_periksa', 'pemeriksaan.pasien_id', 'pembayaran.status', 'pasien.nama_pasien', 'pasien.no_rmd', 'pemeriksaan.status', 'resepobat.status', 'pembelian', 'pemeriksaan.tgl_kunjungan', 'pasien.askes', 'pemeriksaan.waktu_kunjungan')
    ->where('resepobat.id_periksa', $id)
    ->get();
$resep = Resep::select('resepobat.id_periksa', 'pemeriksaan.no_periksa', 'pasien.nama_pasien', 'pemeriksaan.status as statuspemeriksaan', 'obat.nama_obat', 'obat.harga', 'resepobat.aturanpakai', 'resepobat.jumlah', 'resepobat.deskripsi', 'pemeriksaan.tgl_kunjungan', 'pemeriksaan.waktu_kunjungan', 'pembelian')
    ->join('pemeriksaan', 'resepobat.id_periksa', '=', 'pemeriksaan.id')
    ->join('pasien', 'pemeriksaan.pasien_id', '=', 'pasien.id')
    ->join('obat', 'resepobat.id_obat', '=', 'obat.id')
    ->where('resepobat.id_periksa', $id)
    ->get();
foreach ($kunjungan as $data) {
    //     if ($data->askes == "Dana_Sehat") {
    //    $harga = Tindakan::select('harga')->where('nama_tindakan','!=','periksa')->whereIn('nama_tindakan', json_decode($data->tindakan, true))->get();

    //     }else {
    $harga = Tindakan::select('harga', 'nama_tindakan')->whereIn('nama_tindakan', json_decode($data->tindakan, true))->get();

    // }
    $data->total_harga_tindakan = 0;
    $hargatindakan = [];
    $namatindakan = [];
    // $data->hargatindakan = $harga->harga;
    foreach ($harga as $item) {
        $namatindakan[] = $item->nama_tindakan;
        if ($data->askes == "Dana_Sehat") {
            if ($item->nama_tindakan == "periksa" || $item->nama_tindakan == "pemeriksaan dan konsultasi") {
                $hargatindakan[] = 0;
                $data->total_harga_tindakan += 0;
            } else {
                $hargatindakan[] = $item->harga;
                $data->total_harga_tindakan += $item->harga;
            }
        } else {
            $hargatindakan[] = $item->harga;
            $data->total_harga_tindakan += $item->harga;
        }

    }
    $data->hargatindakan = $hargatindakan;
    $data->namatindakan = $namatindakan;
}

        return view('pages.cetaknota', compact('kunjungan', 'no', 'resep'));
    }
}
