返回

Cara Efektif Mengaitkan Pelaksana Dinas dengan Perjalanan Dinas

php

Cara Mengaitkan Pelaksana Dinas dengan Perjalanan Dinas

Pendahuluan

Saat membuat formulir untuk mencatat perjalanan dinas, penting untuk tidak hanya merekam detail perjalanan itu sendiri, tetapi juga mengaitkan pelaksana dinas dengan perjalanan tersebut. Ini memastikan bahwa pelaksana dinas dapat dilacak dan dikelola secara efektif. Pada artikel ini, kita akan membahas cara memodifikasi kode Anda untuk mengaitkan pelaksana dinas dengan perjalanan dinas di database.

Permasalahan

Formulir yang ada memungkinkan pembuatan instans PerjalananDinas, tetapi tidak menautkan pelaksana dinas terkait dengan instans tersebut. Akibatnya, saat formulir dikirimkan, objek PerjalananDinas dibuat, tetapi objek PelaksanaDinas yang terkait tidak pernah dibuat.

Solusi

1. Modifikasi Kode Validasi

Pertama, kita perlu mengubah kode validasi untuk memasukkan bidang tambahan yang diperlukan untuk pelaksana dinas. Modifikasi kode validasi Anda seperti berikut:

$validated = $request->validate([
    'kodeSatker' => 'required|string',
    'MAK' => 'required|string',
    'id_kegiatan' => 'required|exists:Kegiatan,id_kegiatan',
    'id_satker' => 'required|exists:Satuan_Kerja,id_satker',
    'nomor_surat_tugas' => 'required|string|max:40',
    'nomor_sp2d' => 'required|string|max:15',
    'tanggal_surat_tugas' => 'required|date',
    'tanggal_mulai_dinas' => 'required|date',
    'tanggal_selesai_dinas' => 'required|date',
    'tujuan_dinas' => 'required|string',
    'pelaksana' => 'required|array',
    'pelaksana.*.nama_pegawai' => 'required|string',
    'pelaksana.*.status_pegawai' => 'required|string|max:10',
    'pelaksana.*.no_telp' => 'required|string|max:20',
    'pelaksana.*.nilai_dibayar' => 'required|numeric'
]);

2. Modifikasi Fungsi Penyimpanan

Selanjutnya, kita perlu memodifikasi fungsi penyimpanan untuk membuat dan mengaitkan objek PelaksanaDinas dengan objek PerjalananDinas. Berikut adalah fungsi penyimpanan yang dimodifikasi:

public function store(Request $request)
{
    $validated = $request->validate([
        'kodeSatker' => 'required|string',
        'MAK' => 'required|string',
        'id_kegiatan' => 'required|exists:Kegiatan,id_kegiatan',
        'id_satker' => 'required|exists:Satuan_Kerja,id_satker',
        'nomor_surat_tugas' => 'required|string|max:40',
        'nomor_sp2d' => 'required|string|max:15',
        'tanggal_surat_tugas' => 'required|date',
        'tanggal_mulai_dinas' => 'required|date',
        'tanggal_selesai_dinas' => 'required|date',
        'tujuan_dinas' => 'required|string',
        'pelaksana' => 'required|array',
        'pelaksana.*.nama_pegawai' => 'required|string',
        'pelaksana.*.status_pegawai' => 'required|string|max:10',
        'pelaksana.*.no_telp' => 'required|string|max:20',
        'pelaksana.*.nilai_dibayar' => 'required|numeric'
    ]);

    DB::beginTransaction();
    try {
        // Simpan data perjalanan dinas
        $perjalananDinas = PerjalananDinas::create([
            'id_kegiatan' => $validated['id_kegiatan'],
            'id_satker' => $validated['id_satker'],
            'nomor_surat_tugas' => $validated['nomor_surat_tugas'],
            'nomor_sp2d' => $validated['nomor_sp2d'],
            'tanggal_surat_tugas' => $validated['tanggal_surat_tugas'],
            'tanggal_mulai_dinas' => $validated['tanggal_mulai_dinas'],
            'tanggal_selesai_dinas' => $validated['tanggal_selesai_dinas'],
            'tujuan_dinas' => $validated['tujuan_dinas'],
        ]);

        // Simpan data pelaksana dinas
        foreach ($validated['pelaksana'] as $pelaksana) {
            PelaksanaDinas::create([
                'id_dinas' => $perjalananDinas->id_dinas,
                'kode_satker' => $validated['kodeSatker'],
                'kode_mak' => $validated['MAK'],
                'nama_pegawai' => $pelaksana['nama_pegawai'],
                'status_pegawai' => $pelaksana['status_pegawai'],
                'no_telp' => $pelaksana['no_telp'],
                'nilai_dibayar' => $pelaksana['nilai_dibayar']
            ]);
        }

        DB::commit();
        return redirect()->back()->with('success', 'Data Perjalanan Dinas berhasil disimpan');
    } catch (Exception $e){
        DB::rollback();
        return redirect()->back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage());
    }
}

Kesimpulan

Dengan menerapkan solusi yang diuraikan di atas, Anda dapat memodifikasi formulir perjalanan dinas Anda untuk mengaitkan pelaksana dinas dengan perjalanan tersebut. Hal ini memungkinkan pelacakan dan pengelolaan pelaksana dinas yang efektif.

FAQ

1. Mengapa penting untuk mengaitkan pelaksana dinas dengan perjalanan dinas?

Dengan mengaitkan pelaksana dinas dengan perjalanan dinas, memungkinkan untuk melacak siapa saja yang melakukan perjalanan, yang dapat membantu dalam hal akuntabilitas, manajemen biaya, dan pelaporan.

2. Apakah ada cara lain untuk mengaitkan pelaksana dinas dengan perjalanan dinas?

Selain menggunakan metode yang diuraikan dalam artikel ini, Anda juga dapat menggunakan tabel perantara untuk mengaitkan pelaksana dinas dengan perjalanan dinas. Namun, pendekatan yang diuraikan di atas umumnya lebih efisien dan mudah dikelola.

3. Bagaimana saya dapat memastikan bahwa data pelaksana dinas akurat?

Pastikan untuk memvalidasi data pelaksana dinas sebelum menyimpannya di database. Anda juga dapat mempertimbangkan untuk menggunakan daftar pilihan untuk bidang seperti status pegawai untuk memastikan konsistensi.

4. Bagaimana saya dapat mengelola pelaksana dinas yang ditugaskan untuk beberapa perjalanan dinas?

Anda dapat menggunakan tabel perantara atau membuat sistem penjadwalan untuk mengelola pelaksana dinas yang ditugaskan untuk beberapa perjalanan dinas.

5. Apakah ada sumber daya tambahan yang dapat membantu saya mengelola perjalanan dinas?

Ada berbagai sumber daya yang tersedia secara online dan melalui organisasi profesional yang dapat membantu Anda mengelola perjalanan dinas, seperti perangkat lunak otomatisasi, panduan, dan template.