<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Http\Models\PernikahanPasangan;
use App\Http\Models\IdentitasPasangan;
// use App\Http\Models\PusatKesehatan;
use App\Http\Models\Provinsi;
use App\Http\Models\Kabupaten;
use App\Http\Models\Kecamatan;
use App\Http\Models\Desa;
use App\Http\Models\IbuHamil;
use App\Http\Models\UserKUA;
use App\Http\Models\Users;
use App\Http\Models\KesehatanPasangan;
use App\Http\Libraries\CompresImage;
use File, Sentinel, Redirect, Validator;

class PernikahanPasanganController extends Controller
{
    public function index(Request $request)
    {
        $data['level'] = Sentinel::getUser();
        $data['mn_active'] = "keluarga";
        if (Sentinel::getUser()->level_user == 5 || Sentinel::getUser()->level_user == 7) {
            $data['title'] = "Pasangan Keluarga Sehat";
            $data['smallTitle'] = "Menampilkan seluruh data Pasangan Keluarga Sehat";
        }else{
            $data['title'] = "Data Pernikahan";
            $data['smallTitle'] = "Menampilkan seluruh data Data Pernikahan";
        }
        return view('keluargaSehat.pernikahan.main', $data);
    }

    public function datagrid(Request $request)
    {
        $user_id = Sentinel::getUser()->id;
        $infoUser = Users::find($user_id);
        if ($infoUser->level_user == '7') {
            $infoUsrKua = UserKUA::where('users_id',$infoUser->id)->first();
            $kolom = 'user_kua_id';
            $isi = $infoUsrKua->id_user_kua;
            $data = PernikahanPasangan::getJsonCustom($request, $kolom, $isi);
        }else{
            $data = PernikahanPasangan::getJson($request);
        }
        return response()->json($data);
    }

    public function formAdd(Request $request)
    {
        date_default_timezone_set('Asia/Jakarta');
        $userLogin = Sentinel::getUser()->id;
        $user = Users::find($userLogin);
        if ($user->level_user == 7) {
            $usrKUA = UserKUA::where('users_id', $user->id)->first();
            if (strlen($usrKUA->id_user_kua) == 1) {$kd_kua = '0'.$usrKUA->id_user_kua;}
            else{$kd_kua = $usrKUA->id_user_kua;}
            $thn = date('y');
            $scrAwal = $kd_kua.$thn."%";
            $dtIS = IdentitasPasangan::where('no_registrasi','like', $scrAwal)->orderBy('id_identitas_pasangan','DESC')->first();
            if (!empty($dtIS)) {
                $jmlStartDigit = strlen($kd_kua)+2;
                $jmlEndDigit = $jmlStartDigit + 3;
                $urutLama = substr($dtIS->no_registrasi, $jmlStartDigit,$jmlEndDigit);
                $urutBaru = $urutLama + 1;
                if (strlen($urutBaru) == 1) { $kdUrut = '000'.$urutBaru;}
                elseif(strlen($urutBaru) == 2){ $kdUrut = '00'.$urutBaru; }
                elseif(strlen($urutBaru) == 3){ $kdUrut = '0'.$urutBaru; }
                else{ $kdUrut = $urutBaru; }
            }else{
                $kdUrut = '0001';
            }
            $kodeRegis = $kd_kua.$thn.$kdUrut;
            $data['kodeRegis'] = $kodeRegis;
        }
        $data['provinsis'] = Provinsi::all();
        $content = view('keluargaSehat.pernikahan.formAdd',$data)->render();
        return ['status' => 'success', 'content' => $content];
    }

    public function cekNoRegistrasi(Request $request)
    {
        $data = IdentitasPasangan::where('no_registrasi',$request->noReg)->with('bumil')->get();
        return response()->json($data);
    }

