#!/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; } }