<?php
/**
* ページセレクタ
*
* PHP version 5
*
* @package    renderers
* @author     stk2k <stk2k@sazysoft.com>
* @copyright  2008 stk2k, sazysoft
*/

class MyPageSelector extends CharcoalComponent implements IPageSelector
{

	/*
	 *	コンストラクタ
	 */
	public function __construct()
	{
		parent::__construct();
	}

	/**
	 *   ページを決定する
	 */
	public function selectPage( String $proc_name, TaskSnapshot $snapshot, Response $response )
	{
		switch( $proc_name ){
		case 'index':
			{
				// 接続チェックタスクの状態確認
				$connect_check_task = $snapshot->get( s('db_connect_check.success') );
				$table_check_task = $snapshot->get( s('db_table_check.success') );
				if ( !$connect_check_task || !$table_check_task ){
					// 接続できなければセットアップ画面（ステップ１）を表示
					$response->set( s('template_name'), 'setup.tpl' );
					$response->set( s('step'), '1' );
				}
				else{
					// 接続できたら商品一覧画面を表示
					$shouhin_list = $snapshot->get( s('shouhin_list.shouhin_list') );
					$response->set( s('shouhin_list'), $shouhin_list );
					$response->set( s('template_name'), 'shouhin.tpl' );

					// メーカー一覧を検索
					$manufacturer_list = $snapshot->get( s('manufacturer_list.manufacturer_list') );
					$response->set( s('manufacturer_list'), $manufacturer_list );
				}
			}
			break;
		case 'shouhin_add':
		case 'shouhin_del':
		case 'shouhin_update':
			{
				// 商品一覧画面を表示
				$shouhin_list = $snapshot->get( s('shouhin_list.shouhin_list') );
				$response->set( s('shouhin_list'), $shouhin_list );
				$response->set( s('template_name'), 'shouhin.tpl' );

				// メーカー一覧を検索
				$manufacturer_list = $snapshot->get( s('manufacturer_list.manufacturer_list') );
				$response->set( s('manufacturer_list'), $manufacturer_list );
			}
			break;
		case 'shouhin_edit':
			{
				// 商品編集画面を表示
				$shouhin = $snapshot->get( s('shouhin_edit.shouhin') );
				$response->set( s('shouhin'), $shouhin );
				$response->set( s('template_name'), 'shouhin_edit.tpl' );

				// メーカー一覧を検索
				$manufacturer_list = $snapshot->get( s('manufacturer_list.manufacturer_list') );
				$response->set( s('manufacturer_list'), $manufacturer_list );
			}
			break;
		case 'db_connect':
			{
				// 接続テストタスクの状態確認
				$db_check_task = $snapshot->get( s('db_connect_check.success') );
				if ( !$db_check_task ){
					// 接続できなければセットアップ画面を表示
					$response->set( s('template_name'), 'setup.tpl' );
					$response->set( s('step'), '1' );
				}
				else{
					// 接続できたらステップ２を表示
					$response->set( s('template_name'), 'setup_step2.tpl' );
					$response->set( s('step'), '2' );
				}
			}
			break;
		case 'db_create':
			{
				// インスタンスチェックタスクの状態確認
				$instance_check_task = $snapshot->get( s('db_instance_check.success') );
				if ( !$instance_check_task ){
					// 接続できなければセットアップ画面を表示
					$response->set( s('template_name'), 'setup.tpl' );
					$response->set( s('step'), '1' );
				}
				else{
					// 作成したデータベース名を取得
					$db_name = $snapshot->get( s('db_instance_create.db_name') );

					// データベース名を出力
					$response->set( s('db_name'), $db_name );

					// ステップ３を表示
					$response->set( s('template_name'), 'setup_step3.tpl' );
					$response->set( s('step'), '3' );
				}
			}
			break;
		case 'tbl_create':
			{
				// テーブル生成タスクの状態確認
				$table_create_task = $snapshot->get( s('db_table_create.success') );
				if ( !$table_create_task ){
					// 接続できなければセットアップ画面を表示
					$response->set( s('template_name'), 'setup.tpl' );
					$response->set( s('step'), '1' );
				}
				else{
					// ステップ４を表示
					$response->set( s('template_name'), 'setup_step4.tpl' );
					$response->set( s('step'), '4' );
				}
			}
			break;
		}

		return s('top_page.tpl');
	}
}
