<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Arisan extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('session');
        if(!$this->session->userdata('logged_in')) {
            redirect('auth');
        }
        $this->load->model(array('Arisan_model', 'Warga_model'));
        $this->load->library('form_validation');
        $this->load->helper('authorization');
    }

    // ==================== DASHBOARD ARISAN ====================
    public function index() {
        $data['title'] = 'Manajemen Arisan';
        $data['arisan_list'] = $this->Arisan_model->get_all_arisan();
        $data['total_arisan_aktif'] = $this->Arisan_model->count_arisan_aktif();

        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar', $data);
        $this->load->view('arisan/index', $data);
        $this->load->view('templates/footer');
    }

    // ==================== MASTER ARISAN ====================
    public function tambah() {
        if(is_warga()) {
            $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
            redirect('arisan');
        }

        $data['title']    = 'Tambah Arisan Baru';
        $data['kas_list'] = $this->Arisan_model->get_master_kas_aktif();

        $this->form_validation->set_rules('nama_arisan',   'Nama Arisan',   'required');
        $this->form_validation->set_rules('nominal_iuran', 'Nominal Iuran', 'required|numeric|greater_than[0]');
        $this->form_validation->set_rules('periode',       'Periode',       'required');
        $this->form_validation->set_rules('tanggal_mulai', 'Tanggal Mulai', 'required');
        $this->form_validation->set_rules('mode_undian',   'Mode Undian',   'required');
        $this->form_validation->set_rules('jumlah_pemenang_per_pertemuan', 'Jumlah Pemenang', 'required|numeric|greater_than[0]');

        if($this->form_validation->run() == FALSE) {
            $this->load->view('templates/header', $data);
            $this->load->view('templates/sidebar', $data);
            $this->load->view('arisan/tambah', $data);
            $this->load->view('templates/footer');
        } else {
            $data_arisan = array(
                'nama_arisan'                   => $this->input->post('nama_arisan'),
                'nominal_iuran'                 => $this->input->post('nominal_iuran'),
                'periode'                       => $this->input->post('periode'),
                'tanggal_mulai'                 => $this->input->post('tanggal_mulai'),
                'mode_undian'                   => $this->input->post('mode_undian'),
                'jumlah_pemenang_per_pertemuan' => $this->input->post('jumlah_pemenang_per_pertemuan'),
                'kas_id'                        => $this->input->post('kas_id') ?: NULL,
                'status'                        => 'aktif',
                'keterangan'                    => $this->input->post('keterangan')
            );

            $this->Arisan_model->insert_arisan($data_arisan);
            $this->session->set_flashdata('success', 'Arisan baru berhasil ditambahkan');
            redirect('arisan');
        }
    }

    public function edit($id) {
        if(is_warga()) {
            $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
            redirect('arisan');
        }

        $data['title']    = 'Edit Arisan';
        $data['arisan']   = $this->Arisan_model->get_arisan_by_id($id);
        $data['kas_list'] = $this->Arisan_model->get_master_kas_aktif();

        $this->form_validation->set_rules('nama_arisan',   'Nama Arisan',   'required');
        $this->form_validation->set_rules('nominal_iuran', 'Nominal Iuran', 'required|numeric|greater_than[0]');
        $this->form_validation->set_rules('status',        'Status',        'required');
        $this->form_validation->set_rules('mode_undian',   'Mode Undian',   'required');
        $this->form_validation->set_rules('jumlah_pemenang_per_pertemuan', 'Jumlah Pemenang', 'required|numeric|greater_than[0]');

        if($this->form_validation->run() == FALSE) {
            $this->load->view('templates/header', $data);
            $this->load->view('templates/sidebar', $data);
            $this->load->view('arisan/edit', $data);
            $this->load->view('templates/footer');
        } else {
            $data_arisan = array(
                'nama_arisan'                   => $this->input->post('nama_arisan'),
                'nominal_iuran'                 => $this->input->post('nominal_iuran'),
                'status'                        => $this->input->post('status'),
                'mode_undian'                   => $this->input->post('mode_undian'),
                'jumlah_pemenang_per_pertemuan' => $this->input->post('jumlah_pemenang_per_pertemuan'),
                'kas_id'                        => $this->input->post('kas_id') ?: NULL,
                'keterangan'                    => $this->input->post('keterangan')
            );

            $this->Arisan_model->update_arisan($id, $data_arisan);
            $this->session->set_flashdata('success', 'Arisan berhasil diupdate');
            redirect('arisan');
        }
    }

    // ==================== KELOLA PESERTA ====================
    public function peserta($arisan_id) {
        $data['title']         = 'Kelola Peserta Arisan';
        $data['arisan']        = $this->Arisan_model->get_arisan_by_id($arisan_id);
        $data['peserta']       = $this->Arisan_model->get_peserta_by_arisan($arisan_id);
        $data['total_peserta'] = $this->Arisan_model->count_peserta_by_arisan($arisan_id);

        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar', $data);
        $this->load->view('arisan/peserta', $data);
        $this->load->view('templates/footer');
    }

    public function tambah_peserta($arisan_id) {
        if(is_warga()) {
            $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
            redirect('arisan');
        }

        $data['title']                = 'Tambah Peserta Arisan';
        $data['arisan']               = $this->Arisan_model->get_arisan_by_id($arisan_id);
        $data['warga']                = $this->Arisan_model->get_warga_belum_terdaftar($arisan_id);
        $data['total_warga_tersedia'] = count($data['warga']);

        if($this->input->post()) {
            $mode = $this->input->post('mode');

            if($mode == 'semua') {
                $warga_belum = $this->Arisan_model->get_warga_belum_terdaftar($arisan_id);
                if(empty($warga_belum)) {
                    $this->session->set_flashdata('error', 'Tidak ada warga yang bisa ditambahkan!');
                    redirect('arisan/tambah_peserta/' . $arisan_id);
                }
                $last_peserta = $this->db->select_max('nomor_urut')->where('arisan_id', $arisan_id)->get('arisan_peserta')->row();
                $nomor_urut   = ($last_peserta->nomor_urut ?? 0) + 1;
                $total_berhasil = 0;
                foreach($warga_belum as $w) {
                    $data_peserta = array(
                        'arisan_id'      => $arisan_id,
                        'warga_id'       => $w->id,
                        'nomor_urut'     => $nomor_urut,
                        'tanggal_daftar' => date('Y-m-d'),
                        'status_peserta' => 'aktif'
                    );
                    if($this->Arisan_model->insert_peserta($data_peserta)) { $total_berhasil++; $nomor_urut++; }
                }
                $this->session->set_flashdata('success', 'Berhasil menambahkan ' . $total_berhasil . ' peserta arisan!');
                redirect('arisan/peserta/' . $arisan_id);

            } elseif($mode == 'pilihan') {
                $warga_ids = $this->input->post('warga_ids');
                if(empty($warga_ids)) {
                    $this->session->set_flashdata('error', 'Pilih minimal 1 warga!');
                    redirect('arisan/tambah_peserta/' . $arisan_id);
                }
                $last_peserta = $this->db->select_max('nomor_urut')->where('arisan_id', $arisan_id)->get('arisan_peserta')->row();
                $nomor_urut   = ($last_peserta->nomor_urut ?? 0) + 1;
                $total_berhasil = 0;
                foreach($warga_ids as $warga_id) {
                    if(!$this->Arisan_model->cek_warga_sudah_terdaftar($arisan_id, $warga_id)) {
                        $data_peserta = array(
                            'arisan_id'      => $arisan_id,
                            'warga_id'       => $warga_id,
                            'nomor_urut'     => $nomor_urut,
                            'tanggal_daftar' => date('Y-m-d'),
                            'status_peserta' => 'aktif'
                        );
                        if($this->Arisan_model->insert_peserta($data_peserta)) { $total_berhasil++; $nomor_urut++; }
                    }
                }
                $this->session->set_flashdata('success', 'Berhasil menambahkan ' . $total_berhasil . ' peserta arisan!');
                redirect('arisan/peserta/' . $arisan_id);

            } else {
                // Mode single
                $this->form_validation->set_rules('warga_id', 'Warga', 'required');
                if($this->form_validation->run() == TRUE) {
                    $warga_id = $this->input->post('warga_id');
                    if($this->Arisan_model->cek_warga_sudah_terdaftar($arisan_id, $warga_id)) {
                        $this->session->set_flashdata('error', 'Warga sudah terdaftar sebagai peserta!');
                        redirect('arisan/tambah_peserta/' . $arisan_id);
                    }
                    $last_peserta = $this->db->select_max('nomor_urut')->where('arisan_id', $arisan_id)->get('arisan_peserta')->row();
                    $nomor_urut   = ($last_peserta->nomor_urut ?? 0) + 1;
                    $data_peserta = array(
                        'arisan_id'      => $arisan_id,
                        'warga_id'       => $warga_id,
                        'nomor_urut'     => $nomor_urut,
                        'tanggal_daftar' => date('Y-m-d'),
                        'status_peserta' => 'aktif'
                    );
                    $this->Arisan_model->insert_peserta($data_peserta);
                    $this->session->set_flashdata('success', 'Peserta berhasil ditambahkan dengan nomor urut ' . $nomor_urut);
                    redirect('arisan/peserta/' . $arisan_id);
                }
            }
        }

        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar', $data);
        $this->load->view('arisan/tambah_peserta', $data);
        $this->load->view('templates/footer');
    }

    public function hapus_peserta($id, $arisan_id) {
        if(is_warga()) {
            $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
            redirect('arisan');
        }
        $this->Arisan_model->delete_peserta($id);
        $this->session->set_flashdata('success', 'Peserta berhasil dihapus');
        redirect('arisan/peserta/' . $arisan_id);
    }

    // ==================== PERTEMUAN ARISAN ====================
    public function pertemuan($arisan_id) {
        $data['title']         = 'Pertemuan Arisan';
        $data['arisan']        = $this->Arisan_model->get_arisan_by_id($arisan_id);
        $data['pertemuan']     = $this->Arisan_model->get_pertemuan_by_arisan($arisan_id);
        $data['total_peserta'] = $this->Arisan_model->count_peserta_by_arisan($arisan_id);

        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar', $data);
        $this->load->view('arisan/pertemuan', $data);
        $this->load->view('templates/footer');
    }

    public function tambah_pertemuan($arisan_id) {
        if(is_warga()) {
            $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
            redirect('arisan');
        }

        $data['title']              = 'Tambah Pertemuan Arisan';
        $data['arisan']             = $this->Arisan_model->get_arisan_by_id($arisan_id);
        $data['peserta']            = $this->Arisan_model->get_peserta_by_arisan($arisan_id);
        $data['peserta_belum_dapat']= $this->Arisan_model->get_peserta_belum_dapat($arisan_id);
        $data['kas_list']           = $this->Arisan_model->get_master_kas_aktif();

        $pertemuan_terakhir      = $this->Arisan_model->get_pertemuan_terakhir($arisan_id);
        $data['pertemuan_ke']    = $pertemuan_terakhir ? ($pertemuan_terakhir->pertemuan_ke + 1) : 1;

        $this->form_validation->set_rules('tanggal_pertemuan',  'Tanggal Pertemuan', 'required');
        $this->form_validation->set_rules('warga_id_tuan_rumah','Tuan Rumah',        'required');

        if($this->form_validation->run() == FALSE) {
            $this->load->view('templates/header', $data);
            $this->load->view('templates/sidebar', $data);
            $this->load->view('arisan/tambah_pertemuan', $data);
            $this->load->view('templates/footer');
        } else {
            $total_peserta = $this->Arisan_model->count_peserta_by_arisan($arisan_id);
            $total_iuran   = $total_peserta * $data['arisan']->nominal_iuran;

            $data_pertemuan = array(
                'arisan_id'           => $arisan_id,
                'pertemuan_ke'        => $data['pertemuan_ke'],
                'tanggal_pertemuan'   => $this->input->post('tanggal_pertemuan'),
                'tempat_pertemuan'    => $this->input->post('tempat_pertemuan'),
                'warga_id_tuan_rumah' => $this->input->post('warga_id_tuan_rumah'),
                'pemenang_warga_id'   => $this->input->post('pemenang_warga_id') ?: NULL,
                'nomor_undian'        => $this->input->post('nomor_undian') ?: NULL,
                'total_iuran'         => $total_iuran,
                'status_pertemuan'    => $this->input->post('status_pertemuan'),
                'keterangan'          => $this->input->post('keterangan'),
                'created_by'          => $this->session->userdata('user_id')
            );

            $pertemuan_id = $this->Arisan_model->insert_pertemuan($data_pertemuan);

            // Generate iuran untuk semua peserta
            $this->Arisan_model->generate_iuran_pertemuan($pertemuan_id, $arisan_id, $data['arisan']->nominal_iuran);

            // Jika ada pemenang, catat di riwayat
            if($this->input->post('pemenang_warga_id')) {
                $riwayat = array(
                    'arisan_id'    => $arisan_id,
                    'pertemuan_id' => $pertemuan_id,
                    'warga_id'     => $this->input->post('pemenang_warga_id'),
                    'nomor_undian' => $this->input->post('nomor_undian'),
                    'nominal_dapat'=> $total_iuran,
                    'tanggal_dapat'=> $this->input->post('tanggal_pertemuan'),
                    'sudah_diterima' => 'tidak'
                );
                $this->Arisan_model->insert_riwayat_pemenang($riwayat);
            }

            $this->session->set_flashdata('success', 'Pertemuan ke-' . $data['pertemuan_ke'] . ' berhasil ditambahkan');
            redirect('arisan/pertemuan/' . $arisan_id);
        }
    }

    public function detail_pertemuan($id) {
        $data['title']     = 'Detail Pertemuan';
        $data['pertemuan'] = $this->Arisan_model->get_pertemuan_by_id($id);
        $data['iuran']     = $this->Arisan_model->get_iuran_by_pertemuan($id);
        $data['kas_list']  = $this->Arisan_model->get_master_kas_aktif();

        // Ambil kas default dari arisan
        $arisan = $this->Arisan_model->get_arisan_by_id($data['pertemuan']->arisan_id);
        $data['kas_default_id'] = $arisan->kas_id ?? NULL;

        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar', $data);
        $this->load->view('arisan/detail_pertemuan', $data);
        $this->load->view('templates/footer');
    }

    // ==================== BAYAR IURAN (dengan integrasi kas) ====================
    public function bayar_iuran($iuran_id) {
        if(is_warga()) {
            $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
            redirect('arisan');
        }

        // Ambil data iuran
        $iuran = $this->db->get_where('arisan_iuran', array('id' => $iuran_id))->row();
        if(!$iuran) {
            $this->session->set_flashdata('error', 'Data iuran tidak ditemukan!');
            redirect($_SERVER['HTTP_REFERER']);
        }

        $kas_id  = $this->input->post('kas_id');
        $metode  = $this->input->post('metode') ?: 'tunai';
        $user_id = $this->session->userdata('user_id');

        // Update status iuran
        $this->Arisan_model->update_iuran($iuran_id, array(
            'status_bayar'       => 'lunas',
            'tanggal_bayar'      => date('Y-m-d'),
            'metode_pembayaran'  => $metode,
        ));

        // Catat ke kas jika kas_id dipilih
        if($kas_id) {
            $pertemuan = $this->Arisan_model->get_pertemuan_by_id($iuran->pertemuan_id);
            $arisan    = $this->Arisan_model->get_arisan_by_id($pertemuan->arisan_id);

            // Ambil nama peserta
            $peserta_data = $this->db->select('users.nama_lengkap')
                ->from('arisan_iuran')
                ->join('warga', 'warga.id = arisan_iuran.warga_id')
                ->join('users', 'users.id = warga.user_id')
                ->where('arisan_iuran.id', $iuran_id)
                ->get()->row();
            $peserta_nama = $peserta_data ? $peserta_data->nama_lengkap : 'Peserta';

            $kas_rt_id = $this->Arisan_model->catat_iuran_ke_kas(
                $arisan,
                $peserta_nama,
                $pertemuan->pertemuan_ke,
                $iuran->nominal_bayar,
                $kas_id,
                $user_id
            );

            // Simpan referensi kas_rt_id ke iuran
            $this->Arisan_model->update_iuran($iuran_id, array('kas_rt_id' => $kas_rt_id));
        }

        $this->session->set_flashdata('success', 'Pembayaran iuran berhasil dicatat' . ($kas_id ? ' dan masuk ke kas' : ''));
        redirect($_SERVER['HTTP_REFERER']);
    }

    // ==================== KONFIRMASI TERIMA DANA PEMENANG ====================
    public function terima_dana($riwayat_id) {
        if(is_warga()) {
            $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
            redirect('arisan');
        }

        $riwayat = $this->Arisan_model->get_riwayat_pemenang_by_id($riwayat_id);
        if(!$riwayat) {
            $this->session->set_flashdata('error', 'Data pemenang tidak ditemukan!');
            redirect('arisan');
        }

        if($riwayat->sudah_diterima == 'ya') {
            $this->session->set_flashdata('error', 'Dana sudah pernah dicatat sebagai diterima!');
            redirect($_SERVER['HTTP_REFERER']);
        }

        $kas_id  = $this->input->post('kas_id');
        $user_id = $this->session->userdata('user_id');

        // Update status riwayat pemenang
        $update_data = array(
            'sudah_diterima'  => 'ya',
            'tanggal_diterima'=> date('Y-m-d'),
        );

        // Catat pengeluaran ke kas jika kas_id dipilih
        if($kas_id) {
            $arisan    = $this->Arisan_model->get_arisan_by_id($riwayat->arisan_id);
            $pertemuan = $this->Arisan_model->get_pertemuan_by_id($riwayat->pertemuan_id);

            $kas_rt_id = $this->Arisan_model->catat_pemenang_ke_kas(
                $arisan,
                $riwayat->nama_lengkap,
                $pertemuan->pertemuan_ke,
                $riwayat->nominal_dapat,
                $kas_id,
                $user_id
            );
            $update_data['kas_rt_id'] = $kas_rt_id;
        }

        $this->Arisan_model->update_riwayat_pemenang($riwayat_id, $update_data);

        $this->session->set_flashdata('success', 'Dana pemenang berhasil dicatat sebagai diterima' . ($kas_id ? ' dan keluar dari kas' : ''));
        redirect($_SERVER['HTTP_REFERER']);
    }

    // ==================== RIWAYAT PEMENANG ====================
    public function riwayat($arisan_id) {
        $data['title']     = 'Riwayat Pemenang Arisan';
        $data['arisan']    = $this->Arisan_model->get_arisan_by_id($arisan_id);
        $data['riwayat']   = $this->Arisan_model->get_riwayat_pemenang($arisan_id);
        $data['kas_list']  = $this->Arisan_model->get_master_kas_aktif();

        // Kas default dari arisan
        $data['kas_default_id'] = $data['arisan']->kas_id ?? NULL;

        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar', $data);
        $this->load->view('arisan/riwayat', $data);
        $this->load->view('templates/footer');
    }
