MIF_E31210173/app/Http/Controllers/DataPasienController.php

131 lines
5.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\DataBalita;
use App\Models\DataIbuHamil;
use App\Models\DataPeriksaIbuHamil;
use App\Models\DataVitamin;
use Illuminate\Http\Request;
use App\Rules\UniqueParents;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\Unique;
use Carbon\Carbon;
class DataPasienController extends Controller
{
public function create()
{
return view('pages.tambah_pasien.tambah', [
"title" => "Tambah Data Pasien",
"heading" => "Tambah Data Pasien",
]);
}
public function store(Request $request)
{
// Memberikan Pesan kustom
$customMessages = [
'required_if' => 'Kolom :attribute wajib diisi jika status Sudah Melahirkan.',
'required' => 'Kolom :attribute wajib diisi.',
'min' => 'Kolom :attribute minimal harus :min karakter.',
'max' => 'Kolom :attribute maksimal harus :max karakter.',
'unique' => ':attribute telah terdaftar',
];
// Untuk pengecekan validasi
$validator = Validator::make(
$request->all(),
[
'nama_ibu' => [
'required', 'min:3', 'max:255', function ($attribute, $value, $fail) use ($request) {
$nama_ayah = $request->input('nama_ayah');
$count = DataIbuHamil::where('nama_ibu', $value)
->where('nama_ayah', $nama_ayah)
->count();
if ($count > 0) {
$fail('Nama Ibu dan Ayah sudah terdaftar');
}
}
],
'nik_ibu' => ['required', 'max:255', 'unique:data_ibu_hamil'],
// 'umur_ibu' => ['required', 'max:255'],
'tanggal_lahir_ibu' => ['required', 'max:255'],
'tanggal_lahir_ayah' => ['required', 'max:255'],
'nama_ayah' => ['required', 'max:255'],
// 'umur_ayah' => ['required', 'max:255'],
'alamat' => ['required', 'max:255'],
'status_ayah' => ['required', 'max:255'],
'status_ibu' => ['required', 'max:255'],
'anak_ke' => ['required', 'max:255'],
'nama_balita' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
// 'nik_balita' => ['nullable', 'required_if:status_ibu,Sudah Melahirkan', 'max:255', 'unique:data_balita'],
// 'nik_balita' => ['nullable', 'required_if:status_ibu,Sudah Melahirkan', 'required_if:status_nik_balita,Memiliki NIK', 'max:255', 'unique:data_balita'],
'status_nik_balita' => ['required_if:status_ibu,Sudah Melahirkan', '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_ibu') === 'Sudah Melahirkan' && $request->input('status_nik_balita') === 'Memiliki NIK' && empty($value)) {
$fail('Kolom NIK Balita wajib diisi jika Status NIK Balita adalah Memiliki NIK.');
}
}
],
'jenis_kelamin' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
'tanggal_lahir' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
'jam_lahir' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
],
$customMessages
);
// Jika validasi berhasil, lanjutkan proses penyimpanan data
$validatedData = $validator->validated();
// Hitung usia ibu
$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());
// $tanggalLahirAyah = Carbon::parse($request->input('tanggal_lahir_ibu'));
// $usiaAyah = $tanggalLahirAyah->diffInYears(Carbon::now());
$validatedData['umur_ibu'] = $usiaIbu;
$validatedData['umur_ayah'] = $usiaAyah;
// $validatedData['umur_ayah'] = $usiaAyah;
$newData = DataIbuHamil::create($validatedData);
$newId = $newData->id;
if ($validatedData['status_ibu'] === 'Sudah Melahirkan') {
$nikBalita = $request->nik_balita ?? $request->status_nik_balita;
DataBalita::create([
'nik_balita' => $nikBalita,
'status_nik_balita' => $request->status_nik_balita,
'nama_balita' => $request->nama_balita,
'jenis_kelamin' => $request->jenis_kelamin,
'tanggal_lahir' => $request->tanggal_lahir,
'jam_lahir' => $request->jam_lahir,
'ibu_hamil_id' => $newId,
'lingkar_kepala_balita' => $request->lingkar_kepala_balita,
'status' => 'Sudah Dilahirkan'
]);
}
if ($validatedData['status_ibu'] === 'Hamil') {
DataBalita::create([
'status' => 'Belum Dilahirkan',
'ibu_hamil_id' => $newId,
]);
}
// Jika berhasil arahkan halaman /data_laporan
return redirect('/data_pasien')->with('success', 'Data Berhasil Ditambah');
}
}