RES100_SCHE.php 10.4 KB
<?php 
//*****************************************************************************
//* 
//* プログラム名:施設予約
//* プログラムID:RES100_SCHE.php
//* 機能        :1ヶ月スケジュール
//* 作成者      :
//* 
//*****************************************************************************
header("Content-type: text/html; charset=EUC-JP");
include("include/session_start.inc");
include("include/SessionChk.inc");
$strDBinc="include/dbcon.inc";
include('include/smarty.conf');

//メニューセット
include('include/date.inc');
include($strDBinc);

//*****カレンダー編集*****//
$youbi=array("日","月","火","水","木","金","土");
$clender=array("#FDDFFD","#ffffe6","#ffffe6","#ffffe6","#ffffe6","#ffffe6","#CCF8FB");
$schedule=array("#FDDFFD","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#CCF8FB");

$st_year=substr($strwkdate, 0, 4);
$st_mon=substr($strwkdate, 4, 2);
$st_day="01";
$dateMax=date("j", mktime (0,0,0,$st_mon+1,$st_day-1,$st_year));
$st_sengetu =date("Ymd", mktime (0,0,0,$st_mon-1,$st_day,$st_year));
$st_raigetu =date("Ymd", mktime (0,0,0,$st_mon+1,$st_day,$st_year));
$st_kongetu =date("Ymd");

$intbefor=date("w", mktime (0,0,0,$st_mon,$st_day,$st_year));
$strDate=date("Y/m/d", mktime (0,0,0,$st_mon,$st_day-$intbefor,$st_year));
list($chk_year,$chk_mon,$chk_day)=split("/", $strDate);
$intafter=date("w", mktime (0,0,0,$st_mon,$dateMax,$st_year));
$intafter=6-$intafter;
for($intCnt = 0; $intCnt < $intbefor+$dateMax+$intafter ; $intCnt++) {
		$strDate=date("Y/m/d", mktime (0,0,0,$chk_mon,$chk_day+$intCnt,$chk_year));
		$strcalender[$intCnt]=$strDate;
}
$intChousei=date("w", mktime (0,0,0,$st_mon,01,$st_year));

$objdate = new CalcDate();

//*****施設名取得*****//
$strSQL="Select sisetu_name From mst_sisetu ".
				"WHERE seq='".$sisetu_cd."'";
$rsRecset = pg_exec($strSQL);

if (pg_numrows($rsRecset)>0){
	$objRevData = pg_fetch_object($rsRecset, 0);
	$strSisetu_Name = $objRevData->sisetu_name;
}

//*****スケジュール*****//
for($intCnt = 0; $intCnt < count($strcalender) ; $intCnt++) {
		list($chk_year,$chk_mon,$chk_day)=split("/", $strcalender[$intCnt]);
		if ($chk_mon==$st_mon){
			$strSQL="Select syain_cd,seq,rsv_st_time,rsv_ed_time,purpose,rev_type,rev_code,del_date ".
							"From sisetu_TBL ".
							"WHERE rsv_no='".$sisetu_cd."' and rsv_st_date<='".$strcalender[$intCnt]."' and '".$strcalender[$intCnt]."'<=rsv_ed_date ".
							"ORDER BY rsv_st_time,rsv_ed_time";

			$KSCH_RS = pg_exec($strSQL);
			$intMax=pg_numrows($KSCH_RS);
			$intSetcnt=0;

			for ($intData = 0; $intData < $intMax ; $intData++) {
				$objRevData = pg_fetch_object($KSCH_RS, $intData);
				$intset=0;

				$strDay=(int)$st_day+$intCnt-$intChousei;
				if (strlen($strDay)==1){
					$strDay="0".$strDay;
				}

				if ($objRevData->rev_type==1){
					$intdata=date("w", mktime (0,0,0,$st_mon,$strDay,$st_year));
					if ($intdata==$objRevData->rev_code){
						$intset=1;
					}
				}
				elseif ($objRevData->rev_type==2){
				
					$intdata =date("j", mktime (0,0,0,$st_mon,$strDay,$st_year));

					//20090818 月末対応
					if ($objRevData->rev_code == 32){
						if ($intdata == date("t", mktime (0,0,0,$st_mon,$strDay,$st_year))){
							$intset=1;
						}
					}else if ($intdata==$objRevData->rev_code){
						$intset=1;
					}
				}elseif ($objRevData->rev_type==4){
					$startOneDay=date("w", mktime (0,0,0,$st_mon,"1",$st_year));
					$intdata=date("w", mktime (0,0,0,$st_mon,$strDay,$st_year));
					$Biweekly=substr($objRevData->rev_code, 0, 1); //第何週
					$intervalWeek=substr($objRevData->rev_code, 1, 1); //週
					$res = $objdate->GetWeekly($st_year."/".$st_mon."/".($intCnt),$NowBiweekly);
					if($startOneDay > $intdata){
						$Biweekly+=1;
					}
					if ($Biweekly==$NowBiweekly){	
						if($intervalWeek==$intdata){
							$intset=1;
						}
					}
				}
				else{
					$intset=1;
				}

				//開始時刻
				$strTime="";
				if ($intset==1){
					if ($objRevData->rsv_st_time != ""){
						list($st_hour,$st_mini)=split(":", $objRevData->rsv_st_time);
						$strData=$st_hour.":".$st_mini;
						$strTime = $st_hour."".$st_mini;
					}
					else{
						$strData="";
						$strTime="";
					}
					//終了時刻
					if ($objRevData->rsv_ed_time != ""){
						list($ed_hour,$ed_mini)=split(":", $objRevData->rsv_ed_time);
						$strData=$strData."-".$ed_hour.":".$ed_mini;
						$strTime = $strTime."-".$ed_hour."".$ed_mini;
					}

					//データ存在チェック
					$Batting = "";
					if ($objRevData->rsv_st_time != "" && $objRevData->rsv_ed_time != ""){
						chkRepTime($sisetu_cd,$objRevData->seq,$strcalender[$intCnt],$objRevData->rsv_st_time,$objRevData->rsv_ed_time,&$pResut);
						if ($pResut == 1){
							$Batting = "<SPAN class=Chufont>×</SPAN>";
						}
					}
					$strData=$Batting.$strData.$objRevData->purpose;

					//登録者名
					$strSyainSQL="Select name_kj_sei,name_kj_mei From syain_tbl WHERE syain_cd='$objRevData->syain_cd'";
					$objSyainSet = pg_exec($strSyainSQL);
					if($objSyainSet==false){
						echo("SQL実行に失敗しました(SELECT)");
						exit;
					}	
					$objSyainData = pg_fetch_object($objSyainSet, 0);
					$strData=$strData."(".$objSyainData->name_kj_sei.$objSyainData->name_kj_mei.")";

					$strShisetu_Data[$intCnt][$intSetcnt]=$objRevData->seq."<#MTC_SEP#>".
																								$strData."<#MTC_SEP#>".
																								$syain_cd;
					$intSetcnt=$intSetcnt+1;
				}
			}
		}
	}

