#!/usr/bin/perl
#
use CGI;
use strict;

use vars qw(
		$job_reply_to
		$job_from
		$job_mailto
		$JOB_CNT
		$JOB_ERROR
		$JOB_1
		$JOB_2
		$JOB_3
		@job_table
		);

use CGI::Carp qw(fatalsToBrowser);

## configuration
require "./common/jcode.pl";
require "./common/conf.pl";
require "./common/sub.pl";
require "./common/mimew.pl";

## CGI instance
my $query = new CGI;

print $query->header("text/html; charset=Shift_JIS");

my $error_msg;
if ($query->param('p_submit1_2') || $query->param('p_submit1_3')) {
	if ($query->param('kanji') eq "") {
		$error_msg .= "1.氏名の入力に誤りがあります。<br>\n";
	}
	if ($query->param('sex') eq "") {
		$error_msg .= "3.性別の入力に誤りがあります。<br>\n";
	}
	if (check_date($query->param('yyyy'), $query->param('mm'), $query->param('dd'))) {
		$error_msg .= "4.生年月日の入力に誤りがあります。<br>\n";
	}
	if (!($query->param('age')) || $query->param('age') =~ /\D/) {
		$error_msg .= "5.年齢の入力に誤りがあります。<br>\n";
	}
	if (length($query->param('zip1')) ne 3 || length($query->param('zip2')) ne 4 
	||  $query->param('zip1') =~ /\D/ ||  $query->param('zip2') =~ /\D/) {
		$error_msg .= "6.郵便番号の入力に誤りがあります。<br>\n";
	}
	if ($query->param('address1') eq "") {
		$error_msg .= "7.現住所の入力に誤りがあります。<br>\n";
	}
	if ($query->param('mobile1') eq "" || $query->param('mobile2') eq "" || $query->param('mobile3') eq "") {
		if ($query->param('tel1') eq "" || $query->param('tel2') eq "" || $query->param('tel3') eq "") {
			$error_msg .= "8.電話番号の入力に誤りがあります。<br>\n";
		}
	}
	my $tel = $query->param('tel1') . $query->param('tel2') . $query->param('tel3');
	if (!(length($tel) == 10 || length($tel) == 11 || length($tel) == 0) || $tel =~ /\D/) {
		$error_msg .= "8.電話番号の入力に誤りがあります。<br>\n";
	}
	if ($query->param('tel1') eq "" || $query->param('tel2') eq "" || $query->param('tel3') eq "") {
		if ($query->param('mobile1') eq "" || $query->param('mobile2') eq "" || $query->param('mobile3') eq "") {
			$error_msg .= "9.携帯番号の入力に誤りがあります。<br>\n";
		}
	}
	my $mobile = $query->param('mobile1') . $query->param('mobile2') . $query->param('mobile3');
	if (!(length($mobile) == 10 || length($mobile) == 11 || length($mobile) == 0) || $mobile =~ /\D/) {
		$error_msg .= "9.携帯番号の入力に誤りがあります。<br>\n";
	}
	if ($query->param('emergency_tel1') ne "" || $query->param('emergency_tel2') ne "" || $query->param('emergency_tel3') ne "") {
		my $emergency_tel = $query->param('emergency_tel1') . $query->param('emergency_tel2') . $query->param('emergency_tel3');
		if (!(length($emergency_tel) == 10 || length($emergency_tel) == 11) || $emergency_tel =~ /\D/) {
			$error_msg .= "11. 緊急連絡先電話番号の入力に誤りがあります。<br>\n";
		}
	}
	if ($query->param('email') ne "") {
		if (email_check($query->param('email'))) {
			$error_msg .= "13.メールアドレスの入力に誤りがあります。<br>\n";
		}
	}
	if ($query->param('academic1_1') eq "" || $query->param('academic1_2') eq "" || $query->param('academic1_3') eq "") {
		$error_msg .= "14.最終学歴の入力に誤りがあります。<br>\n";
	}
	if ($query->param('category1') eq "") {
		$error_msg .= "15.希望職種の入力に誤りがあります。<br>\n";
	}
	if ($query->param('work1_1') eq "" || $query->param('work1_2') eq "" || $query->param('work2_1') eq "" || $query->param('work2_2') eq "") {
		$error_msg .= "16.勤務可能期間の入力に誤りがあります。<br>\n";
	}
	if ($query->param('commuting') == 2 && $query->param('vehicle') eq "") {
		$error_msg .= "19.車輌持込みの入力に誤りがあります。<br>\n";
	}
	if ($query->param('guardian_tel1') ne "" || $query->param('guardian_tel2') ne "" || $query->param('guardian_tel3') ne "") {
		my $guardian_tel = $query->param('guardian_tel1') . $query->param('guardian_tel2') . $query->param('guardian_tel3');
		if (!(length($guardian_tel) == 10 || length($guardian_tel) == 11) || $guardian_tel =~ /\D/) {
			$error_msg .= "22.電話番号の入力に誤りがあります。<br>\n";
		}
	}
	if ($error_msg) {
		&print_html($JOB_ERROR, $query, "$error_msg", 'p_submit1_1', '');
	}
}