    public function cekNikIstri(Request $request)
    {
        $data['bumil'] = IbuHamil::where('nik',$request->nik)->with('provinsi')->with('kabupaten')->with('kecamatan')->with('desa')->get();
        $data['provinsis'] = Provinsi::all();
        if (count($data['bumil']) != 0) {
            $data['kabupatens'] = Kabupaten::where('provinsi_id', $data['bumil'][0]->provinsi_ktp_id)->get();
            $data['kecamatans'] = Kecamatan::where('kabupaten_id', $data['bumil'][0]->kabupaten_ktp_id)->get();
            $data['desas'] = Desa::where('kecamatan_id', $data['bumil'][0]->kecamatan_ktp_id)->get();
        }
        return response()->json($data);
    }

    public function add(Request $request)
    {
        $user_id = Sentinel::getUser()->id;
        $infoUsrKua = UserKUA::where('users_id',$user_id)->first();
        $idenPas = IdentitasPasangan::where('no_registrasi',$request->no_registrasi)->first();
        if (!empty($idenPas)) {
            return Redirect::route('dtPernikahan')->with('title', 'Maaf!!!')->with('message', 'No Registrasi Sudah Digunakan !!')->with('type', 'error');
        }else{

            /* ====== ADD IDENTITAS PASANGAN ====== */
            $nikIstri = $request->nik;
            $cekIstri = IbuHamil::where('nik',$nikIstri)->first();
            if(empty($cekIstri)){
                $bumil = new IbuHamil;
                $bumil->nik = $request->nik;
                $bumil->nama_bumil = $request->nama_bumil;
                $bumil->tmp_lahir = $request->tmp_lahir;
                $bumil->tgl_lahir = date('Y-m-d', strtotime($request->tgl_lahir));
                $bumil->agama = $request->agama;
                $bumil->suku = $request->suku_istri;
                $bumil->pendidikan = $request->pendidikan;
                $bumil->pekerjaan = $request->pekerjaan;
                $bumil->nama_suami = $request->nama_suami;
                $bumil->alamat_ktp = $request->alamat_ktp;
                $bumil->provinsi_ktp_id = $request->provinsi_ktp_id;
                $bumil->kabupaten_ktp_id = $request->kabupaten_ktp_id;
                $bumil->kecamatan_ktp_id = $request->kecamatan_ktp_id;
                $bumil->desa_ktp_id = $request->desa_ktp_id;
                if (!empty($request->foto)) {
                    date_default_timezone_set('Asia/Jakarta');
                    $ukuranFile = filesize($request->foto);
                    if ($ukuranFile <= 500000) {
                        $ext_foto = $request->foto->getClientOriginalExtension();
                        $filename = "Istri_".date('Ymd-His')."_".$request->nama_bumil.".".$ext_foto;
                        $temp_foto = 'dist/img/istri/';
                        $proses = $request->foto->move($temp_foto, $filename);
                        $bumil->foto = $filename;
                    }else{
                        $file=$_FILES['foto']['name'];
                        if(!empty($file)){
                            $direktori="dist/img/istri/"; //tempat upload foto
                            $name='foto'; //name pada input type file
                            $namaBaru="Istri_".date('Ymd-His')."_".$request->nama_bumil; //name pada input type file
                            $quality=50; //konversi kualitas gambar dalam satuan %
                            $upload = CompresImage::UploadCompress($namaBaru,$name,$direktori,$quality);
                        }
                        $ext_foto = $request->foto->getClientOriginalExtension();
                        $bumil->foto = $namaBaru.".".$ext_foto;
                    }
                }
                $bumil->save();
            }else{
                $bumil = IbuHamil::find($cekIstri->id_bumil);
                $bumil->nama_bumil = $request->nama_bumil;
                $bumil->tmp_lahir = $request->tmp_lahir;
                $bumil->tgl_lahir = date('Y-m-d', strtotime($request->tgl_lahir));
                $bumil->agama = $request->agama;
                $bumil->suku = $request->suku_istri; // ---> New
                $bumil->pendidikan = $request->pendidikan;
                $bumil->pekerjaan = $request->pekerjaan;
                $bumil->nama_suami = $request->nama_suami;
                $bumil->alamat_ktp = $request->alamat_ktp;
                $bumil->provinsi_ktp_id = $request->provinsi_ktp_id;
                $bumil->kabupaten_ktp_id = $request->kabupaten_ktp_id;
                $bumil->kecamatan_ktp_id = $request->kecamatan_ktp_id;
                $bumil->desa_ktp_id = $request->desa_ktp_id;
                if (!empty($request->foto)) {
                    if ($bumil->foto != null) {
                        File::delete('dist/img/istri/'.$bumil->foto);
                    }
                    date_default_timezone_set('Asia/Jakarta');
                    $ukuranFile = filesize($request->foto);
                    if ($ukuranFile <= 500000) {
                        $ext_foto = $request->foto->getClientOriginalExtension();
                        $filename = "Istri_".date('Ymd-His')."_".$request->nama_bumil.".".$ext_foto;
                        $temp_foto = 'dist/img/istri/';
                        $proses = $request->foto->move($temp_foto, $filename);
                        $bumil->foto = $filename;
                    }else{
                        $file=$_FILES['foto']['name'];
                        if(!empty($file)){
                            $direktori="dist/img/istri/"; //tempat upload foto
                            $name='foto'; //name pada input type file
                            $namaBaru="Istri_".date('Ymd-His')."_".$request->nama_bumil; //name pada input type file
                            $quality=50; //konversi kualitas gambar dalam satuan %
                            $upload = CompresImage::UploadCompress($namaBaru,$name,$direktori,$quality);
                        }
                        $ext_foto = $request->foto->getClientOriginalExtension();
                        $bumil->foto = $namaBaru.".".$ext_foto;
                    }
                }
                $bumil->save();
            }

            $idenPas = new IdentitasPasangan;
            $idenPas->no_registrasi = $request->no_registrasi;
            $idenPas->tgl_registrasi = date('Y-m-d', strtotime($request->tgl_registrasi));
            $idenPas->nik_suami = $request->nik_suami;
            $idenPas->nama_suami = $request->nama_suami;
            $idenPas->tmp_lahir_suami = $request->tmp_lahir_suami;
            $idenPas->tgl_lahir_suami =  date('Y-m-d', strtotime($request->tgl_lahir_suami));
            $idenPas->agama_suami = $request->agama_suami;
            $idenPas->suku_suami = $request->suku_suami;
            $idenPas->pendidikan_suami = $request->pendidikan_suami;
            $idenPas->pekerjaan_suami = $request->pekerjaan_suami;
            $idenPas->alamat_suami = $request->alamat_suami;
            $idenPas->desa_suami_id = $request->desa_suami_id;
            $idenPas->kecamatan_suami_id = $request->kecamatan_suami_id;
            $idenPas->kabupaten_suami_id = $request->kabupaten_suami_id;
            $idenPas->provinsi_suami_id = $request->provinsi_suami_id;
            $idenPas->pernah_menikah_suami = $request->pernah_menikah_suami;
            $idenPas->suku_istri = $request->suku_istri;
            $idenPas->pernah_menikah_istri = $request->pernah_menikah_istri;
            if (empty($cekIstri)) {
                $idenPas->bumil_id = $bumil->id_bumil;
            }else{
                $idenPas->bumil_id = $cekIstri->id_bumil;
            }
            if (!empty($request->fotoSuami)) {
                date_default_timezone_set('Asia/Jakarta');
                $ukuranFile = filesize($request->fotoSuami);
                if ($ukuranFile <= 500000) {
                    $ext_fotoSuami = $request->fotoSuami->getClientOriginalExtension();
                    $filename = "Suami_".date('Ymd-His')."_".$request->nama_suami.".".$ext_fotoSuami;
                    $temp_fotoSuami = 'dist/img/suami/';
                    $proses = $request->fotoSuami->move($temp_fotoSuami, $filename);
                    $idenPas->foto_suami = $filename;
                }else{
                    $file=$_FILES['fotoSuami']['name'];
                    if(!empty($file)){
                        $direktori="dist/img/suami/"; //tempat upload foto
                        $name='foto'; //name pada input type file
                        $namaBaru="Suami_".date('Ymd-His')."_".$request->nama_suami; //name pada input type file
                        $quality=50; //konversi kualitas gambar dalam satuan %
                        $upload = CompresImage::UploadCompress($namaBaru,$name,$direktori,$quality);
                    }
                    $ext_fotoSuami = $request->fotoSuami->getClientOriginalExtension();
                    $idenPas->foto_suami = $namaBaru.".".$ext_fotoSuami;
                }
            }
            // $idenPas->user_desa_id = $usrDesa->id_user_desa;
            $idenPas->save();
            /* ====== END ADD IDENTITAS PASANGAN ====== */

            /* ====== ADD DATA PERNIKAHAN PASANGAN ====== */
            $perPas = new PernikahanPasangan;
            $perPas->syarat_administrasi = $request->syarat_administrasi;
            $perPas->akad_sebelum_kua = $request->akad_sebelum_kua;
            if ($request->akad_sebelum_kua == '1') {
                $perPas->tgl_akad = date('Y-m-d', strtotime($request->tgl_akad));
            }
            $perPas->menerima_vitamin = $request->menerima_vitamin;
            $perPas->ikut_konseling = $request->ikut_konseling;
            $perPas->tgl_pernikahan = date('Y-m-d', strtotime($request->tgl_pernikahan));
            $perPas->no_reg_pernikahan = $request->no_reg_pernikahan;
            $perPas->identitas_pasangan_id = $idenPas->id_identitas_pasangan;
            $perPas->user_kua_id = $infoUsrKua->id_user_kua;
            $perPas->save();
            /* ====== END DATA PERNIKAHAN PASANGAN ====== */

            // Start API Add User KUA on Server 1
            // $url_server1 = \Session::get('url_server1');
            // $data = [
            //     'token' => 'N2I2MWNkMmQtZjkyNi00ZDI0LWIyNzQtY2RhZDFjYjNjMWI4',
            //     'nikKUA' => Sentinel::getUser()->nik,
            // ];

            // $fields = array(
            //     'secret' => $data,
            //     'data' => $request->all(),
            // );
            
            // $fields = json_encode($fields);
            
            // $ch = curl_init();
            // curl_setopt($ch, CURLOPT_URL, $url_server1."/api/web/kua/addPernikahan");
            // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
            // curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            // curl_setopt($ch, CURLOPT_HEADER, FALSE);
            // curl_setopt($ch, CURLOPT_POST, TRUE);
            // curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
            // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

            // $response = curl_exec($ch);
            // curl_close($ch);
            // $resultAPI = json_decode($response,true);
            // $statusAPI = $resultAPI['status'];
            // End API Add User KUA on Server 1

            if ($perPas) {
                return Redirect::route('dtPernikahan')->with('title', 'Berhasil !')->with('message', 'Data Pernikahan Berhasil Dibuat !!')->with('type', 'success');
            } else {
                return Redirect::route('dtPernikahan')->with('title', 'Maaf!!!')->with('message', 'Data Pernikahan Gagal Dibuat !!')->with('type', 'error');
            }
        }
    }

