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/KonsultasiController.php

<?php

namespace App\Http\Controllers;

use App\Models\Konsultasi;
use App\Models\landing_content_manager;
use App\Models\Merk;
use App\Models\Pelanggan;
use App\Models\PesanKonsultasi;
use App\Models\PesanOtomatis;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Http\Testing\File;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use PDO;

class KonsultasiController extends Controller
{
    private $list_kerusakan = [
        ["mati_total", "Mati Total"],
        ["nand_emmc", "NAND/EMMC"],
        ["not_charging", "Not Charging"],
        ["no_signal", "No Signal"],
        ["battery", "Battery"],
        ["lcd_ts", " LCD/TS"],
        ["mic_audio", "Mic Audio"],
        ["software_bypass", "Software/Bypass"],
        ["dll", "Dll"]
    ];
    private $list_kelengkapan = [
        ["simcard", "Simcard"],
        ["memory_card", "Memory Card"],
        ["back_casing", "Back Casing"]
    ];
    public function index(Request $request)
    {
        $datas = Konsultasi::query();
        $begin = new DateTime('-1 month');
        $end = new DateTime();
        $periode = [
            $begin->format('d/m/Y'),
            $end->format('d/m/Y'),
        ];
        if (request()->periode) {
            $periode = explode(" - ", request()->periode);
            $begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
            $end = DateTime::createFromFormat('d/m/Y', $periode[1]);
        }

        if (isset($request->key)) {
            $datas = $datas->where('no_konsultasi', 'like', '%' . $request->key . '%')
                ->orWhere('nama_pelanggan', 'like', '%' . $request->key . '%')
                ->orWhere('telp_pelanggan', 'like', '%' . $request->key . '%');
        }
        if (request()->periode) {
            $datas = $datas->whereBetween('created_at', [$begin->format('Y-m-d')." 00:00:00", $end->format('Y-m-d')." 23:59:59"]);
        }
        if(request()->status){
            $datas = $datas->where('status_penyelesaian', request()->status);
        }
        $total_masuk = $datas->count();
        
        $datas = $datas->latest()->paginate(15);

        $datas_success = konsultasi::where('status_penyelesaian', 'Service Masuk')->count();
        $datas_process = konsultasi::where('status_penyelesaian', 'Process')->count();
        $datas_sudah_direspon = konsultasi::where('status_penyelesaian', 'Sudah Direspon')->count();
        if(request()->periode){
            $datas_success = konsultasi::where('status_penyelesaian', 'Service Masuk')->whereBetween('created_at', [$begin->format('Y-m-d')." 00:00:00", $end->format('Y-m-d')." 23:59:59"])->count();
            $datas_process = konsultasi::where('status_penyelesaian', 'Process')->whereBetween('created_at', [$begin->format('Y-m-d')." 00:00:00", $end->format('Y-m-d')." 23:59:59"])->count();
            $datas_sudah_direspon = konsultasi::where('status_penyelesaian', 'Sudah Direspon')->whereBetween('created_at', [$begin->format('Y-m-d')." 00:00:00", $end->format('Y-m-d')." 23:59:59"])->count();
        }
        $konsultasis = PesanKonsultasi::get();
        $rasio_masuk = ($datas_success > 0 && $total_masuk > 0)?($datas_success / $total_masuk) * 100:0;
        return response()->view('Konsultasi.index', [
            'datas' => $datas,
            'datas_process' => $datas_process,
            'datas_success' => $datas_success,
            'datas_sudah_direspon' => $datas_sudah_direspon,
            'request' => $request,
            'pesan_konsultasis' => $konsultasis,
            'periode' => $periode,
            'total_masuk' => $total_masuk,
            'rasio_masuk' => $rasio_masuk
        ]);
    }
    // public function edit($id)
    // {
    //     $datas = Konsultasi::find($id);
    //     return response()->view('konsultasi.edit', ['data' => $datas]);
    // }
    // public function create()
    // {
    //     return response()->view('kopnsultasi.create');
    // }
    //
    public function store(Request $request)
    {

        DB::beginTransaction();
        try {
            $request->validate([
                'nama_pelanggan' => 'required',
                'telp_pelanggan' => 'required',
                'kota_kecamatan_pelanggan' => 'required',
                'alamat_pelanggan' => 'required',
                'merk_hp' => 'required',
                'tipe_hp' => 'required',
                'keluhan' => 'required',
            ]);
            $findPelanggan = Pelanggan::where('telp_pelanggan', $request->telp_pelanggan)->first();
            if ($findPelanggan) {
                $parts = explode('/', $request->kota_kecamatan_pelanggan);
                $kecamatan = isset($parts[1]) ? trim($parts[1]) : null;

                $findPelanggan->update([
                    'nama_pelanggan' => $request->nama_pelanggan,
                    'telp_pelanggan' => $request->telp_pelanggan,
                    'kecamatan_pelanggan' => $kecamatan,
                    'alamat_pelanggan' => $request->alamat_pelanggan,
                    'pengguna_id' => 0

                ]);
            } else {
                $parts = explode('/', $request->kota_kecamatan_pelanggan);
                $kecamatan = isset($parts[1]) ? trim($parts[1]) : null;

                $pelanggan = Pelanggan::create([
                    'nama_pelanggan' => $request->nama_pelanggan,
                    'telp_pelanggan' => $request->telp_pelanggan,
                    'kecamatan_pelanggan' => $kecamatan,
                    'alamat_pelanggan' => $request->alamat_pelanggan,
                    'pengguna_id' => 0
                ]);
                $pelanggan->save();
            }
            $datas = [
                'no_konsultasi' => "K-" . date("his"),
                'nama_pelanggan' => $request->nama_pelanggan,
                'telp_pelanggan' => $request->telp_pelanggan,
                'kota_kecamatan_pelanggan' => $request->kota_kecamatan_pelanggan,
                'alamat_pelanggan' => $request->alamat_pelanggan,
                'merk_hp' => $request->merk_hp,
                'tipe_hp' => $request->tipe_hp,
                'keluhan' => $request->keluhan,
                'status' => 0,
                'status_penyelesaian' => "Process",
            ];
            $landing = landing_content_manager::first();
            $message = $landing->message;
            $placeholders = [
                '{ nama_pelanggan }',
                '{ no_wa }',
                '{ kota/kecamatan }',
                '{ tipeHp }',
                '{ merk }',
                '{ masalah }',
                '{ no_konsultasi }',

            ];

            $replacements = [
                $request->nama_pelanggan,
                $request->telp_pelanggan,
                $request->kota_kecamatan_pelanggan,
                $request->tipe_hp,
                $request->merk_hp,
                $request->keluhan,
                $datas['no_konsultasi']

            ];

            $pesan_custom = str_replace($placeholders, $replacements, $message);
            $isi_pesan = $pesan_custom;
            \Helper::sendWa($request->telp_pelanggan, $isi_pesan);
            konsultasi::create($datas);
            DB::commit();
            return redirect()->away(
                'https://wa.me/' . '628' . substr(\Helper::profileToko()->kontak, 2) . '?text=' .
                    urlencode(
                        "---*Konsultasi HP*---\n" .
                            "Nama : " . $request->nama_pelanggan . "\n" .
                            "No Telp : " . $request->telp_pelanggan . "\n" .
                            "Kota Kecamatan : " . $request->kota_kecamatan_pelanggan . "\n" .
                            "Merk Hp : " . $request->tipe_hp . " (" . $request->merk_hp . ")\n" .
                            "Alamat : " . $request->alamat_pelanggan . "\n" .
                            "Konsultasi : " . $request->keluhan
                    )
            );
        } catch (\Throwable $th) {
            DB::rollback();
            dd($th->getMessage());
            return redirect()->route('home')->with('error', 'Pastikan data yang anda masukan benar!');
        }
    }
    // public function update(Request $request, $id)
    // {
    //     DB::beginTransaction();
    //     try {
    //         $request->validate([
    //             'photo' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048'
    //         ]);

