Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/derfacell.fixmate.id/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/public_html/derfacell.fixmate.id/app/Http/Controllers/RefundController.php

<?php

namespace App\Http\Controllers;

use App\Models\LaporanKasir;
use App\Models\Pengguna;
use App\Models\Pesan;
use App\Models\PesanAction;
use App\Models\PesanOtomatis;
use App\Models\Profil;
use App\Models\refund;
use App\Models\RiwayatTransaksi;
use App\Models\Service;
use Barryvdh\DomPDF\Facade\Pdf;

use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\File;

class RefundController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(): Response {}

    /**
     * Show the form for creating a new resource.
     */
    public function create(): Response
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request): RedirectResponse
    {
        //
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id): Response
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id): Response
    {

        $datas = Service::find($id);
        $penggunas = Pengguna::all();
        $pengguna = $datas->pengguna->nama_pengguna;
        $refund_services = refund::where('service_id', $datas->id)->get();

        $data = [
            "datas" => $datas,
            "pengguna" => $penggunas,
            "refund_services" => $refund_services,
        ];

        return response()->view("refund.edit", $data);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        DB::beginTransaction();
        try {
            $service = Service::find($id);
            $uang_refund = str_replace(
                "Rp ",
                "",
                str_replace(".", "", $request->uang_refund)
            );
            $datas = Service::find($id);
            $tanggal = $datas->tanggal;
            $lk_kasir = LaporanKasir::where('tanggal', $tanggal)->whereRaw("FIND_IN_SET(?, services)", [$id])->get();



            $sales = Pengguna::find($request->sale_id);
            $kasir = Pengguna::find($request->kasir_id);
            $datas->update([

                "tanggal_selesai" => now(),
                "sales_out" => $sales->nama_pengguna,
                "kasir_out" => $kasir->nama_pengguna,
                "kasir_out" => $kasir->nama_pengguna,
                "status_transaksi" => 'cancel',

            ]);
            refund::create([
                "uang_refund" => $uang_refund,
                "jenis_refund" => $request->jenis_refund,
                "keterangan" => $request->keterangan,
                "service_id" => $id,
            ]);

            if ($request->jenis_refund == 0) {
                if ($datas->uang_bayar - $uang_refund >= 0) {
                    $datas->update([
                        'uang_bayar' => $datas->uang_bayar - $uang_refund,
                        "status_pembayaran" => "refund_dp",
                    ]);
                } else {
                    return redirect()->back()->with('error', 'Uang yang diKembalikan lebih besar dari Uang Muka. Periksa kembali Uang Refund! ');
                }
            } else {
                if ($datas->pembayaran_service->count() > 0) {
                    foreach ($datas->pembayaran_service as $pembayaran) {
                        $datas->update([
                            "status_pembayaran" => "refund",
                        ]);
                    }
                } else {

                    return redirect()->route('service.index')->with('error', 'Pembayaran service belum dilakukan, refund tidak bisa diproses!');
                }
            }
            RiwayatTransaksi::create([
                "pelanggan_id" => $datas->pelanggan->id,
                "no_transaksi" => $datas->no_service,
                "jenis_transaksi" => "Refund Service",
                "tanggal" => now(),
                "biaya" => $uang_refund,
            ]);
            // Remove pesan
            $pesan_otomatis = PesanOtomatis::where('id_service', $service->id)->where('status_batal', 'cancel')->get();


            if (isset($pesan_otomatis)) {
                foreach ($pesan_otomatis as $pesan) {
                    \Helper::RemoveMessage($pesan->id_pesan);
                    $pesan->delete();
                }
            }


            DB::commit();
            $refund_services = refund::where('service_id', $id)->first();
            // pesan Action
            $pesan_action = PesanAction::where('status', 'refund')->first();
            if (isset($pesan_action)) {

                $placeholders = [
                    '{ service_id }',
                    '{ nama_pelanggan }',
                    '{ status }',
                    '{ biaya }',
                    '{ uang_muka }',
                    '{ grand_total }',
                    '{ tipe_hp }',
                    '{ kerusakan }',
                    '{ kasir }'
                ];

                $replacements = [
                    $service->no_service,
                    $service->pelanggan->nama_pelanggan,
                    ucwords(str_replace('_', ' ', $service->status)),
                    $service->biaya,
                    $service->uang_bayar,
                    $service->grand_total,
                    $service->merk . ' (' . $service->tipe . ')',
                    $service->kerusakan,
                    $service->pengguna->nama_pengguna
                ];

                $isi_pesan = str_replace($placeholders, $replacements, $pesan_action->isi_pesan);

                if ($pesan_action->nota == 1) {
                    $sales = Pengguna::where('id', $service->sale_id)->first();
                    $profil = Profil::first();
                    $data = [
                        "sales" => $service->pengguna->nama_pengguna,
                        "datas" => $service,
                        "profil" => $profil,
                        "refund_service" => $refund_services,
                    ];


                    $pdf = Pdf::loadView('refund.nota_refund', $data);
                    $fileName =  $service->pelanggan->telp_pelanggan . 'NotaRefund-' . date('Y') . '' . date('m') . '' . date('d') . '' . date('his') . '.pdf';
                    $pdf->setPaper('A4', 'landscape');
                    $pdf->render();
                    $path = public_path('pdf/Nota/' . $fileName);
                    // return $pdf->stream($path, array("Attachment" => false));

                    $pdf->save($path);

                    $pdfUrl = url('pdf/Nota/' . $fileName);
                    \Helper::sendNotaPDF($service->pelanggan->telp_pelanggan, $pdfUrl);
                    File::delete($path);
                }
            }
            Pesan::create([
                "isi_pesan" => $isi_pesan,
                "service_id" => $id,
            ]);
            $nomor_telepon = $service->pelanggan->telp_pelanggan;


            \Helper::sendWa($service->pelanggan->telp_pelanggan, $isi_pesan);

            return redirect()->route('service.index')->with('success', 'Refund Service berhasil dicatat');
        } catch (\Throwable $th) {

            DB::rollback();

            dd($th->getMessage());
            return redirect()->route('service.index')->with('error', 'Refund Service gagal dicatat');
        }
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id): RedirectResponse
    {
        //
    }
}

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