// ==================== EDIT PERTEMUAN ====================
public function edit_pertemuan($pertemuan_id) {
    if(is_warga()) {
        $this->session->set_flashdata('error', 'Anda tidak memiliki akses!');
        redirect('arisan');
    }

    // Ambil data pertemuan yang akan diedit
    $pertemuan = $this->Arisan_model->get_pertemuan_by_id($pertemuan_id);
    if(!$pertemuan) {
        $this->session->set_flashdata('error', 'Data pertemuan tidak ditemukan!');
        redirect('arisan');
    }

    $arisan_id = $pertemuan->arisan_id;
    $data['title']              = 'Edit Pertemuan Arisan';
    $data['arisan']             = $this->Arisan_model->get_arisan_by_id($arisan_id);
    $data['pertemuan']          = $pertemuan;
    $data['peserta']            = $this->Arisan_model->get_peserta_by_arisan($arisan_id);
    
    // Untuk edit, kita perlu data peserta yang belum dapat TAPI tetap include pemenang saat ini
    $data['peserta_belum_dapat']= $this->Arisan_model->get_peserta_belum_dapat_for_edit($arisan_id, $pertemuan->pemenang_warga_id);
    $data['kas_list']           = $this->Arisan_model->get_master_kas_aktif();
    $data['is_edit']            = true; // Flag untuk view tahu ini mode edit

    $this->form_validation->set_rules('tanggal_pertemuan',  'Tanggal Pertemuan', 'required');
    $this->form_validation->set_rules('warga_id_tuan_rumah','Tuan Rumah',        'required');
    $this->form_validation->set_rules('status_pertemuan',   'Status Pertemuan',  'required');

    if($this->form_validation->run() == FALSE) {
        $this->load->view('templates/header', $data);
        $this->load->view('templates/sidebar', $data);
        $this->load->view('arisan/edit_pertemuan', $data);
        $this->load->view('templates/footer');
    } else {
        // Cek apakah pemenang berubah
        $pemenang_lama_id = $pertemuan->pemenang_warga_id;
        $pemenang_baru_id = $this->input->post('pemenang_warga_id') ?: NULL;
        
        // FIX: Pastikan nomor_undian tidak NULL jika ada pemenang
        $nomor_undian_baru = $this->input->post('nomor_undian');
        
        // Jika ada pemenang tapi nomor_undian kosong, ambil dari peserta
        if($pemenang_baru_id && empty($nomor_undian_baru)) {
            // Cari nomor urut dari data peserta
            foreach($data['peserta_belum_dapat'] as $p) {
                if($p->warga_id == $pemenang_baru_id) {
                    $nomor_undian_baru = $p->nomor_urut;
                    break;
                }
            }
            
            // Kalau masih kosong, coba ambil dari tabel peserta langsung
            if(empty($nomor_undian_baru)) {
                $peserta_data = $this->db->get_where('arisan_peserta', array(
                    'arisan_id' => $arisan_id,
                    'warga_id' => $pemenang_baru_id,
                    'status_peserta' => 'aktif'
                ))->row();
                $nomor_undian_baru = $peserta_data ? $peserta_data->nomor_urut : 1;
            }
        }
        
        // Pastikan nomor_undian adalah integer, bukan NULL
        $nomor_undian_baru = !empty($nomor_undian_baru) ? (int)$nomor_undian_baru : NULL;

        $total_peserta = $this->Arisan_model->count_peserta_by_arisan($arisan_id);
        $total_iuran   = $total_peserta * $data['arisan']->nominal_iuran;

        $data_pertemuan = array(
            'tanggal_pertemuan'   => $this->input->post('tanggal_pertemuan'),
            'tempat_pertemuan'    => $this->input->post('tempat_pertemuan'),
            'warga_id_tuan_rumah' => $this->input->post('warga_id_tuan_rumah'),
            'pemenang_warga_id'   => $pemenang_baru_id,
            'nomor_undian'        => $nomor_undian_baru,
            'total_iuran'         => $total_iuran,
            'status_pertemuan'    => $this->input->post('status_pertemuan'),
            'keterangan'          => $this->input->post('keterangan'),
            'updated_by'          => $this->session->userdata('user_id'),
            // 'updated_at'          => date('Y-m-d H:i:s')
                'updated_at' => app_now()
        );

        $this->Arisan_model->update_pertemuan($pertemuan_id, $data_pertemuan);

        // Handle perubahan pemenang di riwayat
        if($pemenang_lama_id != $pemenang_baru_id) {
            // Hapus riwayat pemenang lama jika ada
            if($pemenang_lama_id) {
                $this->db->where('pertemuan_id', $pertemuan_id);
                $this->db->where('warga_id', $pemenang_lama_id);
                $this->db->delete('arisan_riwayat_pemenang');
            }

            // Insert riwayat pemenang baru jika ada
            if($pemenang_baru_id) {
                // FIX: Pastikan nomor_undian tidak NULL untuk riwayat juga
                $nomor_undian_riwayat = $nomor_undian_baru;
                if(empty($nomor_undian_riwayat)) {
                    $nomor_undian_riwayat = 1; // Default fallback
                }
                
                $riwayat = array(
                    'arisan_id'      => $arisan_id,
                    'pertemuan_id'   => $pertemuan_id,
                    'warga_id'       => $pemenang_baru_id,
                    'nomor_undian'   => (int)$nomor_undian_riwayat, // Pastikan integer
                    'nominal_dapat'  => $total_iuran,
                    'tanggal_dapat'  => $this->input->post('tanggal_pertemuan'),
                    'sudah_diterima' => 'tidak'
                );
                $this->Arisan_model->insert_riwayat_pemenang($riwayat);
            }
        } elseif($pemenang_baru_id && $pertemuan->nomor_undian != $nomor_undian_baru) {
            // Update nomor undian jika pemenang sama tapi nomor berubah
            $nomor_undian_update = !empty($nomor_undian_baru) ? (int)$nomor_undian_baru : 1;
            
            $this->db->where('pertemuan_id', $pertemuan_id);
            $this->db->where('warga_id', $pemenang_baru_id);
            $this->db->update('arisan_riwayat_pemenang', array('nomor_undian' => $nomor_undian_update));
        }

        $this->session->set_flashdata('success', 'Pertemuan ke-' . $pertemuan->pertemuan_ke . ' berhasil diupdate');
        redirect('arisan/pertemuan/' . $arisan_id);
    }
}
    
}