if ($query->param('p_submit1_1')) {
	&print_html($JOB_1, $query, '', '', '3');
} elsif ($query->param('p_submit1_2')) {
	&print_html($JOB_2, $query, '', '', '1');
} elsif ($query->param('p_submit1_3')) {
	my $sql;
	my %get_sex = &get_sex();
	my %get_commuting = &get_commuting();
	my %get_vehicle = &get_vehicle();
	my $number = sprintf("%04d", &getID1);
	$query->param('number', $number);
	foreach my $key (@job_table) {
		$a = "";
		$key =~ s/\'/\\'/g;
		if ($key eq 'sex') {
			$a = jcode::sjis($get_sex{$query->param($key)});
		} elsif ($key eq 'commuting') {
			$a = jcode::sjis($get_commuting{$query->param($key)});
		} elsif ($key eq 'vehicle') {
			$a = jcode::sjis($get_vehicle{$query->param($key)});
		} else {
			$a = &htmlesc2($query->param($key));
		}
		&jcode'h2z_sjis(*a);
		&jcode'convert (*a, 'sjis');
		$a =~ s/\r//g;
		$a =~ s/\n//g;
		$a =~ s/\"/\"\"/g;
		$a =~ s/\\/\\\\/g;
		if ($a) {
			$sql .= "\"" . $a . "\"," ;
		} else {
			$sql .= "\"\"," ;
		}
	}
    ## 時間の取得
	my $today = &now_date();
	$today =~ s/\-/\//g;
	$sql .= "\"$today\"";
	#print "$sql\n";

	&mail_send1($query, $number) if ($query->param('email')); # 登録者へ返信
	&mail_send2($query, $number, $sql); # 担当者へ返信

	&print_html($JOB_3, $query, '', '', '');
} else {
	&print_html($JOB_1, $query, '', '', '');
}

exit();

######
# IDの取得
######
sub getID1{
	my ($line, $filename, $id);
	$filename = "$JOB_CNT";
	$id = 1;
	
	if(-f $filename){
		open(IN, $filename);
		eval{ flock(IN, 1) };
		chop($id = <IN>);
		close IN;
		$id++;
	}
	
	open(OUT, ">$filename");
	eval{ flock(OUT, 1) };
	print OUT "$id\n";
	close OUT;
	
	return $id;
}

