#!/usr/bin/perl --
################################################################################
#
# Star-tour user cgi ( st_user.cgi )
#
# Code by T.Kamakura @ Office Tandem 2002.02.08
#
################################################################################
require 'jcode.pl';
require 'common.pl';
require 'const.pl';
require 'template.pl';
require 'config.pl';
require 'yoyaku.pl';
require 'seikyu.pl';
require 'annai.pl';
require 'counter.pl';
require 'maintenance.pl';
################################################################################
# プロパティ
################################################################################
# システム設定
%g_SysConfig = ();
################################################################################
# メインロジック
################################################################################
# 日本語コードライブラリの初期化
&jcode'init;
# HTMLヘッダを出力
&common'printHtmlHeader;
# CGIへの引数を読みこむ
&common'getCgiParam($ENV{'REQUEST_METHOD'});
$func_name = $common'FORM{'Func'};
$id = $common'FORM{'DataID'};
$passwd = $common'FORM{'Passwd'};
# システム設定ファイルの読み込み
&config'readSysConfig( $const'g_SysConfigPath, *g_SysConfig);
ParsePaperName( $common'FORM{'PaperName'});
# テンプレートモジュールに設定
&template'setSysItemTable( %g_SysConfig);
# メンテナンスモード判定
if( &maintenance'onMaintenance() != 0) {
&maintenance'showMaintenancePrompt('t_maintenance.html');
exit;
}
if( $func_name eq "") {
&doPasswdCheck();
}
else {
# パスワードチェック(同時にお客様データを読みこんでしまう)
if( &checkPwd( $id, $passwd) < 0) {
&doPasswdCheck();
}
else {
# 認証情報をシステム設定に追加
$g_SysConfig{'DataID'} = $id;
$g_SysConfig{'Passwd'} = $passwd;
if( $func_name eq 'Menu') {
&doMenu($id);
}
elsif( $func_name eq 'Confirm') {
&doConfirm(1);
}
elsif( $func_name eq 'Confirm2') {
&doConfirm(2);
}
elsif( $func_name eq 'Plan') {
&doPlan($id);
}
elsif( $func_name eq 'Airport') {
&doAirport($id);
}
elsif( $func_name eq 'Seikyu') {
&doSeikyu($id);
}
else {
# 未定義機能
print "未知の機能名称です。
";
print "CGIの呼び出し方法を確認してください。";
print "
";
}
}
}
exit;
################################################################################
# 書類宛て名のパース
################################################################################
sub ParsePaperName
{
local( $paperName) = @_;
if( $paperName =~ m/(.*):(.*)/) {
#print $paperName;
$g_SysConfig{'PaperName'} = $1;
$g_SysConfig{'PaperSex'} = $2;
}
}
################################################################################
# パスワードチェック画面
################################################################################
sub doPasswdCheck
{
# パスワードチェックはただ表示するのみ
&template'printTemplate( $const'g_TemplateDir, "t_user_login.html", 0);
return 0;
}
################################################################################
# パスワードチェック
################################################################################
sub checkPwd
{
local( $id, $passwd) = @_;
# 予約データモジュールの初期化(1:ファイル読み込み)
if( &yoyaku'init(1) < 0) {
return -1;
}
# 予約データの当該レコード読み込み
if( &yoyaku'readRecordId( $id) < 0) {
#print "DEBUG: 予約データの当該レコード読み込みに失敗。
";
return -1;
}
# パスワードをチェック
if( $passwd ne $yoyaku'g_Items{'Yoyaku.Passwd'} ) {
#print "$fname vs $yoyaku'g_Items{'Yoyaku.FName0'}
";
#print "$lname vs $yoyaku'g_Items{'Yoyaku.LName0'}
";
#print "$passwd vs $yoyaku'g_Items{'Yoyaku.Passwd'}
";
return -1;
}
# テンプレートモジュールの初期化
&template'setItemTable( %yoyaku'g_Items);
&template'setLoopCount( &yoyaku'getLoopCount());
&yoyaku'end();
return 1;
}
################################################################################
# メニュー画面
################################################################################
sub doMenu
{
local( $id) = @_;
# 請求書情報を設定
&setSeikyuInfo( $id);
# 案内情報を設定
&setAnnaiInfo( $id);
# メニュー表示
&template'printTemplate( $const'g_TemplateDir, "t_user_menu.html", 0);
return 0;
}
################################################################################
# 受付内容確認画面
################################################################################
sub doConfirm
{
local( $mode) = @_;
# 受付内容確認はただ表示するのみ
if( $mode == 1) {
&template'printTemplate( $const'g_TemplateDir, "t_yoyaku_confirm.html", 0);
}
else {
&template'printTemplate( $const'g_TemplateDir, "t_yoyaku_confirm2.html", 0);
}
return 0;
}
################################################################################
# 案内画面
################################################################################
sub doPlan
{
local( $id) = @_;
# 案内情報を設定
&setAnnaiInfo( $id);
# 案内画面を表示
&template'printTemplate( $const'g_TemplateDir, "t_user_plan.html", 0);
return 0;
}
################################################################################
# 空港案内画面
################################################################################
sub doAirport
{
local( $id) = @_;
# 案内情報を設定
&setAnnaiInfo( $id);
# 空港案内画面を表示
&template'printTemplate( $const'g_TemplateDir, "t_user_airport.html", 0);
return 0;
}
################################################################################
# 請求書表示画面
################################################################################
sub doSeikyu
{
local( $id) = @_;
# 請求書情報を設定
&setSeikyuInfo( $id);
# 請求書画面を表示
&template'printTemplate( $const'g_TemplateDir, "t_user_seikyu.html", 0);
return 0;
}
################################################################################
# 案内情報の設定
################################################################################
sub setAnnaiInfo
{
local( $id) = @_;
# 案内データモジュールの初期化(1:ファイル読み込み)
if( &annai'init(1) < 0) {
return -1;
}
# 案内データの当該レコード読み込み
if( &annai'readRecordId( $id) < 0) {
&annai'end();
return -1;
}
# テンプレートモジュールにキーワード追加
&template'addItemTable( %annai'g_Items);
&template'setLoopCount( &annai'getLoopCount());
&annai'end();
return 0;
}
################################################################################
# 請求書情報の設定
################################################################################
sub setSeikyuInfo
{
local( $id) = @_;
# 請求データモジュールの初期化(1:ファイル読み込み)
if( &seikyu'init(1) < 0) {
return -1;
}
# 請求データの当該レコード読み込み
if( &seikyu'readRecordId( $id) < 0) {
&seikyu'end();
return -1;
}
# テンプレートモジュールにキーワード追加
&template'addItemTable( %seikyu'g_Items);
&template'setLoopCount( &seikyu'getLoopCount());
&seikyu'end();
return 0;
}
################################################################################
# 名前の比較
# 大文字小文字を区別しない
# return
# 0 : 一致
# -1 : 不一致
################################################################################
sub compName
{
local( $name1, $name2) = @_;
$n1 = &common'toUpper( $name1);
$n2 = &common'toUpper($name2);
#print "$n1 vs $n2
";
if( $n1 eq $n2) {
return 0;
} else {
return -1;
}
}