diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 7812906..8afb953 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -2,12 +2,15 @@ namespace App\Http\Controllers; +use App\Mail\NotifikasiCustomer; +use App\Mail\NotifikasiPembayaran; use App\Models\Karbohidrat; use App\Models\Order; use App\Models\OrderDetail; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Mail; use Illuminate\Support\Str; class CustomerController extends Controller @@ -255,7 +258,8 @@ class CustomerController extends Controller $payloadOrderDetail['jumlah'] = $value['jumlah']; $payloadOrderDetail['tgl_antar'] = $value['tgl']; $payloadOrderDetail['type'] = $value['kategoriPemesanan']; - $payloadOrderDetail['karbohidrat_id'] = $value['karbohidrat_id']; + $payloadOrderDetail['karbohidrat_id'] = $value['karbohidrat_id'] ?? null; + $payloadOrderDetail['catatan'] = $value['catatan'] ?? null; if($cart['jenis_menu'] === "paket"){ $payloadOrderDetail['master_paket_menu_id'] = $cart['id_menu']; }else{ @@ -265,7 +269,9 @@ class CustomerController extends Controller } } //code... - + if($order->email){ + Mail::to($order->email)->queue(new NotifikasiCustomer($order->nama_pemesan, $order->no_order, $order->total_harga)); + } DB::commit(); return response()->json([ 'status' => true, @@ -319,6 +325,9 @@ class CustomerController extends Controller // Update data order $order->update($payload); + if($order->email){ + Mail::to($order->email)->queue(new NotifikasiPembayaran($order->nama_pemesan, $order->no_order)); + } DB::commit(); session()->flash('payment_success', true); session()->flash('no_order', $noOrder); @@ -328,7 +337,6 @@ class CustomerController extends Controller ], 200); return back()->with('success', 'Bukti pembayaran berhasil diunggah.'); } catch (\Throwable $th) { - dd($th); DB::rollBack(); return response([ 'status' => false, diff --git a/app/Http/Controllers/PesananController.php b/app/Http/Controllers/PesananController.php index 3c9609a..b290dd9 100644 --- a/app/Http/Controllers/PesananController.php +++ b/app/Http/Controllers/PesananController.php @@ -2,12 +2,15 @@ namespace App\Http\Controllers; +use App\Mail\NotifikasiKonfirmasiPembayaran; use App\Models\Order; use App\Models\OrderDetail; +use Barryvdh\DomPDF\Facade\Pdf; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Arr; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Mail; class PesananController extends Controller { @@ -86,6 +89,11 @@ class PesananController extends Controller $payload['note_dibatalkan'] = request('note_dibatalkan'); } $order->update($payload); + + if($order->email){ + Mail::to($order->email)->queue(new NotifikasiKonfirmasiPembayaran($order->nama_pemesan, $order->no_order, $order->total_harga)); + } + DB::connection('dbOrderGizi')->commit(); return response()->json([ 'status' => true, @@ -113,6 +121,10 @@ class PesananController extends Controller 'cara_pembayaran' => 'Billing' ]; $order->update($payload); + + if($order->email){ + Mail::to($order->email)->queue(new NotifikasiKonfirmasiPembayaran($order->nama_pemesan, $order->no_order, $order->total_harga)); + } DB::connection('dbOrderGizi')->commit(); return response()->json([ 'status' => true, @@ -239,6 +251,80 @@ class PesananController extends Controller 'data' => $data ]); } + + public function exportPekerjaan(){ + $startDate = request('start_date'); + $endDate = request('end_date'); + $now = Carbon::now()->format('Y-m-d H-i'); + $orderDetail = OrderDetail::with(['menu', 'paketMenu', 'order'])->whereHas('order', function($q){ + $q->where('status_order', 'Lunas'); + })->whereBetween('tgl_antar', [$startDate, $endDate])->get(); + $waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y'); + $startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y'); + $endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y'); + $data = [ + 'pekerjaan' => $orderDetail, + 'waktu_cetak' => $waktu_cetak, + 'startDate' => $startDateFormatted, + 'endDate' => $endDateFormatted + ]; + $pdf = Pdf::loadView('dashboard.pesanan.pekerjaan.pdf', $data); + return $pdf->stream("daftar-pesanan-{$now}.pdf"); + } + + + public function exportPending(){ + $startDate = Carbon::parse(request('start_date'))->startOfDay(); + $endDate = Carbon::parse(request('end_date'))->endOfDay(); + $order = Order::where('statusenabled', true) + ->whereBetween('entry_at', [$startDate, $endDate]) + ->with('orderDetail') + ->whereHas('orderDetail', function($q) { + $q->where('status_order', '!=', 'Selesai'); + }) + ->get(); + $startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y'); + $endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y'); + $waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y'); + + $data = [ + 'waktu_cetak' => $waktu_cetak, + 'orders' => $order, + 'startDate' => $startDateFormatted, + 'endDate' => $endDateFormatted + ]; + $pdf = Pdf::loadView('dashboard.pesanan.pending.pdf', $data); + + return $pdf->stream('laporan-pesanan-' . now()->format('Ymd-His') . '.pdf'); + } + + public function exportSelesai(){ + $startDate = Carbon::parse(request('start_date'))->startOfDay(); + $endDate = Carbon::parse(request('end_date'))->endOfDay(); + + $order = Order::where('statusenabled', true) + ->whereBetween('entry_at', [$startDate, $endDate]) + ->with('orderDetail') + ->whereHas('orderDetail') // hanya order yang punya detail + ->whereDoesntHave('orderDetail', function($q) { + $q->where('status_order', '!=', 'Selesai'); + }) + ->get(); + + $startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y'); + $endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y'); + $waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y'); + + $data = [ + 'waktu_cetak' => $waktu_cetak, + 'orders' => $order, + 'startDate' => $startDateFormatted, + 'endDate' => $endDateFormatted + ]; + $pdf = Pdf::loadView('dashboard.pesanan.selesai.pdf', $data); + + return $pdf->stream('laporan-pesanan-' . now()->format('Ymd-His') . '.pdf'); + } /** * Show the form for creating a new resource. */ diff --git a/app/Mail/NotifikasiCustomer.php b/app/Mail/NotifikasiCustomer.php new file mode 100644 index 0000000..5cad41a --- /dev/null +++ b/app/Mail/NotifikasiCustomer.php @@ -0,0 +1,73 @@ +pemesan = $pemesan; + $this->noOrder = $noOrder; + $this->total_harga = $total_harga; + } + + /** + * Get the message content definition. + */ + public function build(){ + return $this->subject('Konfirmasi Pesanan Anda')->html(" +
Halo, {$this->pemesan},
+Terima kasih telah melakukan pemesanan. Berikut detail pesanan Anda:
+ +| No. Order | +{$this->noOrder} | +
| Tanggal | +" . now()->format('d M Y H:i') . " | +
| Status | +Menunggu Pembayaran | +
| Nominal Harus Bayar | +Rp ". number_format($this->total_harga, 0,',', '.') + ." | +
Silakan segera lakukan pembayaran ke rekening berikut:
+Jika Anda tidak merasa melakukan pesanan ini, abaikan email ini.
+ +© " . date('Y') . " RSAB Harapan Kita
+Halo, {$this->pemesan},
+Pembayaran kamu untuk pesanan #{$this->noOrder} telah berhasil kami verifikasi.
+ +| Nomor Order | +{$this->noOrder} | +
| Total Pembayaran | +Rp " . number_format($this->total_harga, 0, ',', '.') . " | +
| Status | +Pembayaran Diterima | +
Pesanan kamu sedang kami proses. Silakan tunggu pemberitahuan berikutnya untuk pengambilan makanan.
+ +© " . date('Y') . " RSAB Harapan Kita
+Halo, {$this->pemesan},
+Kami telah menerima bukti pembayaran untuk pesanan kamu dengan nomor {$this->noOrder}.
+Tim kami akan segera memverifikasi pembayaran tersebut.
+ +Mohon tunggu konfirmasi selanjutnya dari admin. Kami akan kirimkan email ketika pembayaran telah diverifikasi.
+ +Terima kasih telah melakukan pemesanan.
+ +© " . date('Y') . " RSAB Harapan Kita
+
| No | +Nama Pemesan | +Status Order | +Tanggal Antar | +Waktu Pemesanan | +Menu | +Keterangan | +Jumlah | +Harga Satuan (Rp) | +
|---|---|---|---|---|---|---|---|---|
| {{ $i + 1 }} | +
+ {{ $row['order']['nama_pemesan'] ?? '-' }}
+ @if (!empty($row['order']['jenis_customer']))
+ ({{ $row['order']['jenis_customer'] }}) + @endif + |
+ {{ $row['status_order'] ?? '-' }} | ++ {{ isset($row['tgl_antar']) + ? \Carbon\Carbon::parse($row['tgl_antar'])->locale('id')->translatedFormat('d F Y') + : '-' }} + | +{{ $row['type'] ?? '-' }} | +{{ $row['menu']['nama_menu'] ?? '-' }} | +
+ @php
+ $jenis = strtolower($row['order']['jenis_customer'] ?? '');
+ @endphp
+ @if ($jenis === 'keluarga pasien / penunggu pasien')
+ Nama Pasien: {{ $row['order']['nama_pasien'] ?? '-' }} + Ruang: {{ $row['order']['ruang_perawatan'] ?? '-' }} / {{ $row['order']['no_kamar_perawatan'] ?? '-' }} + Kelas: {{ $row['order']['kelas_perawatan'] ?? '-' }} + @elseif ($jenis === 'masyarakat umum') + {{ $row['order']['alamat'] ?? '-' }} + @elseif ($jenis === 'karyawan rsab harapan kita') + Bagian: {{ $row['order']['bagian_instalasi'] ?? '-' }} + Ext: {{ $row['order']['no_ekstensien'] ?? '-' }} + @else + - + @endif + |
+ {{ $row['jumlah'] ?? 0 }} | +{{ number_format($row['harga_satuan'], 0, ',', '.') }} | +
| Tidak ada data | +||||||||
| No | +No Order | +Nama Pemesan | +Menu | +Status Order | +Jumlah | +Harga Satuan (Rp) | +Tanggal Antar | +Waktu | +
|---|---|---|---|---|---|---|---|---|
| {{ $i === 0 ? $no++ : '' }} | +{{ $i === 0 ? $order->no_order : '' }} | +
+ @if ($i === 0)
+ {{ $order->nama_pemesan }}
+ @if ($order->jenis_customer)
+ ({{ $order->jenis_customer }}) + @endif + @endif + |
+ {{ $detail->menu->nama_menu ?? '-' }} | +{{ $detail->status_order ?? '-' }} | +{{ $detail->jumlah }} | +{{ number_format($detail->harga_satuan, 0, ',', '.') }} | ++ {{ $detail->tgl_antar + ? \Carbon\Carbon::parse($detail->tgl_antar)->locale('id')->translatedFormat('d F Y') + : '-' }} + | +{{ $detail->type }} | +
| Tidak ada data pesanan | +||||||||
| No | +No Order | +Nama Pemesan | +Menu | +Status Order | +Jumlah | +Harga Satuan (Rp) | +Tanggal Antar | +Waktu | +
|---|---|---|---|---|---|---|---|---|
| {{ $i === 0 ? $no++ : '' }} | +{{ $i === 0 ? $order->no_order : '' }} | +
+ @if ($i === 0)
+ {{ $order->nama_pemesan }}
+ @if ($order->jenis_customer)
+ ({{ $order->jenis_customer }}) + @endif + @endif + |
+ {{ $detail->menu->nama_menu ?? '-' }} | +{{ $detail->status_order ?? '-' }} | +{{ $detail->jumlah }} | +{{ number_format($detail->harga_satuan, 0, ',', '.') }} | ++ {{ $detail->tgl_antar + ? \Carbon\Carbon::parse($detail->tgl_antar)->locale('id')->translatedFormat('d F Y') + : '-' }} + | +{{ $detail->type }} | +
| Tidak ada data pesanan | +||||||||