/***************************************************************************
* Name :index.php
* Description :予約登録
* Include :func.common.inc
* func.field.inc
* func.fieldcheck.inc
* class.cls_user.inc
* class.cls_base.inc
* Trigger :
* Create :2009/10/01 Brico Suzuki
* LastModify :
*
*
*
**************************************************************************/
include_once 'func.common.inc';
include_once 'func.field.inc';
include_once 'func.fieldcheck.inc';
include_once 'class.cls_reserve.inc';
$data = $_REQUEST;
$search = '';
$clsRsv = new cls_reserve();
//「新規登録」ボタンが押された場合
switch ($data['m']) {
case 'form':
//初期化
$data['RSV_DATE_RESERVE_F'] = array();
$data['RSV_ROOM_ID'] = array();
$data['RSV_DATE_RESERVE_T'] = array();
$data['RSV_DATE_CHECKOUT'] = array();
$data['RSV_RESERVE_DAYS'] = array();
//宿泊日の編集
//複数の部屋にチェックがついていたら、最初の部屋だけ。
//飛び石でチェックされていたら、最初のチェックの日(および連続する日まで)だけ。
//日数を計算する
//部屋でループ(確定hidden項目を配列にして、バックアップ変数クリアして次の部屋ループへ進めば複数部屋予約可能)
$arrErrors = array();
$chk_busy_stay = false;
$dayRsv_all = array();
foreach ($_ROOM_ID as $key => $val){
$end = false;
$cnt = 0;
$bkDate1 = "";
$bkDate2 = "";
$bk_key = "";
$dayRsv = 0;
$chk = false;
$chk_busy = false;
if ((isset($data[$key]))&&($cnt == 0)){
//チェック日でループ
foreach ($data[$key] as $key2 => $val2){
//繁忙期(7月から9月)をチェックする 2017/2
$mo = explode("/", $val2);
if($mo[1] >= 7 && $mo[1] <= 9) $chk_busy = true;
//おわってない場合、もしくは、みつけたよtrueで、その部屋の処理継続中の場合
if ((!$end)||(($chk===true)&&($bk_key == $key))){
//最初のチェック日だったら宿泊初日に保存
if ($cnt == 0){
$data['RSV_DATE_RESERVE_F'][$key] = $val2;
$data['RSV_ROOM_ID'][$key] = $key;
//日付みつけたよにtrue
$chk = true;
//宿泊日数に加算
$dayRsv = 1;
$dayRsv_all[$val2]++;
}else{
$ymd = explode ( '/' , $val2);
$cDate = date('Y-m-d',mktime(0,0,0, $ymd[1],$ymd[2],$ymd[0]));
$cDate = date("Y-m-d", strtotime($cDate." -1 day"));
//日付-1日が、前処理の日付と違ったら(=連続したチェックでなかったら)
if(($end)||($cDate <> $bkDate1)){
// unset($data[$key][$key2]);
// //●予約日確定
// if (!$end){
// $data['RSV_DATE_RESERVE_T'][$key] = $bkDate2;
// $data['RSV_DATE_CHECKOUT'][$key] = date("Y/m/d", strtotime($bkDate1." +1 day"));
// $data['RSV_RESERVE_DAYS'][$key] = $dayRsv;
// }
//取得終了フラグ
$end = true;
$arrErrors[$key] = "同じ部屋で日付をまたいでの予約はできません。(".$val.")";
}else{
$dayRsv++;
$dayRsv_all[$val2]++;
}
}
//バックアップ
$ymd = explode ( '/' , $val2);
$bkDate1 = date('Y-m-d',mktime(0,0,0, $ymd[1],$ymd[2],$ymd[0]));
$bkDate2 = $val2;
}else{
// unset($data[$key][$key2]);
}
$cnt++;
//キーをバックアップ
$bk_key = $key;
$bk_day = $key2;
}
//繁忙期をチェック
if($chk_busy === true) {
$chk_busy_stay = true;
}
//一日のみ宿泊だったら●予約日確定
if ($end === false){
$data['RSV_DATE_RESERVE_T'][$key] = $bkDate2;
$data['RSV_DATE_CHECKOUT'][$key] = date("Y/m/d", strtotime($bkDate1." +1 day"));
$data['RSV_RESERVE_DAYS'][$key] = $dayRsv;
$end = true;
}
}else{
unset($data[$key]);
}
}
//繁忙期は2泊以上 2017/6
if($chk_busy_stay === true && count($dayRsv_all) == 1) {
$end = true;
$arrErrors[$key] = "7月から9月の繁忙期は合計2泊以上よりご予約をお受けしております。連泊でないご予約で2泊以上お申し込み希望のお客様は、お手数ですがお電話にてお問い合わせください。
※他のご宿泊先への宿泊を挟んで、合計2泊以上ご宿泊なさりたい場合はお手数ですがお電話にてお問い合わせください。";
}
//$clsRsv->setWhere();
//$row = $clsRsv->getRsvInfo();
if (count($arrErrors) == 0){
$incFile = 'form.inc';
}else{
if (strlen($data['date1'])==0){
// $data['date1'] = date('Y/m/d');
$data['date1'] = date("Y/m/d", strtotime(date('Y-m-d')." +1 day"));
}
$clsRsv->setData($data,1);
$rtn = $clsRsv->getCalendar();
$incFile = 'calendar.inc';
foreach ($_ROOM_ID as $key => $val){
unset($data[$key]);
}
}
break;
case 'back':
$incFile = 'form.inc';
break;
case 'del':
$search = 'search';
$clsRsv->doDelete($data['uid']);
$data['uid'] = '';
break;
case 'confirm':
$clsRsv->setData($data,1);
$arrErrors = $clsRsv->isValidRsvData(1);
if (count($arrErrors) == 0){
$incFile = 'confirm.inc';
}else{
$incFile = 'form.inc';
}
break;
case 'commit':
$clsRsv->setData($data,1);
$arrErrors = $clsRsv->isValidRsvData(1);
if (count($arrErrors) == 0){
$clsRsv->doInsert();
$incFile = 'complete.inc';
}else{
$incFile = 'form.inc';
}
break;
case 'prev':
if (strlen($data['date1'])==0){
// $data['date1'] = date('Y/m/d');
$data['date1'] = date("Y/m/d", strtotime(date('Y-m-d')." +1 day"));
}
$clsRsv->setData($data,1);
$rtn = $clsRsv->getCalendar();
$incFile = 'calendar.inc';
foreach ($_ROOM_ID as $key => $val){
unset($data[$key]);
}
break;
default:
if (strlen($data['date1'])==0){
// $data['date1'] = date('Y/m/d');
$data['date1'] = date("Y/m/d", strtotime(date('Y-m-d')." +2 day")); //2日前まで入力可(2017.2)
}
$clsRsv->setData($data,1);
$rtn = $clsRsv->getCalendar();
$incFile = 'calendar.inc';
foreach ($_ROOM_ID as $key => $val){
unset($data[$key]);
}
break;
}
include_once $incFile;
$clsRsv->close();
?>