$o_smarty->assign('strwkdate',$strwkdate);
$o_smarty->assign('syain_cd',$syain_cd);
$o_smarty->assign('strSisetu_Name',$strSisetu_Name);

for ($intCnt = $st_year-1 ; $intCnt <= $st_year+1 ; $intCnt++) {
	if ($st_year == $intCnt) {
		$main_year.= "<option value=".$intCnt." selected>".$intCnt."年</option>\n";
	}else{
		$main_year.=  "<option value=".$intCnt.">".$intCnt."年</option>\n";
	}
}
$o_smarty->assign('main_year',$main_year);

for ($intCnt = 1 ; $intCnt <= 12 ; $intCnt++) {
	if ($st_mon == $intCnt) {
		if (strlen($intCnt)==1){
			$main_mon.= "<option value=\""."0".$intCnt."\" selected>".$intCnt."月</option>\n";
		}else{
			$main_mon.= "<option value=".$intCnt." selected>".$intCnt."月</option>\n";
		}
	}else{
		if (strlen($intCnt)==1){
			$main_mon.= "<option value=\""."0".$intCnt."\">".$intCnt."月</option>\n";
		}else{
			$main_mon.= "<option value=".$intCnt.">".$intCnt."月</option>\n";
		}
	}
}
$o_smarty->assign('main_mon',$main_mon);
$o_smarty->assign('st_sengetu',$st_sengetu);
$o_smarty->assign('st_kongetu',$st_kongetu);
$o_smarty->assign('st_raigetu',$st_raigetu);
$o_smarty->assign('strcalender',$strcalender);

