<?php
/*====================================================================*
 * KSA顧客マスタ管理
 * 
 * ファイル名：ksa_master.php
 * 作成日：2013/10/03
 * 更新日：
 * 
 * Copyright(c) 2013 Japan Multimedia Equipment, inc.
 *====================================================================*/

/*====================================================================*
 * 初期設定
 *====================================================================*/
/* エンコード設定 */
mb_language('ja');
mb_internal_encoding('UTF-8');

/* ライブラリ読込 */
define('LIB_PATH', './lib/');
require_once 'ADOdb/adodb.inc.php';
require_once LIB_PATH.'ConnectDB.class.php';
require_once LIB_PATH.'JSON.php';

/* DB接続設定 */
define('DB_TYPE', 'mysql');
define('DB_USER', 'root');
define('DB_PASSWORD', '47qg*E5H&mxQ');
define('DB_NAME', 'ttt_jmedb');
define('DB_DSN', DB_TYPE.'://'.DB_USER.':'.DB_PASSWORD.'@localhost/'.DB_NAME);

/**********************************************************************
 * 内部変数設定
 **********************************************************************/
/* DBオブジェクト生成 */
$db		= new ConnectDB(DB_DSN);	// DBオブジェクト

/* 引数設定 */
$mode	= null;	// 動作変数
$id		= null;	// ID変数（顧客データ登録・更新・削除用）
$num	= null;	// 読込初期行変数（顧客データ読込用）
$length = null;	// 読込数変数（顧客データ読込用）


/**********************************************************************
 * POSTデータ取得
 **********************************************************************/
/* 動作変数取得 */
if(isset($_POST['mode']) && $_POST['mode'] != '') 
	$mode = htmlspecialchars($_POST['mode'], ENT_QUOTES);
/* ID変数取得 */
if(isset($_POST['id']) && $_POST['id'] != '') 
	$id = htmlspecialchars($_POST['id'], ENT_QUOTES);
/* 読込初期行変数取得 */
if(isset($_POST['num']) && $_POST['num'] != '') 
	$num = htmlspecialchars($_POST['num'], ENT_QUOTES);
/* 読込数変数取得 */
if(isset($_POST['length']) && $_POST['length'] != '') 
	$length = htmlspecialchars($_POST['length'], ENT_QUOTES);


/*====================================================================*
 * メイン処理
 *====================================================================*/

/* ヘッダー送信 */
header('Content-type: application/json; charset=utf-8');

/* DB接続 */
if($db->connect()) {
	
	/******************************************************************
	 * 処理分岐
	 ******************************************************************/
	switch($mode){
		
		/**************************************************************
		 * 顧客マスタ読込
		 **************************************************************/
		case 'load':
			/* SQL生成 */
			$sql = "SELECT KSA.*, I.`企業名`, I.`郵便番号`, I.`住所`, ";
			$sql.= "I.`電話番号`, N.`工事名`, `審査基準日`, `更新日`, `審査基準年度`, ";
			$sql.= "PERIOD_DIFF(DATE_FORMAT(`審査基準日` + interval 19 month, '%Y%m'), DATE_FORMAT(CURDATE(), '%Y%m')) AS `期限月数` ";
			$sql.= "FROM `99ksa6` AS KSA ";
			$sql.= "LEFT JOIN `00index` AS I ON KSA.`ID` = I.`ID`";
			$sql.= "LEFT JOIN `92koji` AS N ON I.`工事の種類` = N.`工事の種類` ";
			$sql.= "LEFT JOIN `93update` AS U ON U.`ver` = RIGHT(I.`HDER`,4) ";
			if($num != null && $length !=null) $sql.= "LIMIT ".$num.", ".$length." ";
			$sql.= ";";
			
			/* マスタ読込処理 */
			if($db->load($sql)) {
				$record = $db->getRecord();
				
				/* マスタ出力処理 */
				$rs = array();
				$n = 1;
				foreach($record as $rec) {
					$line = array(
						'no' => $rec['no'],
						'cd' => $rec['CD'],
						'nd' => $rec['ND'],
						'id' => $rec['ID'],
						'corp' => $rec['企業名'],
						'zip' => $rec['郵便番号'],
						'address' => $rec['住所'],
						'tel' => $rec['電話番号'],
						'const' => $rec['工事名'],
						'ldate' => $rec['審査基準日'],
						'udate' => $rec['更新日'],
						'lmonth' => $rec['期限月数'],
						'lyear' => $rec['審査基準年度']
					);
					$rs[$n] = $line;
					$n++;
				}
				/* JSON出力 */
				json_output($rs);
			} else {
				/******************************************************
				 * 読込エラー処理
				 ******************************************************/
				/* エラーメッセージ設定 */
				$message = array('error'=>'読込エラー：DBの読込ができません');
				/* JSON出力 */
				json_output($message);
			}
			break;
		
		/**************************************************************
		 * 顧客マスタ追加
		 **************************************************************/
		case 'insert':
			/* 準備中 */
			
			break;
		
		/**************************************************************
		 * 顧客マスタ更新
		 **************************************************************/
		case 'update':
			/* 準備中 */
			
			break;
		
		/**************************************************************
		 * 顧客マスタ削除
		 **************************************************************/
		case 'delete':
			/* 準備中 */
			
			break;
		
		/**************************************************************
		 * 最新データ確認
		 **************************************************************/
		case 'last_update':
			/* SQL生成 */
			$sql = "SELECT MAX(`更新日`) AS `最終更新日` FROM `00index` LEFT JOIN `93update` ON RIGHT(`HDER`,4) = `ver` ;";
			
			/* クエリ実行処理 */
			if($db->load($sql)) {
				$record = $db->getRecord();
				
				/* マスタ出力処理 */
				$rs = array('last_update' => $record[0]['最終更新日']);
				/* JSON出力 */
				json_output($rs);
			} else {
				/******************************************************
				 * 読込エラー処理
				 ******************************************************/
				/* エラーメッセージ設定 */
				$message = array('error'=>'読込エラー：DBの読込ができません');
				/* JSON出力 */
				json_output($message);
			}
			break;
			break;
		
		/**************************************************************
		 * 呼出エラー処理
		 **************************************************************/
		default:
			/* エラーメッセージ設定 */
			$message = array('error'=>'呼出エラー：引数が正しくありません');
			/* JSON出力 */
			json_output($message);
	}
} else {
	
	/**************************************************************
	 * DB接続エラー処理
	 **************************************************************/
	 
	/* エラーメッセージ設定 */
	$message = array('error'=>'DB接続エラー：DBに接続できません');
	/* JSON出力 */
	json_output($message);
}

/*====================================================================*
 * 終了処理
 *====================================================================*/
exit();



/*====================================================================*
 * 内部関数
 *====================================================================*/

/**********************************************************************
 * JSON出力関数
 * 
 * 連想配列をJSON形式で出力する
 * 
 * @access	pulibc
 * @param	array	$data	連想配列にて定義
 * @return	void
 **********************************************************************/
function json_output($data){
	/* JSONオブジェクト生成 */
	$json = new Services_JSON();
	
	/* JSON出力 */
	$js = $json->encode($data);
	echo $js;
	
	return;
}
?>