    public function detail(Request $request)
    {
        $data['perPas'] = PernikahanPasangan::find($request->id);
        $data['idenPas'] = IdentitasPasangan::find($data['perPas']->identitas_pasangan_id);
        $data['kesPas'] = KesehatanPasangan::where('identitas_pasangan_id',$data['idenPas']->id_identitas_pasangan)->first();
        $content = view('keluargaSehat.pernikahan.detail', $data)->render();
        return ['status' => 'success', 'content' => $content];
    }

    public function formEdit(Request $request)
    {
        $data['perPas'] = PernikahanPasangan::find($request->id);
        $data['idenPas'] = IdentitasPasangan::find($data['perPas']->identitas_pasangan_id);
        $data['provinsis'] = Provinsi::all();
        $data['kabupatens'] = Kabupaten::where('provinsi_id',$data['idenPas']->provinsi_suami_id)->get();
        $data['kecamatans'] = Kecamatan::where('kabupaten_id', $data['idenPas']->kabupaten_suami_id)->get();
        $data['desas'] = Desa::where('kecamatan_id', $data['idenPas']->kecamatan_suami_id)->get();
        $data['kabupatenIstris'] = Kabupaten::where('provinsi_id',$data['idenPas']->bumil->provinsi_ktp_id)->get();
        $data['kecamatanIstris'] = Kecamatan::where('kabupaten_id', $data['idenPas']->bumil->kabupaten_ktp_id)->get();
        $data['desaIstris'] = Desa::where('kecamatan_id', $data['idenPas']->bumil->kecamatan_ktp_id)->get();
        $content = view('keluargaSehat.pernikahan.formEdit',$data)->render();
        return ['status' => 'success', 'content' => $content];
    }