######
# メール送信（登録者へ）
######
sub mail_send1($$){
	my $query  = shift;
	my $number = shift;
	my $email  = $query->param('email');

	my $Subject = "スキージャム勝山アルバイト登録完了メール";
	$Subject = jcode::sjis($Subject);
	my @contents_email = split(/\,/, $email);
	foreach my $email_to (@contents_email) {
		my $pid        = open(SENDMAIL,"| /usr/sbin/sendmail -t");
		my $mail_message = "";
		$mail_message .= "Reply-To: $job_reply_to\n";
		$mail_message .= "From: $job_from\n";
		$mail_message .= "To: $email_to\n";

		$mail_message .= "Subject: $Subject\n";
		$mail_message .= "Mime-Version: 1.0\n";
		$mail_message .= "Content-Transfer-Encoding: 7bit\n";
		$mail_message .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n";
		$mail_message .= "\n";
		my $mail_message2 = &main'mimeencode($mail_message);
#		my $mail_message2 = $mail_message;

		$mail_message2 .= jcode::euc(&htmlesc2($query->param('kanji'))) . " 様\n";
		$mail_message2 .= "\n";
		$mail_message2 .= "スキージャム勝山\n";
		$mail_message2 .= "冬季アルバイトへのご応募ありがとうございます。\n";
		$mail_message2 .= "後日、当社より確認のご連絡をさせていただきますので、\n";
		$mail_message2 .= "宜しくお願い申し上げます。\n";
		$mail_message2 .= "\n";
		$mail_message2 .= "=========================================\n";
		$mail_message2 .= "■あなたの管理番号　：　" . &htmlesc2($number) . "\n";
		$mail_message2 .= "=========================================\n";
		$mail_message2 .= "管理番号はご本人への履歴書の管理・連絡時に必要となります。\n";
		$mail_message2 .= "最後まで大切に保管してください。\n";
		$mail_message2 .= "\n";
		$mail_message2 .= "-----------------------------------------\n";
		$mail_message2 .= "【ご本人写真送付のお願い】\n";
		$mail_message2 .= "●有効写真\n";
		$mail_message2 .= "　カラー写真にて正面胸上から1人でとっているもの\n";
		$mail_message2 .= "　3.0×2.5cm\n";
		$mail_message2 .= "●郵送先\n";
		$mail_message2 .= "　〒911-0000　福井県勝山市170-70\n";
		$mail_message2 .= "　スキージャム勝山　「採用担当」まで\n";
		$mail_message2 .= "※ 写真を送付頂かない場合は、応募は無効とさせていただきますので、ご了承下さいませ。\n";
		$mail_message2 .= "※ お問い合わせは、\n";
		$mail_message2 .= "TEL：\n";
		$mail_message2 .= "0779-87-6109（総合受付）\n";
		$mail_message2 .= "0779-87-6666（採用専用）\n";
		$mail_message2 .= "採用担当：長谷川まで。\n";
		$mail_message2 .= "-----------------------------------------\n";

#		&jcode'z2h_euc(*mail_message2);
#		&jcode'convert(*mail_message2, 'jis');
		$mail_message2 = jcode::jis($mail_message2);

		print SENDMAIL $mail_message2;
		close(SENDMAIL);
	}
}

######
# メール送信（担当者へ）
######
sub mail_send2($$$){
	my $query  = shift;
	my $number = shift;
	my $sql    = shift;
	my $attach_filename = "job_" . $number . ".txt";
	my $attach_data     = $sql;
	my $attach          = "";
	my $boundary        = "------_" . time . "_" . $$;

	my $oldDelim = $/;
	undef $/;

	$attach = &bodyencode($attach_data, "b64");
	$attach .= &benflush("b64");

	$attach_filename = mimeencode(jcode'sjis($attach_filename));

	my $Subject = "スタッフ登録通知";
	$Subject = jcode::sjis($Subject);
	my @contents_email = split(/\,/, $job_mailto);
	foreach my $email_to (@contents_email) {
		my $pid        = open(SENDMAIL,"| /usr/sbin/sendmail -t");
		my $mail_message = "";
		$mail_message .= "Reply-To: $job_reply_to\n";
		$mail_message .= "From: $job_from\n";
		$mail_message .= "To: $email_to\n";

		$mail_message .= "Subject: $Subject\n";
		$mail_message .= "Mime-Version: 1.0\n";
		$mail_message .= "Content-Type: Multipart/Mixed; boundary=\"$boundary\"\n";
		$mail_message .= "Content-Transfer-Encoding:Base64\n";

		# 本文
		$mail_message .= "--$boundary\n";
		$mail_message .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n";
		$mail_message .= "\n";
		my $mail_message2 = &main'mimeencode($mail_message);
#		my $mail_message2 = $mail_message;

		$mail_message2 .= jcode::sjis("【スキージャム勝山アルバイト募集に応募がありました】\n");
		$mail_message2 .= "\n";
#		$mail_message2 .= "$sql\n";

		# 添付ファイル
		$mail_message2 .= "--$boundary\n";
		$mail_message2 .= "Content-Type: application/octet-stream; name=\"$attach_filename\"\n";
		$mail_message2 .= "Content-Transfer-Encoding: base64\n";
		$mail_message2 .= "Content-Disposition: attachment; filename=\"$attach_filename\"\n";
		$mail_message2 .= "\n";
		$mail_message2 .= "$attach\n";
		$mail_message2 .= "\n";

		$mail_message2 .= "--$boundary" . "--\n";

#		&jcode'z2h_euc(*mail_message2);
#		&jcode'convert(*mail_message2, 'jis');
		$mail_message2 = jcode::jis($mail_message2);

		print SENDMAIL $mail_message2;
		close(SENDMAIL);
	}
	# デリミタの復元
	$/ = $oldDelim;
}