$intSet=6;
$objdate = new CalcDate();
$PopCt=1;
$PopBCt=1;
for($intCnt = 0; $intCnt < count($strcalender) ; $intCnt++) {
		$intWeekCount=date("w", mktime (0,0,0,$st_mon,$st_day+$intCnt,$st_year));
		if ($intCnt % 7 == 0){
			$TR_TAG[$intCnt] = "1";
		}else{
			$TR_TAG[$intCnt] = "0";
		}
		list($chk_year,$chk_mon,$chk_day)=split("/", $strcalender[$intCnt]);
		$intYoubi=date("w", mktime (0,0,0,$chk_mon,$chk_day,$chk_year));
		$setdate=date("Ymd", mktime (0,0,0,$chk_mon,$chk_day,$chk_year));
		$chkdate=date("Y/m/d", mktime (0,0,0,$chk_mon,$chk_day,$chk_year));
		$strHoliday="Select holiday_name from holiday_tbl where holiday_date='$chkdate'";
		$objHoliday = pg_exec($strHoliday);
		if (pg_numrows($objHoliday)>0){
			$objRecHoliday = pg_fetch_object($objHoliday, 0);
			$HolidayName=$objRecHoliday->holiday_name;
			$intYoubi=0;
		}else{
			$HolidayName="";
		}

		if ($chk_mon==$st_mon){
			$strbnChk=date("Y/m/d", mktime (0,0,0,$st_mon,$chk_day,$chk_year));

			$now_date = date("Y/m/d");
			list($now_year,$now_mon,$now_day)=split("/", $now_date);
			if($now_mon==$st_mon && $now_day==$chk_day && $now_year==$chk_year){
				$scheduleTD[$intCnt][0] = "#FFFF66";
				$scheduleTD[$intCnt][1] = $chk_day." <SPAN class=Flowfont>".$HolidayName."</span><br>";
				$scheduleTD[$intCnt][2] = $setdate;
			}else{
				$scheduleTD[$intCnt][0] = $schedule[$intYoubi];
				$scheduleTD[$intCnt][1] = $chk_day." <SPAN class=Flowfont>".$HolidayName."</span><br>";
				$scheduleTD[$intCnt][2] = $setdate;
			}

			$intMax=count($strShisetu_Data[$intCnt]);

			//スケジュール
			$intData_lpct=0;
			for ($intData = 0; $intData < $intMax ; $intData++) {

				list($seq,$strData,$syain_cd)=split("<#MTC_SEP#>", $strShisetu_Data[$intCnt][$intData]);

				if (strstr($del_date,$chkdate)==FALSE){
						$scheduleTD[$intCnt][3][$intData_lpct][0] = $setdate.",".$seq.",".$sisetu_cd;
						$scheduleTD[$intCnt][3][$intData_lpct][1] = $strData;
						$scheduleTD[$intCnt][3][$intData_lpct][2] = $syain_cd;
						$PopCt+=1;
					$intData_lpct++;
				}
			}
		}else{
			//日付なし(空白部分)
			$scheduleTD[$intCnt][0] = "#C0C0C0";
			$scheduleTD[$intCnt][1] = "";
			$scheduleTD[$intCnt][2] = "";
			$scheduleTD[$intCnt][3] = "";
			$scheduleTD[$intCnt][4] = "";
		}

		if ($intCnt == $intSet){
			$scheduleTD[$intCnt][5] =  "1";
			$intSet=$intSet+7;
		}else{
			$scheduleTD[$intCnt][5] =  "0";
		}
}


//重複チェック関数追加
function chkRepTime($pRsvNo,$pSeqNo,$pDate,$pS_Time,$pE_Time,&$pResut){
	$pResut = 0;
	$strSQL="";
	$strSQL="Select * ".
					"From sisetu_TBL WHERE rsv_no=$pRsvNo and seq <> $pSeqNo and rsv_st_date<='$pDate' and '$pDate'<=rsv_ed_date ";

	$objRevSet = pg_exec($strSQL);
	if($objRevSet==false){
			echo("SQL実行に失敗しました(SELECT)");
			exit;
	}
	$intRevMax=pg_numrows($objRevSet);
	for($intData = 0; $intData < $intRevMax ; $intData++) {
		$objRevData = pg_fetch_object($objRevSet, $intData);
		//DB開始時間≦入力開始時間≦DB終了時間→DB開始時間≦入力開始時間<DB終了時間
		if(($objRevData->rsv_st_time <= $pS_Time) && ($pS_Time < $objRevData->rsv_ed_time)){
			$pResut=1;
		}
		//DB開始時間≦入力終了時間≦DB終了時間→DB開始時間<入力終了時間≦DB終了時間
		if(($objRevData->rsv_st_time < $pE_Time) && ($pE_Time <= $objRevData->rsv_ed_time)){
			$pResut=1;
		}
		//入力開始時間≦DB開始時間≦入力終了時間
		if(($pS_Time <= $objRevData->rsv_st_time) && ($objRevData->rsv_st_time < $pE_Time)){
			$pResut=1;
		}
		//入力開始時間≦DB終了時間≦入力終了時間→入力開始時間<DB終了時間≦入力終了時間
		if(($pS_Time < $objRevData->rsv_ed_time) && ($objRevData->rsv_ed_time <= $pE_Time)){
			$pResut=1;
		}
	}
}


$PopCt=1;
for($i=0;$i<count($PopMessage)+1;$i++){
		echo '<input type="hidden" name="comments" value="'.$PopMessage[$i].'">';
		echo '<DIV CLASS="spanstyle" ID="iL'.($i).'"></DIV>'."\n";
		$PopCt+=1;
}

$o_smarty->assign('TR_TAG',$TR_TAG);
$o_smarty->assign('scheduleTD',$scheduleTD);

$o_smarty->assign('syain_cd',$syain_cd);
$o_smarty->assign('sisetu_cd',$sisetu_cd);

$o_smarty->assign('strHoujiDate',$strwkdate);


$o_smarty->display('RES100_SCHE.tpl');
?>