orderBy('id', 'desc') ->whereIn('id', function ($query) { $query->select(DB::raw('MAX(id)')) ->from('data_ibu_hamil') ->groupBy('nama_ibu', 'nama_ayah'); }) ->get(); return view('pages.data_laporan.index', [ "title" => "Data Laporan", "heading" => "Data Laporan", 'dataIbuHamil' => $dataIbuHamil, ]); } public function destroy($id) { // Mencari data dari tabel data ibu hamil berdasarkan id yang didapat $data = DataIbuHamil::findOrFail($id); // Mengambil seluruh data nama ibu dan nama ayah dan disimpan ke variabel sameNameData $sameNameData = DataIbuHamil::where('nama_ibu', $data->nama_ibu) ->where('nama_ayah', $data->nama_ayah) ->get(); // Memasukkan id yang diambil dari variabel $sameNameData dan dijadikan array $sameNameIds = $sameNameData->pluck('id')->toArray(); // Menghapus data balita berdasarkan id yang dimasukkan ke array DataBalita::where('ibu_hamil_id', $sameNameIds)->delete(); // Menghapus data Ibu Hamil berdasarkan nama ibu dan ayah DataIbuHamil::where([ 'nama_ibu' => $data->nama_ibu, 'nama_ayah' => $data->nama_ayah ])->delete(); // Setelah proses penghapusan berhasil maka akan diarahkan ke halaman /data_pasien return redirect('/data_pasien')->with('success', 'Data Ibu ' . $data->nama_ibu . ' Berhasil Dihapus'); } public function preview($id) { // Mencari data dari model DataIbuHamil berdasarkan id yang didapat $prev = DataIbuHamil::findOrFail($id); // Mencari data ibuhamil dari model DataIbuHamil berdasarkan nama ibu dan nama ayah dengan $prev $status_hamil = DataIbuHamil::where([ 'nama_ibu' => $prev->nama_ibu, 'nama_ayah' => $prev->nama_ayah ])->get(); // Mencari data balita dari model DataBalita berdasarkan nama ibu hamil id $data_balita = DataBalita::where('ibu_hamil_id', $id)->get(); // Cari data dengan nama_ibu dan nama_ayah yang sama dengan $prev $sameNameData = DataIbuHamil::where('nama_ibu', $prev->nama_ibu) ->where('nama_ayah', $prev->nama_ayah) ->get(); // Ambil ID dari semua data yang memiliki nama_ibu dan nama_ayah yang sama lalu dimasukkan ke array $sameNameIds = $sameNameData->pluck('id')->toArray(); // Hitung total balita berdasarkan ibu_hamil_id yang ditemukan dan yang tidak memiliki status 'Belum Dilahirkan' $total_balita = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->whereNotIn('status', ['Belum Dilahirkan']) ->count(); // Hitung total balita meninggal berdasarkan ibu_hamil_id yang ditemukan dan yang memiliki status 'Meninggal' $total_balita_meninggal = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->where('status', 'Meninggal') ->count(); // Mengambil data nama balita berdasarkan ibu_hamil_id yang ditemukan dan yang tidak memiliki status 'Belum Dilahirkan' $nama_balita = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->whereNotIn('status', ['Belum Dilahirkan']) ->get(); return view('pages.data_laporan.action.preview', [ "title" => "Data Laporan Preview", "heading" => "Data Profile", "data" => $prev, "heading2" => "Profile Ibu", "jumlah_anak" => $total_balita, "data_bayi" => $data_balita, "data_balita" => $nama_balita, "jumlah_balita_meninggal" => $total_balita_meninggal, "status_hamil" => $status_hamil, ]); } public function update_ibu_hamil(Request $request, $id) { $data = DataIbuHamil::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'min' => 'Kolom :attribute minimal harus :min karakter.', 'max' => 'Kolom :attribute maksimal harus :max karakter.', 'unique' => ':attribute telah terdaftar', ]; $validatedData = $request->validate([ 'nik_ibu' => [ 'required', 'max:255', // Rule::unique('data_ibu_hamil')->ignore($id), ], 'nama_ibu' => 'required|max:255', 'tanggal_lahir_ibu' => 'required|max:255', 'tanggal_lahir_ayah' => 'required|max:255', // 'umur_ibu' => 'required|max:255', 'nama_ayah' => 'required|max:255', // 'umur_ayah' => 'required|max:255', 'alamat' => 'required|max:255', 'status_ibu' => 'required|max:255', 'status_ayah' => 'required|max:255', ], $customMessages); if ($request->nik_ibu !== $data->nik_ibu) { $request->validate([ 'nik_ibu' => [ Rule::unique('data_ibu_hamil'), ], ], ['nik_ibu.unique' => 'NIK Ibu telah terdaftar']); } $nama_ibu = $data->nama_ibu; $nama_ayah = $data->nama_ayah; $tanggalLahirIbu = Carbon::parse($request->input('tanggal_lahir_ibu')); $usiaIbu = $tanggalLahirIbu->diffInYears(Carbon::now()); $tanggalLahirAyah = Carbon::parse($request->input('tanggal_lahir_ayah')); $usiaAyah = $tanggalLahirAyah->diffInYears(Carbon::now()); $validatedData['umur_ayah'] = $usiaAyah; $validatedData['umur_ibu'] = $usiaIbu; DataIbuHamil::where('nama_ibu', $nama_ibu) ->where('nama_ayah', $nama_ayah) ->update($validatedData); return redirect('/data_pasien/' . $id)->with('success', 'Biodata Ibu ' . $data->nama_ibu . ' Berhasil di Update'); } public function destroy_hamil_ke($id) { // Mencari data dari tabel data ibu hamil berdasarkan id yang didapat $data = DataIbuHamil::findOrFail($id); // Menghapus data balita berdasarkan id yang didapat dari $data DataBalita::where('ibu_hamil_id', $data->id)->delete(); // Menghapus data Ibu Hamil berdasarkan nama ibu dan ayah yang didapat dari $data DataIbuHamil::where('id', $data->id)->delete(); // Setelah proses penghapusan berhasil maka akan diarahkan ke halaman /data_pasien return redirect('/data_pasien/')->with('success', 'Data hamil ke ' . $data->anak_ke . ' dari Ibu ' . $data->nama_ibu . ' Berhasil Dihapus'); } public function destroy_status_ibu_hamil($id) { // Mencari data dari tabel data ibu hamil berdasarkan id yang didapat $data = DataPeriksaIbuHamil::findOrFail($id); // Menghapus data balita berdasarkan id yang didapat dari $data DataPeriksaIbuHamil::where('id', $data->id)->delete(); // Setelah proses penghapusan berhasil maka akan diarahkan ke halaman /data_pasien return redirect('/data_pasien/' . $data->ibu_hamil_id . '/laporan_ibu_hamil')->with('success', 'Data hamil ke ' . $data->anak_ke . ' dari Ibu ' . $data->nama_ibu . ' Berhasil Dihapus'); } public function update_ibu_hamilv2(Request $request, $id) { $data = DataIbuHamil::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'min' => 'Kolom :attribute minimal harus :min karakter.', 'max' => 'Kolom :attribute maksimal harus :max karakter.', 'unique' => ':attribute telah terdaftar', ]; $validatedData = $request->validate([ 'nik_ibu' => [ 'required', 'max:255', // Rule::unique('data_ibu_hamil')->ignore($id), ], 'nama_ibu' => 'required|max:255', 'tanggal_lahir_ibu' => 'required|max:255', 'tanggal_lahir_ayah' => 'required|max:255', // 'umur_ibu' => 'required|max:255', 'nama_ayah' => 'required|max:255', // 'umur_ayah' => 'required|max:255', 'alamat' => 'required|max:255', 'status_ibu' => 'required|max:255', 'status_ayah' => 'required|max:255', ], $customMessages); if ($request->nik_ibu !== $data->nik_ibu) { $request->validate([ 'nik_ibu' => [ Rule::unique('data_ibu_hamil'), ], ], ['nik_ibu.unique' => 'NIK Ibu telah terdaftar']); } $nama_ibu = $data->nama_ibu; $nama_ayah = $data->nama_ayah; $tanggalLahirIbu = Carbon::parse($request->input('tanggal_lahir_ibu')); $usiaIbu = $tanggalLahirIbu->diffInYears(Carbon::now()); $tanggalLahirAyah = Carbon::parse($request->input('tanggal_lahir_ayah')); $usiaAyah = $tanggalLahirAyah->diffInYears(Carbon::now()); $validatedData['umur_ayah'] = $usiaAyah; $validatedData['umur_ibu'] = $usiaIbu; DataIbuHamil::where('nama_ibu', $nama_ibu) ->where('nama_ayah', $nama_ayah) ->update($validatedData); return redirect('/data_pasien/' . $id . '/laporan_ibu_hamil')->with('success', 'Biodata Ibu ' . $data->nama_ibu . ' Berhasil di Update'); } public function update_ibu_hamilv3(Request $request, $id) { $data = DataBalita::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'max' => 'Kolom :attribute maksimal harus :max karakter.', 'unique' => ':attribute telah terdaftar', ]; $validatedData = $request->validate([ 'nik_ibu' => [ 'required', 'max:255', // Rule::unique('data_ibu_hamil')->ignore($id), ], 'nama_ibu' => 'required|max:255', 'tanggal_lahir_ibu' => 'required|max:255', 'tanggal_lahir_ayah' => 'required|max:255', // 'umur_ibu' => 'required|max:255', 'nama_ayah' => 'required|max:255', // 'umur_ayah' => 'required|max:255', 'alamat' => 'required|max:255', 'status_ibu' => 'required|max:255', 'status_ayah' => 'required|max:255', ], $customMessages); if ($request->nik_ibu !== $data->details->nik_ibu) { $request->validate([ 'nik_ibu' => [ Rule::unique('data_ibu_hamil'), ], ], ['nik_ibu.unique' => 'NIK Ibu telah terdaftar']); } $nama_ibu = $data->details->nama_ibu; $nama_ayah = $data->details->nama_ayah; $tanggalLahirIbu = Carbon::parse($request->input('tanggal_lahir_ibu')); $usiaIbu = $tanggalLahirIbu->diffInYears(Carbon::now()); $tanggalLahirAyah = Carbon::parse($request->input('tanggal_lahir_ayah')); $usiaAyah = $tanggalLahirAyah->diffInYears(Carbon::now()); $validatedData['umur_ayah'] = $usiaAyah; $validatedData['umur_ibu'] = $usiaIbu; DataIbuHamil::where('nama_ibu', $nama_ibu) ->where('nama_ayah', $nama_ayah) ->update($validatedData); return redirect('/data_pasien/' . $id . '/laporan_data_balita')->with('success', 'Biodata Ibu ' . $data->nama_ibu . ' Berhasil di Update'); } public function preview_status_ibu_hamil($id) { $prev = DataIbuHamil::findOrFail($id); $status_periksa_ibu_hamil = DataPeriksaIbuHamil::where('ibu_hamil_id', $id)->get(); $data_balita = DataBalita::where('ibu_hamil_id', $id)->get(); // Cari data dengan nama_ibu dan nama_ayah yang sama dengan $prev $sameNameData = DataIbuHamil::where('nama_ibu', $prev->nama_ibu) ->where('nama_ayah', $prev->nama_ayah) ->get(); // Ambil ID dari semua data yang memiliki nama_ibu dan nama_ayah yang sama $sameNameIds = $sameNameData->pluck('id')->toArray(); // Hitung total balita berdasarkan ibu_hamil_id yang ditemukan $total_balita = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->whereNotIn('status', ['Belum Dilahirkan']) ->count(); $total_balita_meninggal = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->where('status', 'Meninggal') ->count(); return view('pages.data_laporan.laporan_status_hamil.index', [ "title" => "Data Laporan Preview", "heading" => "Data Profile", "data" => $prev, "heading2" => "Profile Ibu", "jumlah_anak" => $total_balita, "data_bayi" => $data_balita, "jumlah_balita_meninggal" => $total_balita_meninggal, "data_vitamin" => DataObat::all(), "status_ibu_hamil" => $status_periksa_ibu_hamil ]); } public function edit_status_hamil($id) { $prev = DataPeriksaIbuHamil::findOrFail($id)->first(); $prevv2 = DataPeriksaIbuHamil::findOrFail($id); return view('pages.data_laporan.laporan_status_hamil.edit', [ "title" => "Edit Status Hamil", "heading" => "Edit Status Periksa Ibu " . $prev->dataIbuhamil->nama_ibu, "data" => $prevv2, "data_vitamin" => DataObat::all(), ]); } public function store_status_hamil(Request $request, $id) { $data = DataIbuHamil::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'max' => 'Kolom :attribute maksimal harus :max karakter.', ]; $validatedData = $request->validate([ 'anak_ke' => [ 'required', 'max:255', function ($attribute, $value, $fail) use ($request, $data) { $exists = DataIbuHamil::where('nama_ibu', $data->nama_ibu) ->where('nama_ayah', $data->nama_ayah) ->where('anak_ke', $value) ->exists(); if ($exists) { $fail('Anak ke' . $request->anak_ke . ' telah terdaftar.'); } }, ], ], $customMessages); $validatedData['nik_ibu'] = $data->nik_ibu; $validatedData['nama_ibu'] = $data->nama_ibu; $validatedData['tanggal_lahir_ibu'] = $data->tanggal_lahir_ibu; $validatedData['umur_ibu'] = $data->umur_ibu; $validatedData['nama_ayah'] = $data->nama_ayah; $validatedData['umur_ayah'] = $data->umur_ayah; $validatedData['alamat'] = $data->alamat; $validatedData['status_ibu'] = "Hamil"; $validatedData['status_ayah'] = $data->status_ayah; $newData = DataIbuHamil::create($validatedData); $newId = $newData->id; // Menambahkan entri baru ke dalam tabel Data Balita DataBalita::create([ 'status' => 'Belum Dilahirkan', 'ibu_hamil_id' => $newId, ]); return redirect('/data_pasien/' . $newId)->with('success', 'Berhasil Ditambah'); } public function store_status_periksa_hamil(Request $request, $id) { $data = DataIbuHamil::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'max' => 'Kolom :attribute maksimal harus :max', 'integer' => 'Kolom :attribute harus berupa angka.', 'between' => 'Kolom :attribute harus di antara :min Bulan dan :max Bulan.', 'numeric' => 'Kolom :attribute harus berupa angka.', 'max_value' => 'Kolom :attribute maksimal harus :max. anjay', 'unique' => ':attribute ' . $request->usia_hamil . ' Bulan telah melakukan pemeriksaan' ]; $validatedData = $request->validate([ // 'usia_hamil' => [ // 'required', // 'integer', // 'between:1,9', // 'max:255', // function ($attribute, $value, $fail) use ($request, $data) { // $exists = DataPeriksaIbuHamil::where('ibu_hamil_id', $data->id) // ->where('usia_hamil', $value) // ->exists(); // if ($exists) { // $fail('Pada usia hamil ' . $request->usia_hamil . ' bulan telah melakukan pemeriksaan'); // } // }, // ], 'berat_badan' => 'required|numeric|max:200', 'created_at' => 'required', 'tekanan_darah' => 'required|numeric|max:200', 'keluhan' => 'required|max:255', 'vitamin_id' => 'required', ], $customMessages); $currentExaminationDate = new \DateTime($validatedData['created_at']); // Cek apakah ada pemeriksaan lain pada bulan yang sama $existingExamination = DataPeriksaIbuHamil::where('ibu_hamil_id', $id) ->whereYear('created_at', $currentExaminationDate->format('Y')) ->whereMonth('created_at', $currentExaminationDate->format('m')) ->first(); if ($existingExamination) { return redirect()->back()->withErrors(['created_at' => 'Anda sudah melakukan pemeriksaan pada bulan ini'])->withInput(); } $firstExamination = DataPeriksaIbuHamil::where('ibu_hamil_id', $id) ->orderBy('created_at', 'asc') ->first(); $currentExaminationDate = new \DateTime($validatedData['created_at']); if ($firstExamination) { $firstExaminationDate = new \DateTime($firstExamination->created_at); if ($currentExaminationDate < $firstExaminationDate) { return redirect()->back()->withErrors(['created_at' => 'Tanggal pemeriksaan tidak boleh sebelum tanggal pemeriksaan pertama'])->withInput(); } $interval = $firstExaminationDate->diff($currentExaminationDate); $ageOfPregnancy = $interval->m + 1 + ($interval->y * 12); if ($ageOfPregnancy > 9) { return redirect()->back()->withErrors(['created_at' => 'Usia kehamilan tidak boleh lebih dari 9 bulan.'])->withInput(); } } else { $ageOfPregnancy = 1; } $validatedData['ibu_hamil_id'] = $id; $validatedData['user_id'] = 1; $validatedData['usia_hamil'] = $ageOfPregnancy; DataPeriksaIbuHamil::create($validatedData); return redirect('/data_pasien/' . $id . '/laporan_ibu_hamil')->with('success', 'Data Periksa Ibu ' . $data->nama_ibu . ' Berhasil Ditambah'); } public function update_status_periksa_hamil(Request $request, $id) { $data = DataPeriksaIbuHamil::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'max' => 'Kolom :attribute maksimal harus :max ', 'integer' => 'Kolom :attribute harus berupa angka.', 'between' => 'Kolom :attribute harus di antara :min Bulan dan :max Bulan.', 'numeric' => 'Kolom :attribute harus berupa angka.', 'max_value' => 'Kolom :attribute maksimal harus :max. anjay', 'unique' => ':attribute ' . $request->usia_hamil . ' Bulan telah melakukan pemeriksaan' ]; $validatedData = $request->validate([ // 'usia_hamil' => [ // 'required', // 'integer', // 'between:1,9', // ], 'created_at' => 'required', 'berat_badan' => 'required|numeric|max:200', 'tekanan_darah' => 'required|numeric|max:200', 'keluhan' => 'required|max:255', 'vitamin_id' => 'required', ], $customMessages); // $exists = DB::table('data_pemeriksaan_ibu_hamil') // ->where('usia_hamil', $request->usia_hamil) // ->where('ibu_hamil_id', $data->ibu_hamil_id) // ->where('id', '!=', $id) // ->exists(); // if ($exists) { // return redirect()->back()->withErrors([ // 'usia_hamil' => 'Usia hamil ' . $request->usia_hamil . ' bulan telah melakukan pemeriksaan', // ])->withInput(); // } $validatedData['ibu_hamil_id'] = $data->ibu_hamil_id; DataPeriksaIbuHamil::where('id', $data->id) ->update($validatedData); return redirect('/data_pasien/' . $data->ibu_hamil_id . '/laporan_ibu_hamil')->with('success', 'Data Periksa Ibu ' . $data->nama_ibu . ' Berhasil Ditambah'); } public function update_nama_balita(Request $request, $id) { $data = DataIbuHamil::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'max' => 'Kolom :attribute maksimal harus :max karakter.', 'unique' => 'NIK sudah digunakan', ]; if ($request->status == 'Meninggal') { $validatedData = $request->validate([ // 'status_nik_balita' => ['required', 'max:255'], // 'nik_balita' => [ // 'nullable', // 'max:255', // 'required_if:status_nik_balita,Memiliki NIK', // 'unique:data_balita', // function ($attribute, $value, $fail) use ($request) { // if ($request->input('status_nik_balita') === 'Memiliki NIK' && empty($value)) { // $fail('Kolom NIK Balita wajib diisi jika Status NIK Balita adalah Memiliki NIK.'); // } // } // ], // 'nama_balita' => 'required|max:255', // 'jenis_kelamin' => 'required|max:255', // 'tanggal_lahir' => 'required|max:255', // 'jam_lahir' => 'required|max:255', 'status' => 'required|max:255', ], $customMessages); // Cek apakah nik_balita null atau kosong, jika ya isi dengan "anjay" // if (empty($validatedData['nik_balita'])) { // $validatedData['nik_balita'] = 'Belum Memiliki NIK'; // } DataBalita::where('ibu_hamil_id', $data->id) ->update($validatedData); DataIbuHamil::where('id', $data->id) ->update([ 'status_ibu' => "Sudah Melahirkan" ]); return redirect('/data_pasien/' . $id)->with('success', 'Data Anak Berhasil di Update'); } else { $validatedData = $request->validate([ 'status_nik_balita' => ['required', 'max:255'], 'nik_balita' => [ 'nullable', 'max:255', 'required_if:status_nik_balita,Memiliki NIK', 'unique:data_balita', function ($attribute, $value, $fail) use ($request) { if ($request->input('status_nik_balita') === 'Memiliki NIK' && empty($value)) { $fail('Kolom NIK Balita wajib diisi jika Status NIK Balita adalah Memiliki NIK.'); } } ], 'nama_balita' => 'required|max:255', 'jenis_kelamin' => 'required|max:255', 'tanggal_lahir' => 'required|max:255', 'jam_lahir' => 'required|max:255', 'status' => 'required|max:255', ], $customMessages); // Cek apakah nik_balita null atau kosong, jika ya isi dengan "anjay" if (empty($validatedData['nik_balita'])) { $validatedData['nik_balita'] = 'Belum Memiliki NIK'; } DataBalita::where('ibu_hamil_id', $data->id) ->update($validatedData); DataIbuHamil::where('id', $data->id) ->update([ 'status_ibu' => "Sudah Melahirkan" ]); return redirect('/data_pasien/' . $id)->with('success', 'Data Anak Berhasil di Update'); } } public function update_biodata_balita(Request $request, $id) { $data = DataBalita::find($id); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'min' => 'Kolom :attribute minimal harus :min karakter.', 'max' => 'Kolom :attribute maksimal harus :max karakter.', 'unique' => ':attribute telah terdaftar', ]; $validatedData = $request->validate([ 'nik_balita' => [ 'required', 'max:255', Rule::unique('data_balita')->ignore($id), ], 'nama_balita' => 'required|max:255', 'jenis_kelamin' => 'required|max:255', 'tanggal_lahir' => 'required|max:255', 'jam_lahir' => 'required|max:255', 'status' => 'required|max:255', ], $customMessages); DataBalita::where('id', $data->id) ->update($validatedData); return redirect('/data_pasien/' . $id . '/laporan_data_balita')->with('success', 'Biodata Balita Berhasil di Update'); } public function preview_laporan_data_balita($id) { $prev = DataBalita::findOrFail($id); // $biodata_keluarga = DataIbuHamil::where('ibu_hamil_id', $id)->get(); $data_periksa_balita = DataPeriksaBalita::where('balita_id', $prev->id)->get(); $status_periksa_balita = DataPeriksaBalita::where('balita_id', $id)->get(); $data_balita = DataBalita::where('ibu_hamil_id', $id)->get(); // Cari data dengan nama_ibu dan nama_ayah yang sama dengan $prev $sameNameData = DataIbuHamil::where('nama_ibu', $prev->nama_ibu) ->where('nama_ayah', $prev->nama_ayah) ->get(); // Ambil ID dari semua data yang memiliki nama_ibu dan nama_ayah yang sama $sameNameIds = $sameNameData->pluck('id')->toArray(); // Hitung total balita berdasarkan ibu_hamil_id yang ditemukan $total_balita = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->whereNotIn('status', ['Belum Dilahirkan']) ->count(); $total_balita_meninggal = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->where('status', 'Meninggal') ->count(); // chart $tinggi_balita = []; $berat_balita = []; foreach ($data_periksa_balita as $periksa) { $tanggal_kunjungan = \Carbon\Carbon::parse($periksa->tanggal_kunjungan); $bulan_kunjungan = $tanggal_kunjungan->format('F Y'); $tinggi_balita[$bulan_kunjungan] = number_format($periksa->tinggi_badan, 0); $berat_balita[$bulan_kunjungan] = number_format($periksa->berat_badan, 0); } return view('pages.data_laporan.laporan_periksa_balita.index', [ "title" => "Data Laporan Preview", "heading" => "Data Profile", "data" => $prev, "heading2" => "Profile Ibu", "jumlah_anak" => $total_balita, "data_bayi" => $data_balita, "jumlah_balita_meninggal" => $total_balita_meninggal, "data_vitamin" => DataObat::all(), "status_periksa_balita" => $status_periksa_balita, "tinggi_badan_balita" => $tinggi_balita, "berat_badan_balita" => $berat_balita ]); } public function store_status_periksa_balita(Request $request, $id) { $data = Databalita::find($id); $tanggalLahir = Carbon::parse($data->tanggal_lahir); $tgl_balita = $tanggalLahir->format('d F Y'); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'min' => 'Kolom :attribute minimal harus :min', 'max' => 'Kolom :attribute maksimal harus :max.', 'unique' => 'Anak ke' . $request->anak_ke . ' telah terdaftar.', 'usia_balita_tahun.max' => 'Usia balita tidak boleh lebih dari 5 tahun.', 'usia_balita_bulan.max' => 'Bulan tidak boleh lebih dari 11.', 'tanggal_kunjungan.unique' => 'Balita sudah melakukan periksa pada bulan :bulan tahun :tahun.', 'numeric' => 'Kolom :attribute harus berupa angka.', ]; $validatedData = $request->validate([ 'tanggal_kunjungan' => [ 'required', 'date', function ($attribute, $value, $fail) use ($data, $tgl_balita) { // Dapatkan tanggal lahir balita $tanggalLahir = $data->tanggal_lahir; // Periksa apakah tanggal kunjungan lebih kecil dari tanggal lahir if (Carbon::parse($value)->lt($tanggalLahir)) { $fail("Tanggal kunjungan tidak boleh kurang dari tanggal lahir balita. " . $tgl_balita); } }, ], // 'usia_balita_tahun' => 'required|min:0|max:5', // 'usia_balita_bulan' => 'required|integer|min:0|max:11', 'tinggi_badan' => 'required|numeric|max:100', 'berat_badan' => 'required|numeric|max:100', 'lingkar_kepala_balita' => 'required|numeric|max:60', 'vitamin_id' => 'required|max:255', 'imunisasi_id' => 'required|max:255', ], $customMessages); // // Custom validation untuk tahun dan tanggal v1 { // $exists = DB::table('data_pemeriksaan_balita') // ->where('usia_balita_tahun', $request->usia_balita_tahun) // ->where('usia_balita_bulan', $request->usia_balita_bulan) // ->where('balita_id', $data->id) // ->exists(); // if ($exists) { // return redirect()->back()->withErrors([ // 'usia_balita_tahun' => 'Usia balita tahun ' . $request->usia_balita_tahun . ' Tahun ' . $request->usia_balita_bulan . ' bulan telah melakukan pemeriksaan', // 'usia_balita_bulan' => 'Usia balita tahun ' . $request->usia_balita_tahun . ' Tahun ' . $request->usia_balita_bulan . ' bulan telah melakukan pemeriksaan' // ])->withInput(); // } // // } // otomatis tanggal usia periksa balita { // Dapatkan tanggal kunjungan dari input $tanggalKunjungan = Carbon::parse($validatedData['tanggal_kunjungan']); // Hitung usia balita berdasarkan tanggal kunjungan $usiaBalita = $tanggalKunjungan->diffInMonths($tanggalLahir); // Jika tanggal kunjungan lebih kecil dari tanggal lahir, set usia balita menjadi 0 tahun dan 1 bulan if ($tanggalKunjungan->lt($tanggalLahir)) { $usiaBalitaTahun = 0; $usiaBalitaBulan = 1; } else { // Hitung usia balita dalam tahun dan bulan $usiaBalitaTahun = floor($usiaBalita / 12); $usiaBalitaBulan = $usiaBalita % 12; } // Masukkan hasil perhitungan usia balita ke dalam data validasi $validatedData['usia_balita_tahun'] = $usiaBalitaTahun; $validatedData['usia_balita_bulan'] = $usiaBalitaBulan; // } $tanggal_kunjungan = $request->input('tanggal_kunjungan'); $year = date('Y', strtotime($tanggal_kunjungan)); $month = date('m', strtotime($tanggal_kunjungan)); $existingRecord = DataPeriksaBalita::where('balita_id', $data->id) ->whereYear('tanggal_kunjungan', $year) ->whereMonth('tanggal_kunjungan', $month) ->first(); if ($existingRecord) { return back()->withErrors([ 'tanggal_kunjungan' => 'Balita sudah melakukan periksa pada bulan ' . date('F', mktime(0, 0, 0, $month, 10)) . ' tahun ' . $year . '.' ])->withInput(); } $validatedData['balita_id'] = $data->id; DataPeriksaBalita::create($validatedData); return redirect('/data_pasien/' . $data->id . '/laporan_data_balita')->with('success', 'Berhasil Ditambah'); } public function edit_status_periksa_balita($id) { $prev = DataPeriksaBalita::findOrFail($id); return view('pages.data_laporan.laporan_periksa_balita.edit', [ "title" => "Edit Status Periksa Balita", "heading" => "Edit Status Periksa Balita", "data" => $prev, "data_vitamin" => DataObat::all(), ]); } public function update_status_periksa_balita(Request $request, $id) { $data = DataPeriksaBalita::find($id); $tanggalLahir = Carbon::parse($data->tanggal_lahir); $tgl_balita = $tanggalLahir->format('d F Y'); $customMessages = [ 'required' => 'Kolom :attribute wajib diisi.', 'max' => 'Kolom :attribute maksimal harus :max karakter.', 'usia_balita_tahun.max' => 'Usia balita tidak boleh lebih dari 5 tahun.', 'usia_balita_bulan.max' => 'Bulan tidak boleh lebih dari 11.', 'numeric' => 'Kolom :attribute harus berupa angka.', 'tanggal_kunjungan.unique' => 'Balita sudah melakukan periksa pada bulan :bulan tahun :tahun.', 'numeric' => 'Kolom :attribute harus berupa angka.', ]; $validatedData = $request->validate([ 'tanggal_kunjungan' => [ 'required', 'date', function ($attribute, $value, $fail) use ($data, $tgl_balita) { // Dapatkan tanggal lahir balita $tanggalLahir = $data->tanggal_lahir; // Periksa apakah tanggal kunjungan lebih kecil dari tanggal lahir if (Carbon::parse($value)->lt($tanggalLahir)) { $fail("Tanggal kunjungan tidak boleh kurang dari tanggal lahir balita. " . $tgl_balita); } }, ], // 'usia_balita_tahun' => 'required|min:0|max:5', // 'usia_balita_bulan' => 'required|integer|min:0|max:11', 'tinggi_badan' => 'required|numeric|max:100', 'berat_badan' => 'required|numeric|max:100', 'lingkar_kepala_balita' => 'required|numeric|max:60', 'vitamin_id' => 'required|max:255', 'imunisasi_id' => 'required|max:255', ], $customMessages); // $exists = DB::table('data_pemeriksaan_balita') // ->where('usia_balita_tahun', $request->usia_balita_tahun) // ->where('usia_balita_bulan', $request->usia_balita_bulan) // ->where('balita_id', $data->balita_id) // ->where('id', '!=', $id) // ->exists(); // if ($exists) { // return redirect()->back()->withErrors([ // 'usia_balita_tahun' => 'Usia balita tahun ' . $request->usia_balita_tahun . ' Tahun ' . $request->usia_balita_bulan . ' bulan telah melakukan pemeriksaan', // 'usia_balita_bulan' => 'Usia balita tahun ' . $request->usia_balita_tahun . ' Tahun ' . $request->usia_balita_bulan . ' bulan telah melakukan pemeriksaan' // ])->withInput(); // } // Dapatkan tanggal kunjungan dari input $tanggalKunjungan = Carbon::parse($validatedData['tanggal_kunjungan']); // Hitung usia balita berdasarkan tanggal kunjungan $usiaBalita = $tanggalKunjungan->diffInMonths($tanggalLahir); // Jika tanggal kunjungan lebih kecil dari tanggal lahir, set usia balita menjadi 0 tahun dan 1 bulan if ($tanggalKunjungan->lt($tanggalLahir)) { $usiaBalitaTahun = 0; $usiaBalitaBulan = 1; } else { // Hitung usia balita dalam tahun dan bulan $usiaBalitaTahun = floor($usiaBalita / 12); $usiaBalitaBulan = $usiaBalita % 12; } // Masukkan hasil perhitungan usia balita ke dalam data validasi $validatedData['usia_balita_tahun'] = $usiaBalitaTahun; $validatedData['usia_balita_bulan'] = $usiaBalitaBulan; $tanggal_kunjungan = $request->input('tanggal_kunjungan'); $year = date('Y', strtotime($tanggal_kunjungan)); $month = date('m', strtotime($tanggal_kunjungan)); $existingRecord = DataPeriksaBalita::where('balita_id', $data->balita_id) ->whereYear('tanggal_kunjungan', $year) ->whereMonth('tanggal_kunjungan', $month) ->where('id', '!=', $id) ->first(); if ($existingRecord) { return back()->withErrors([ 'tanggal_kunjungan' => 'Balita sudah melakukan periksa pada bulan ' . date('F', mktime(0, 0, 0, $month, 10)) . ' tahun ' . $year . '.' ])->withInput(); } DataPeriksaBalita::where('id', $data->id) ->update($validatedData); return redirect('/data_pasien/' . $data->balita_id . '/laporan_data_balita')->with('success', 'Data Periksa Balita Berhasil Di Update'); } public function destroy_status_periksa_balita($id) { // Mencari data dari tabel data ibu hamil berdasarkan id yang didapat $data = DataPeriksaBalita::findOrFail($id); // Menghapus data balita berdasarkan id yang didapat dari $data DataPeriksaBalita::where('id', $data->id)->delete(); // Setelah proses penghapusan berhasil maka akan diarahkan ke halaman /data_pasien return redirect('/data_pasien/' . $data->balita_id . '/laporan_data_balita')->with('success', 'Data Status Periksa Balita Berhasil Dihapus'); } public function cetak($id) { $prev = DataBalita::findOrFail($id); // $biodata_keluarga = DataIbuHamil::where('ibu_hamil_id', $id)->get(); $data_periksa_balita = DataPeriksaBalita::where('balita_id', $prev->id)->get(); $status_periksa_balita = DataPeriksaBalita::where('balita_id', $id)->get(); $data_balita = DataBalita::where('ibu_hamil_id', $id)->get(); // Cari data dengan nama_ibu dan nama_ayah yang sama dengan $prev $sameNameData = DataIbuHamil::where('nama_ibu', $prev->nama_ibu) ->where('nama_ayah', $prev->nama_ayah) ->get(); // Ambil ID dari semua data yang memiliki nama_ibu dan nama_ayah yang sama $sameNameIds = $sameNameData->pluck('id')->toArray(); // Hitung total balita berdasarkan ibu_hamil_id yang ditemukan $total_balita = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->whereNotIn('status', ['Belum Dilahirkan']) ->count(); $total_balita_meninggal = DataBalita::whereIn('ibu_hamil_id', $sameNameIds) ->where('status', 'Meninggal') ->count(); // chart $tinggi_balita = []; $berat_balita = []; foreach ($data_periksa_balita as $periksa) { $tanggal_kunjungan = \Carbon\Carbon::parse($periksa->tanggal_kunjungan); $bulan_kunjungan = $tanggal_kunjungan->format('F Y'); $tinggi_balita[$bulan_kunjungan] = number_format($periksa->tinggi_badan, 0); $berat_balita[$bulan_kunjungan] = number_format($periksa->berat_badan, 0); } return view('pages.data_laporan.laporan_periksa_balita.cetak', [ "title" => "anjay Data Laporan Preview", "heading" => "Data Profile", "data" => $prev, "heading2" => "Profile Ibu", "jumlah_anak" => $total_balita, "data_bayi" => $data_balita, "jumlah_balita_meninggal" => $total_balita_meninggal, "data_vitamin" => DataObat::all(), "status_periksa_balita" => $status_periksa_balita, "tinggi_badan_balita" => $tinggi_balita, "berat_badan_balita" => $berat_balita ]); } }