package jp.arcanum.myaddress.pages.update;

import jp.arcanum.myaddress.pages.list.ListPage;
import jp.arcanum.myaddress.util.MyUtil;

import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.Model;
import org.apache.wicket.validation.validator.NumberValidator;

public class AddPage extends AbstractDetailPage{

	/**
	 * 名前（漢字）
	 */
	private TextField _namekanji = new TextField("NAME_KANJI", new Model());
	
	/**
	 * 名前（カナ）
	 */
	private TextField _namekana = new TextField("NAME_KANA", new Model());
	
	/**
	 * 郵便番号（上３桁）
	 */
	private TextField _yubinkami = new TextField("YUBIN_KAMI", new Model());
	
	/**
	 * 郵便番号（下４桁）
	 */
	private TextField _yubinshimo = new TextField("YUBIN_SHIMO", new Model());
	
	
	/**
	 * 住所
	 */
	private TextArea _address = new TextArea("ADDRESS", new Model());
	
	/**
	 * 電話番号
	 */
	private TextField _telno = new TextField("TEL", new Model());

	/**
	 * ＦＡＸ番号
	 */
	private TextField _faxno = new TextField("FAX", new Model());

	/**
	 * 追加ボタン
	 */
	private Button _add = new Button("ADD"){
		public void onSubmit(){
			onClickAdd();
		}
	};
	
	
	/**
	 * コンストラクタ
	 * @param param ページ間引数
	 *
	 */
	public AddPage(PageParameters param){
		
		//　名前（漢字）
		_form.add(_namekanji);
		
		
		//　名前（カナ）
		_form.add(_namekana);
		
		
		//　郵便番号（上３桁）
		_form.add(_yubinkami);
		
		//　郵便番号（上４桁）
		_form.add(_yubinshimo);
		
		
		//　住所
		_form.add(_address);
		
		
		//　電話番号
		_form.add(_telno);
		
		
		//　ＦＡＸ番号
		_form.add(_faxno);
		
		
		//　追加ボタン
		_form.add(_add);
		
	}
	
	
	/**
	 * 追加ボタン処理
	 *
	 */
	private void onClickAdd(){
		
		
		//　名前（漢字）
		String namekanji = MyUtil.trimAll((String)_namekanji.getModelObject());
		if(namekanji.equals("")){
			error("名前（漢字）を入力してください。");
			return;
		}
		if(namekanji.getBytes().length > 50){
			error("名前（漢字）は５０バイト以内です。");
			return;
		}
		
		//　名前（カナ）
		String namekana  = MyUtil.trimAll((String)_namekana.getModelObject());
		if(namekana.equals("")){
			error("名前（カナ）を入力してください。");
			return;
		}
		if(namekana.getBytes().length > 50){
			error("名前（カナ）は５０バイト以内です。");
			return;
		}
		
		//　郵便番号
		String yubin = MyUtil.trimAll((String)_yubinkami.getModelObject()) +
				       MyUtil.trimAll((String)_yubinshimo.getModelObject());
		if(!yubin.matches("[0-9][0-9][0-9][0-9][0-9][0-9][0-9]")){
			error("郵便番号が不正です");
			return;
		}
		
		//　住所
		String address = MyUtil.trimAll((String)_address.getModelObject());
		if(address.equals("")){
			error("住所を入力してください。");
			return;
		}
		if(address.getBytes().length > 200){
			error("住所は２００バイト以内にしてください。");
			return;
		}
		
		//　電話番号
		String telno = MyUtil.trimAll((String)_telno.getModelObject());
		if(!telno.matches("[0-9-]+")){
			error("電話番号が不正です。");
			return;
		}
		
		//　ＦＡＸ番号
		String faxno = MyUtil.trimAll((String)_faxno.getModelObject());
		if(!faxno.equals("") && !faxno.matches("[0-9-]+")){
			error("ＦＡＸ番号が不正です。");
			return;
		}
		
		
		String sql = "INSERT INTO MYADDRESS VALUES(" +
					 "NEXT VALUE FOR SQADDRID," +
					 MyUtil.quote(namekanji) + "," +
					 MyUtil.quote(namekana) + "," +
					 MyUtil.quote(yubin) + "," +
					 MyUtil.quote(address) + "," +
					 MyUtil.quote(telno) + "," +
					 MyUtil.quote(faxno) + 
					 ")";
		
		int insert = MyUtil.update(sql);
		
	
		//　一覧に戻る
		setResponsePage(ListPage.class);

		
	}
	
	
}
