<?
class ShouhinModule implements charcoal_IModule
{
	/*
	 *    コンストラクタ
	 */
	public function __construct()
	{
	}

	/*
	 * モジュール名
	 */
	public function getModuleName()
	{
		return "Top Page View module";
	}

	/*
	 * モジュールを初期化する
	 */
	public function init( charcoal_Config $config )
	{
	}

	/*
	 * モジュールの処理を実行する
	 */
	public function execute( $action, charcoal_Request $request, charcoal_ProcedureContext $context, charcoal_Response $response )
	{
		switch ( $action ){
		case 'view':
			// 商品一覧を検索
			$model = new ShouhinModel();
			$shouhin_list = $context->getDB()->findAll( $model, NULL, 'DB_TO_HTML' );
			// コンテキストに値をセット
			$response->set( "shouhin_list", $shouhin_list );
			// top_page.tplの中の名コンテンツにmain/shouhin.tplを指定
			$response->set( "template_name", "shouhin.tpl" );
			// テンプレートIDのセット: top_pageテンプレートを使用
			$context->set( "smarty_template", "top_page" );
			break;
		case 'update':
			// Requestパラメータから登録する商品データを取得
			$id		 	= $request->get( "id" );
			$item_code 	= $request->get( "code" );
			$item_name 	= $request->get( "name" );
			$price 		= $request->get( "price" );
			// DTO作成
			$dto = new charcoal_DTO();
			// データをセット
			$dto->id		= $id;
			$dto->item_code = $item_code;
			$dto->item_name = $item_name;
			$dto->price 	= $price;
			// DB保存
			$context->db->save( new ShouhinModel(), $dto, 'PHP_TO_DB' );
			break;
		case 'edit':
			// RequestパラメータからIDを取得
			$id = $request->get( "id" );
			// 検索
			$shouhin_dto = $context->db->findById( new ShouhinModel(), $id, 'DB_TO_HTML' );
			// コンテキストにセット
			$response->set( "shouhin", $shouhin_dto );
			// メインテンプレート名をセット
			$response->set( "template_name", "shouhin_edit.tpl" );
			// テンプレートIDのセット: top_pageテンプレートを使用
			$context->set( "smarty_template", "top_page" );
			break;
		case 'delete':
			// Requestパラメータから削除する商品データのIDを取得
			$id = $request->get( "id" );
			// 削除
			$context->db->destroyById( new ShouhinModel(), $id );
			break;
		case 'add':
			// Requestパラメータから登録する商品データを取得
			$item_code 	= $request->get( "code" );
			$item_name 	= $request->get( "name" );
			$price 		= $request->get( "price" );
			// データをセット
			$dto = new charcoal_DTO();
			$dto->item_code = $item_code;
			$dto->item_name = $item_name;
			$dto->price 	= $price;
			// DB保存
			$context->db->save( new ShouhinModel(), $dto, 'PHP_TO_DB' );
		}

		return 'success';
	}
}