    //         $konsultasi = konsultasi::find($id);


    //         if ($request->hasFile('photo')) {


    //             $photo_file = $request->file('photo');
    //             $photo_ekstensi = $photo_file->extension();
    //             $photo_baru = "photo-" . date('ymdhis') . ".$photo_ekstensi";
    //             $photo_file->move(public_path('images/konsultasi'), $photo_baru);
    //             $data['photo'] = $photo_baru;
    //             $photo_lama = $konsultasi->photo;
    //             File::delete(public_path('images/konsultasi') . "/" . $photo_lama);
    //         } else {
    //             return redirect()->route('konsultasi.index')->with('error', "Masukan Foto terlebih dahulu!");
    //         }

    //         $konsultasi->update($data);
    //         DB::commit();
    //         return redirect()->route('konsultasi.index')->with('success', 'Profil berhasil diubah');
    //     } catch (\Throwable $th) {
    //         DB::rollback();
    //         return redirect()->route('konsultasi.index')->with('error', $th->getMessage());
    //     }
    // }

    public function status($id)
    {
        DB::beginTransaction();
        try {
            $konsultasi = Konsultasi::find($id);

            $status = ['status' => 0];
            if ($konsultasi->status = 0) {
                $status['status'] = 1;
            } else {
                $status['status'] = 1;
            }

            $konsultasi->update($status);

            DB::commit();
            return redirect()->route('konsultasi.index')->with('success', 'konsultasi berhasil dihapus');
        } catch (\Throwable $th) {
            DB::rollback();
            return redirect()->route('konsultasi.index')->with('error', 'Item gagal dihapus');
        }
    }
    public function status_penyelesaian(Request $request, string $id)
    {
        DB::beginTransaction();
        try {
            $konsultasi = Konsultasi::find($id);
            // Pastikan $konsultasi ditemukan
            if (!$konsultasi) {
                DB::rollBack();
                return redirect()->route('konsultasi.index')->with('error', 'Data konsultasi tidak ditemukan.');
            }

            $status = [];

            // Periksa status dari request
            if ($request->status === "Sudah Direspon") {
                $status['status_penyelesaian'] = 'Sudah Direspon';
                $pesan_otomatis = pesanKonsultasi::where('status', 'sudah_direspon')->get();
                if (isset($pesan_otomatis)) {
                    foreach ($pesan_otomatis as $item) {

                        // replace autotext
                        $placeholders = [
                            '{ nama_pelanggan }',
                        ];

                        $replacements = [
                         $konsultasi->nama_pelanggan
                        ];

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


                        // waktu
                        $datetimes = now()->addHours(7);

                        if ($item->satuan_waktu == 'hari') {
                            $datetimes = $datetimes->addDays($item->jumlah_waktu);
                        } elseif ($item->satuan_waktu == 'bulan') {
                            $datetimes = $datetimes->addMonths($item->jumlah_waktu);
                        } elseif ($item->satuan_waktu == 'tahun') {
                            $datetimes = $datetimes->addYears($item->jumlah_waktu);
                        }

                        $carbonDate = Carbon::parse($item->jam);
                        $jam = $carbonDate->subHours(1);
                        list($hours, $minutes) = explode(':', $jam->format('H:i'));
                        $datetimes = $datetimes->setTime($hours, $minutes);
                        $nomor_telepon = $konsultasi->telp_pelanggan;
                        $nomor_whatsapp = "+628" . substr($nomor_telepon, 2);

                        $id_pesan = \Helper::SchaduleMessage($nomor_whatsapp, $pesan_custom, $datetimes->format('Y-m-d H:i'));
                        $id_pesans[] = $id_pesan;



                        foreach ($id_pesans as $pesan_id) {

                            $pesan_otomatis = [
                                'id_pesan' => $id_pesan,
                                'id_service' => $konsultasi->id,
                                'status_batal' => $item->status_batal

                            ];
                            PesanOtomatis::create($pesan_otomatis);
                        }
                    }
                }
            } elseif ($request->status === "Service Masuk") {
                $status['status_penyelesaian'] = 'Service Masuk';
                $pesan_otomatis = pesanKonsultasi::where('status', 'service_masuk')->get();
                if (isset($pesan_otomatis)) {
                    foreach ($pesan_otomatis as $item) {

                        // replace autotext
                        $placeholders = [
                            '{ nama_pelanggan }',
                        ];

                        $replacements = [
                         $konsultasi->nama_pelanggan
                        ];

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


                        // waktu
                        $datetimes = now()->addHours(7);

                        if ($item->satuan_waktu == 'hari') {
                            $datetimes = $datetimes->addDays($item->jumlah_waktu);
                        } elseif ($item->satuan_waktu == 'bulan') {
                            $datetimes = $datetimes->addMonths($item->jumlah_waktu);
                        } elseif ($item->satuan_waktu == 'tahun') {
                            $datetimes = $datetimes->addYears($item->jumlah_waktu);
                        }

                        $carbonDate = Carbon::parse($item->jam);
                        $jam = $carbonDate->subHours(1);
                        list($hours, $minutes) = explode(':', $jam->format('H:i'));
                        $datetimes = $datetimes->setTime($hours, $minutes);
                        $nomor_telepon = $konsultasi->telp_pelanggan;
                        $nomor_whatsapp = "+628" . substr($nomor_telepon, 2);

                        $id_pesan = \Helper::SchaduleMessage($nomor_whatsapp, $pesan_custom, $datetimes->format('Y-m-d H:i'));
                        $id_pesans[] = $id_pesan;



                        foreach ($id_pesans as $pesan_id) {

                            $pesan_otomatis = [
                                'id_pesan' => $id_pesan,
                                'id_service' => $konsultasi->id,
                                'status_batal' => $item->status_batal

                            ];
                            PesanOtomatis::create($pesan_otomatis);
                        }
                    }
                }

                $parts = explode('/', $konsultasi->kota_kecamatan_pelanggan);
                $kecamatan_pelanggan = isset($parts[1]) ? trim($parts[1]) : null;
                $merk = Merk::where('jenis_merk', 2)->get();


                $data = [
                    'data_konsultasi' => $konsultasi,
                    'merk' => $merk
                ];
                $data['list_kerusakan'] = $this->list_kerusakan;
                $data['list_kelengkapan'] = $this->list_kelengkapan;
                $data['tokos'] = auth()->user()->role->tokos;

                $konsultasi->update($status);
                
                DB::commit();
                return response()->view('service.guest', $data);
            } elseif ($request->status === "Process") {
                $status['status_penyelesaian'] = 'Process';
                $pesan_otomatis = pesanKonsultasi::where('status', 'Process')->get();
                if (isset($pesan_otomatis)) {
                    foreach ($pesan_otomatis as $item) {

                        // replace autotext
                        $placeholders = [
                            '{ nama_pelanggan }',
                        ];

                        $replacements = [
                         $konsultasi->nama_pelanggan
                        ];

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


                        // waktu
                        $datetimes = now()->addHours(7);

                        if ($item->satuan_waktu == 'hari') {
                            $datetimes = $datetimes->addDays($item->jumlah_waktu);
                        } elseif ($item->satuan_waktu == 'bulan') {
                            $datetimes = $datetimes->addMonths($item->jumlah_waktu);
                        } elseif ($item->satuan_waktu == 'tahun') {
                            $datetimes = $datetimes->addYears($item->jumlah_waktu);
                        }

                        $carbonDate = Carbon::parse($item->jam);
                        $jam = $carbonDate->subHours(1);
                        list($hours, $minutes) = explode(':', $jam->format('H:i'));
                        $datetimes = $datetimes->setTime($hours, $minutes);
                        $nomor_telepon = $konsultasi->telp_pelanggan;
                        $nomor_whatsapp = "+628" . substr($nomor_telepon, 2);

                        $id_pesan = \Helper::SchaduleMessage($nomor_whatsapp, $pesan_custom, $datetimes->format('Y-m-d H:i'));
                        $id_pesans[] = $id_pesan;



                        foreach ($id_pesans as $pesan_id) {

                            $pesan_otomatis = [
                                'id_pesan' => $id_pesan,
                                'id_service' => $konsultasi->id,
                                'status_batal' => $item->status_batal

                            ];
                            PesanOtomatis::create($pesan_otomatis);
                        }
                    }
                }
            } else {
                DB::rollBack();
                return redirect()->route('konsultasi.index')->with('error', 'Status tidak valid.');
            }

            // Update status
            $konsultasi->update($status);

            DB::commit();
            return redirect()->route('konsultasi.index')->with('success', 'Status berhasil diubah.');
        } catch (\Exception $e) {
            DB::rollBack();
            return redirect()->route('konsultasi.index')->with('error', 'Terjadi kesalahan: ' . $e->getMessage());
        }
    }
    public function destroy(String $id)
    {
        DB::beginTransaction();
        try {
            $konsultasi = Konsultasi::find($id);
            $konsultasi->delete();
            DB::commit();
            return redirect()->route('konsultasi.index')->with('success', 'konsultasi berhasil dihapus');
        } catch (\Throwable $th) {
            DB::rollback();
            return redirect()->route('konsultasi.index')->with('error', 'Item gagal dihapus');
        }
    }


    public function pesanKonsultasi(String $id, String $idPesan)
    {
        $konsultasi = Konsultasi::find($id);
        $pesan = PesanKonsultasi::find($idPesan);


        $placeholders = [
            '{ nama_pelanggan }',
            '{ kerusakan }',
        ];

        $replacements = [
            $konsultasi->nama_pelanggan,
            $konsultasi->kerusakan,
        ];

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


        if ($konsultasi->follow_up == '') {
            $konsultasi->update(['follow_up' => $idPesan . ',']);
        } else {

            $konsultasi->update(['follow_up' => $konsultasi->follow_up . $idPesan . ',']);
        }



        $nomor_telepon = $konsultasi->telp_pelanggan;
        $nomor_whatsapp = "+628" . substr($nomor_telepon, 2);

        $kirimPesan = \Helper::sendWa($nomor_whatsapp, $isi_pesan);
        if ($kirimPesan) {
            return redirect(route("konsultasi.index"))->with('success', 'pesan berhasil dikirim ');
        } else {
            return redirect(route("konsultasi.index"))->with('error', 'pesan Gagal dikirim ');
        }
    }
}

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