    public function edit(Request $request)
    {
        $idenPas = IdentitasPasangan::find($request->id_identitas_pasangan);
        $idenPas->nik_suami = $request->nik_suami;
        $idenPas->nama_suami = $request->nama_suami;
        $idenPas->tmp_lahir_suami = $request->tmp_lahir_suami;
        $idenPas->tgl_lahir_suami =  date('Y-m-d', strtotime($request->tgl_lahir_suami));
        $idenPas->agama_suami = $request->agama_suami;
        $idenPas->suku_suami = $request->suku_suami;
        $idenPas->pendidikan_suami = $request->pendidikan_suami;
        $idenPas->pekerjaan_suami = $request->pekerjaan_suami;
        $idenPas->alamat_suami = $request->alamat_suami;
        $idenPas->desa_suami_id = $request->desa_suami_id;
        $idenPas->kecamatan_suami_id = $request->kecamatan_suami_id;
        $idenPas->kabupaten_suami_id = $request->kabupaten_suami_id;
        $idenPas->provinsi_suami_id = $request->provinsi_suami_id;
        $idenPas->pernah_menikah_suami = $request->pernah_menikah_suami;
        if (!empty($request->fotoSuami)) {
            if ($idenPas->fotoSuami != null) {
                File::delete('dist/img/suami/'.$idenPas->fotoSuami);
            }
            date_default_timezone_set('Asia/Jakarta');
            $ukuranFile = filesize($request->fotoSuami);
            if ($ukuranFile <= 500000) {
                $ext_fotoSuami = $request->fotoSuami->getClientOriginalExtension();
                $filename = "Suami_".date('Ymd-His')."_".$request->nama_suami.".".$ext_fotoSuami;
                $temp_fotoSuami = 'dist/img/suami/';
                $proses = $request->fotoSuami->move($temp_fotoSuami, $filename);
                $idenPas->foto_suami = $filename;
            }else{
                $file=$_FILES['fotoSuami']['name'];
                if(!empty($file)){
                    $direktori="dist/img/suami/"; //tempat upload foto
                    $name='foto'; //name pada input type file
                    $namaBaru="Suami_".date('Ymd-His')."_".$request->nama_suami; //name pada input type file
                    $quality=50; //konversi kualitas gambar dalam satuan %
                    $upload = CompresImage::UploadCompress($namaBaru,$name,$direktori,$quality);
                }
                $ext_fotoSuami = $request->fotoSuami->getClientOriginalExtension();
                $idenPas->foto_suami = $namaBaru.".".$ext_fotoSuami;
            }
        }
        $idenPas->save();
        
        $bumil = IbuHamil::find($idenPas->bumil_id);
        $bumil->nama_bumil = $request->nama_bumil;
        $bumil->tmp_lahir = $request->tmp_lahir;
        $bumil->tgl_lahir = date('Y-m-d', strtotime($request->tgl_lahir));
        $bumil->agama = $request->agama;
        $bumil->suku = $request->suku_istri; // ---> New
        $bumil->pendidikan = $request->pendidikan;
        $bumil->pekerjaan = $request->pekerjaan;
        $bumil->nama_suami = $request->nama_suami;
        $bumil->alamat_ktp = $request->alamat_ktp;
        $bumil->provinsi_ktp_id = $request->provinsi_ktp_id;
        $bumil->kabupaten_ktp_id = $request->kabupaten_ktp_id;
        $bumil->kecamatan_ktp_id = $request->kecamatan_ktp_id;
        $bumil->desa_ktp_id = $request->desa_ktp_id;
        if (!empty($request->foto)) {
            if ($bumil->foto != null) {
                File::delete('dist/img/istri/'.$bumil->foto);
            }
            date_default_timezone_set('Asia/Jakarta');
            $ukuranFile = filesize($request->foto);
            if ($ukuranFile <= 500000) {
                $ext_foto = $request->foto->getClientOriginalExtension();
                $filename = "Istri_".date('Ymd-His')."_".$request->nama_bumil.".".$ext_foto;
                $temp_foto = 'dist/img/istri/';
                $proses = $request->foto->move($temp_foto, $filename);
                $bumil->foto = $filename;
            }else{
                $file=$_FILES['foto']['name'];
                if(!empty($file)){
                    $direktori="dist/img/istri/"; //tempat upload foto
                    $name='foto'; //name pada input type file
                    $namaBaru="Istri_".date('Ymd-His')."_".$request->nama_bumil; //name pada input type file
                    $quality=50; //konversi kualitas gambar dalam satuan %
                    $upload = CompresImage::UploadCompress($namaBaru,$name,$direktori,$quality);
                }
                $ext_foto = $request->foto->getClientOriginalExtension();
                $bumil->foto = $namaBaru.".".$ext_foto;
            }
        }
        $bumil->save();

        $perPas = PernikahanPasangan::find($request->id_pernikahan_pasangan);
        $perPas->syarat_administrasi = $request->syarat_administrasi;
        $perPas->akad_sebelum_kua = $request->akad_sebelum_kua;
        if ($request->akad_sebelum_kua == '1') {
            $perPas->tgl_akad = date('Y-m-d', strtotime($request->tgl_akad));
        }
        $perPas->menerima_vitamin = $request->menerima_vitamin;
        $perPas->ikut_konseling = $request->ikut_konseling;
        $perPas->tgl_pernikahan = date('Y-m-d', strtotime($request->tgl_pernikahan));
        $perPas->no_reg_pernikahan = $request->no_reg_pernikahan;
        $perPas->save();

        // Start API Add User KUA on Server 1
        // $url_server1 = \Session::get('url_server1');
        // $data = [
        //     'token' => 'N2I2MWNkMmQtZjkyNi00ZDI0LWIyNzQtY2RhZDFjYjNjMWI4',
        // ];

        // $fields = array(
        //     'secret' => $data,
        //     'data' => $request->all(),
        // );
        
        // $fields = json_encode($fields);
        
        // $ch = curl_init();
        // curl_setopt($ch, CURLOPT_URL, $url_server1."/api/web/kua/editPernikahan");
        // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
        // curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        // curl_setopt($ch, CURLOPT_HEADER, FALSE);
        // curl_setopt($ch, CURLOPT_POST, TRUE);
        // curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
        // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

        // $response = curl_exec($ch);
        // curl_close($ch);
        // $resultAPI = json_decode($response,true);
        // $statusAPI = $resultAPI['status'];
        // End API Add User KUA on Server 1

        if ($perPas) {
            return Redirect::route('dtPernikahan')->with('title', 'Berhasil !')->with('message', 'Data Pernikahan Berhasil Diperbaharui !!')->with('type', 'success');
        } else {
            return Redirect::route('dtPernikahan')->with('title', 'Maaf!!!')->with('message', 'Data Pernikahan Gagal Diperbaharui !!')->with('type', 'error');
        }
    }
}
