<?php

class Import_member extends MY_Controller {

    function __construct() {
        parent::__construct();
    }

    function index($success = '0') {
        if ($success == '1') {
            $data['msg_text'] = 'นำเข้าข้อมูลสมาชิกเรียบร้อย';
        }
        $data['page_title'] = 'นำเข้าข้อมูลสมาชิก';
        $data['content'] = 'import/import_member_v';
        $this->load->view('template_v', $data);
    }

    //นำเข้าข้อมูลสมาชิก
    function process() {
        $this->load->library('PHPExcel');
        $this->load->library('encrypt');
        //รายชื่อสมาชิก
        if ($_FILES["excel_file"]["name"] != "") {
            $file_temp = $_FILES['excel_file']['tmp_name'];
            $file_name = basename($_FILES['excel_file']['name']);

            $ext_file = explode(".", $file_name);
            $ext_file = $ext_file[count($ext_file) - 1];
            $file_name = md5(microtime()) . "." . $ext_file;

            // upload here
            move_uploaded_file($file_temp, "assets/upload/" . $file_name);
            $strPath = realpath(basename(getenv($_SERVER["SCRIPT_NAME"]))); // C:/AppServ/www/myphp
            $openFile = $strPath . "/assets/upload/" . $file_name;

            $objReader = new PHPExcel_Reader_Excel5;
            $objPHPExcel = $objReader->load($openFile);
            $objWorksheet = $objPHPExcel->getActiveSheet();
            $countRow = $objWorksheet->getHighestRow(); // นับจำนวนแถว
            $countColumn = 10; //fix  ไว้เลยว่ามี 10 column
            //$highestColumn = $objWorksheet->getHighestColumn(); // คอลัมน์สุดท้าย
            //$countColumn = PHPExcel_Cell::columnIndexFromString($highestColumn); // นับจำนวนคอลัมน์

            $msg = '0';
            $msg_text = '';
            $i = '0';
            $log = '';
            //แถว excel จะเริ่มปกติคือนับจาก 1 คอลัมเริ่มนับจาก 0
            //จะเริ่ม loop จาก column ก่อน

            for ($row = 2; $row <= $countRow; ++$row) {
                $fullname = $objWorksheet->getCellByColumnAndRow(0, $row)->getValue();
                $username = trim($objWorksheet->getCellByColumnAndRow(1, $row)->getValue());
                $password = trim($objWorksheet->getCellByColumnAndRow(2, $row)->getValue());
                $position = trim($objWorksheet->getCellByColumnAndRow(3, $row)->getValue());
                $mobile = trim($objWorksheet->getCellByColumnAndRow(4, $row)->getValue());
                $tel = trim($objWorksheet->getCellByColumnAndRow(5, $row)->getValue());
                $depart_code = trim($objWorksheet->getCellByColumnAndRow(6, $row)->getValue());
                $status = trim($objWorksheet->getCellByColumnAndRow(7, $row)->getValue());
                $mem_type = trim($objWorksheet->getCellByColumnAndRow(8, $row)->getValue());
                $email = trim($objWorksheet->getCellByColumnAndRow(9, $row)->getValue());


                $this->db->where('code', $depart_code);
                $depart = $this->db->get('tbdepart')->row_array();

                if (trim($fullname != '')) {
                    if (isset($depart['id'])) {
                        $this->db->where('username', $username);
                        $member = $this->db->get('tbmember')->row_array();
                        $import = true;
                        if (isset($member['id'])) {
                            $import = false;
                            $log.="ไม่สามารถนำเข้าชื่อผู้ใช้งาน $username เนื่องจากมีอยู่ในระบบ <br/>";
                        }

                        if ($import) {
                            $data = array(
                                'name' => $fullname,
                                'username' => $username,
                                'password' => $this->encrypt->encode($password),
                                'position' => $position,
                                'mobile' => $mobile,
                                'tel' => $tel,
                                'depart_id' => $depart_code,
                                'status' => $status,
                                'mem_type' => $mem_type,
                                'email' => $email
                            );
                            $this->db->insert('tbmember', $data);
                        }
                    } else {
                        $log.="ไม่สามารถนำเข้าชื่อผู้ใช้งาน $username เนื่องรหัสแผนก $depart_code ไม่มีอยู่ในระบบ <br/>";
                    }
                }
            }
            //$this->member_data($worksheet, $openFile);

            unlink($openFile);

            $data = array();

            if ($log == '') {
                $data['msg_text'] = 'นำเข้าข้อมูลสมาชิกเรียบร้อย';
            } else {
                $data['log'] = $log;
            }

            $data['page_title'] = 'นำเข้าข้อมูลสมาชิก';
            $data['content'] = 'import/import_member_v';
            $this->load->view('template_v', $data);
        } else {
            redirect('import_member/index/1');
        }
    }

    function member_data($worksheet, $openFile) {
        //รูปแบบ $worksheet['cells'][แถวที่][คอลัมที่]  โดย Column และ Row เริ่มนับจาก 1 เสมอ
        ini_set("memory_limit", "-1");
        ini_set("max_execution_time", "-1");
        $numCols = 10; //Fix ไว้เลย
        $numRows = $worksheet['numRows']; //จำนวนแถุว
        $log = '';

        for ($i = 0; $i < $numRows; $i++) {
            $irow = $i + 2;
            if (isset($worksheet['cells'][$irow][1])) {
                $ret = array();
                for ($j = 0; $j < $numCols; $j++) {
                    $icol = $j + 1;
                    if (isset($worksheet['cells'][$irow][$icol])) {
                        $ret[] = $worksheet['cells'][$irow][$icol];
                    } else {
                        $ret[] = '';
                    }
                }

                $this->db->where('code', $ret[6]);
                $depart = $this->db->get('tbdepart')->row_array();

                if (isset($depart['id'])) {
                    $sql = "select * from tbmember where name='" . $ret[0] . "'";
                    $row = $this->db->query($sql)->row_array();

                    $this->db->where('username', $ret[1]);
                    $member = $this->db->get('tbmember')->row_array();
                    $import = true;
                    if (isset($member['id'])) {
                        if ($member['name'] != $ret[0]) {
                            $import = false;
                            $log.=$ret[0] . " ไม่สามารถนำเข้าได้เนื่องจาก ชื่อผู้ใช้งน " . $ret[1] . " มีอยู่ในระบบ <br/>";
                        }
                    }

                    if ($import) {
                        $data = array(
                            'name' => $ret[0],
                            'username' => $ret[1],
                            'password' => $this->encrypt->encode($ret[2]),
                            'position' => $ret[3],
                            'mobile' => $ret[4],
                            'tel' => $ret[5],
                            'depart_id' => $depart['id'],
                            'status' => $ret[7],
                            'mem_type' => $ret[8],
                            'email' => $ret[9]
                        );

                        if (isset($row['id'])) {
                            $this->db->where('name', $ret[0]);
                            $this->db->update('tbmember', $data);
                        } else {
                            $this->db->insert('tbmember', $data);
                        }
                    }
                } else {
                    $log.=$ret[0] . " ไม่สามารถนำเข้าได้เนื่องจาก รหัสแผนก " . $ret[6] . " ไม่มีอยู่ในระบบ <br/>";
                }
            }
        }

        unlink($openFile);

        $data['msg_text'] = 'นำเข้าข้อมูลสมาชิกเรียบร้อย';
        if ($log != '')
            $data['log'] = $log;

        $data['page_title'] = 'นำเข้าข้อมูลสมาชิก';
        $data['content'] = 'import/import_member_v';
        $this->load->view('template_v', $data);
    }

}

?>
