/**
  * フリーマーケット詳細表示画面
  *
  * @access public
  * @param mixed $fleamarket_id フリーマーケットID
  * @return void
  * @author ida
  */
 public function get_detail($fleamarket_id)
 {
     Asset::css('jquery-ui.min.css', array(), 'add_css');
     Asset::js('jquery-ui.min.js', array(), 'add_js');
     if (!$fleamarket_id) {
         return $this->forward('errors/notfound', 404);
     }
     $fleamarket = \Model_Fleamarket::findDetail($fleamarket_id);
     if (!$fleamarket) {
         return $this->forward('errors/notfound', 404);
     }
     $this->setHtmlReplace(array('AREA' => $this->getArea($fleamarket['prefecture_id']), 'AREA_NAME' => $this->getAreaName($fleamarket['prefecture_id']), 'FLEAMARKET_NAME' => $fleamarket['name'], 'LOCATION_ID' => $fleamarket['location_id'], 'LOCATION_NAME' => $fleamarket['location_name']));
     $fleamarket_abouts = \Model_Fleamarket_About::findByFleamarketId($fleamarket_id);
     $fleamarket_images = \Model_Fleamarket_Image::findByFleamarketId($fleamarket_id);
     $entry_styles = \Model_Fleamarket_Entry_Style::findByFleamarketId($fleamarket_id);
     $entries = \Model_Entry::getTotalEntryByFleamarketId($fleamarket_id);
     $fleamarket['entries'] = $entries;
     $view_model = \ViewModel::forge('search/detail');
     $view_model->set('fleamarket', $fleamarket, false);
     $view_model->set('fleamarket_images', $fleamarket_images, false);
     $view_model->set('fleamarket_abouts', $fleamarket_abouts, false);
     $view_model->set('fleamarket_entry_styles', $entry_styles, false);
     $view_model->set('entries', $entries, false);
     $view_model->set('prefectures', \Config::get('master.prefectures'), false);
     $view_model->set('user', $this->login_user, false);
     $this->template->content = $view_model;
 }
 /**
  * 会場詳細
  *
  * @access public
  * @param mixed $location_id 会場ID
  * @param mixed $fleamarket_id フリマID
  * @return void
  * @author ida
  */
 public function action_detail($location_id = null, $fleamarket_id = null)
 {
     if (!$location_id) {
         return $this->forward('errors/notfound', 404);
     }
     \Asset::css('jquery-ui.min.css', array(), 'add_css');
     \Asset::js('jquery-ui.min.js', array(), 'add_js');
     // 会場に紐づくフリマを取得する
     $fleamarket_date_list = \Model_Fleamarket::find('all', array('select' => array('fleamarket_id', 'event_date'), 'where' => array(array('location_id' => $location_id)), 'order_by' => array('event_date' => 'asc')));
     if (!$location_id || !$fleamarket_date_list) {
         \Response::redirect('errors/notfound');
     }
     if (!$fleamarket_id) {
         $first_fleamarket = end($fleamarket_date_list);
         $fleamarket_id = $first_fleamarket['fleamarket_id'];
     }
     $fleamarket = \Model_Fleamarket::findDetail($fleamarket_id);
     if (!$fleamarket) {
         \Response::redirect('errors/notfound');
     }
     $this->setHtmlReplace(array('AREA' => $this->getArea($fleamarket['prefecture_id']), 'AREA_NAME' => $this->getAreaName($fleamarket['prefecture_id']), 'LOCATION_ID' => $fleamarket['location_id'], 'LOCATION_NAME' => $fleamarket['location_name'], 'FLEAMARKET_NAME' => $fleamarket['name']));
     $fleamarket_abouts = \Model_Fleamarket_About::findByFleamarketId($fleamarket_id);
     $fleamarket_images = \Model_Fleamarket_Image::findByFleamarketId($fleamarket_id);
     $entry_styles = \Model_Fleamarket_Entry_Style::findByFleamarketId($fleamarket_id);
     $view_model = \ViewModel::forge('location/detail');
     $view_model->set('fleamarket', $fleamarket, false);
     $view_model->set('fleamarket_date_list', $fleamarket_date_list, false);
     $view_model->set('fleamarket_images', $fleamarket_images, false);
     $view_model->set('fleamarket_abouts', $fleamarket_abouts, false);
     $view_model->set('fleamarket_entry_styles', $entry_styles, false);
     $view_model->set('prefectures', \Config::get('master.prefectures'), false);
     $view_model->set('user', $this->login_user, false);
     $this->template->content = $view_model;
 }
 /**
  * 数字で渡ってくるパラメータを文字列に変換したものを付与します。
  *
  * @access private
  * @return void
  * @author shimma
  */
 public function addDisplayStrings($fleamarket)
 {
     /**
      * エントリースタイル名
      * '1' => '手持ち出店',
      * '2' => '手持ち出店(プロ)',
      * '3' => '車出店',
      * '4' => '車出店(プロ)',
      * '5' => '企業手持ち出店',
      * '6' => '企業車出店',
      * '7' => '飲食店',
      */
     if (!empty($fleamarket['fleamarket_entry_style_id'])) {
         $fleamarket['fleamarket_entry_style_name'] = Config::get("master.entry_styles.{$fleamarket['fleamarket_entry_style_id']}", '-');
     }
     /**
      *  エントリー費用
      *  現在の所、車出店など横に出している
      */
     if (isset($fleamarket['booth_fee']) && isset($fleamarket['fleamarket_entry_style_name'])) {
         $fleamarket['booth_fee_string'] = $this->createFeeString($fleamarket['fleamarket_entry_style_name'], $fleamarket['booth_fee']);
     } else {
         $fleamarket['booth_fee_string'] = 'お問い合わせ';
     }
     //@todo 果たしてfleamarketで丸ごとarrayを渡すのはいいのか確認
     $fleamarket['entry_styles'] = \Model_Fleamarket_Entry_Style::getFleamarketEntryStyle($fleamarket);
     $fleamarket['total_booth'] = \Model_Fleamarket_Entry_Style::getTotalBooth($fleamarket);
     return $fleamarket;
 }
 /**
  * フリーマーケット情報に紐づくフリーマーケット出店形態情報を取得する
  *
  * @access private
  * @param array $fleamarket フリーマーケット情報
  * @return array
  * @author shimma
  * @author ida
  */
 private function getFleamarketEntryStyle($fleamarket_id)
 {
     if (empty($fleamarket_id)) {
         return false;
     }
     $entry_style_fields = array('field' => array('entry_style_id', 'booth_fee', 'max_booth', 'reservation_booth_limit'));
     $result = \Model_Fleamarket_Entry_Style::findByFleamarketId($fleamarket_id, $entry_style_fields);
     return $result;
 }
 /**
  * フリーマーケット情報に紐づくフリーマーケット出店形態情報を取得する
  *
  * @access private
  * @param array $fleamarket_list フリーマーケット情報
  * @return array
  * @author ida
  */
 private function getFleamarketEntryStyle($fleamarket_list)
 {
     if (!$fleamarket_list) {
         return false;
     }
     $entry_style_fields = array('field' => array('entry_style_id', 'booth_fee', 'max_booth', 'reservation_booth_limit'));
     $result = array();
     foreach ($fleamarket_list as $fleamarket) {
         $entry_styles = \Model_Fleamarket_Entry_Style::findByFleamarketId($fleamarket['fleamarket_id'], $entry_style_fields);
         $fleamarket['entry_styles'] = $entry_styles;
         $result[] = $fleamarket;
     }
     return $result;
 }
 /**
  * フリーマーケット情報に紐づくフリーマーケット出店形態情報を取得する
  *
  * @access private
  * @param array $fleamarket フリーマーケット情報
  * @return array
  * @author ida
  */
 private function getFleamarketEntryStyle($fleamarket)
 {
     if (!$fleamarket) {
         return false;
     }
     $entry_style_fields = array('field' => array('entry_style_id', 'booth_fee', 'max_booth', 'reservation_booth_limit'));
     $entry_styles = \Model_Fleamarket_Entry_Style::findByFleamarketId($fleamarket['fleamarket_id'], $entry_style_fields);
     $fleamarket['entry_styles'] = $entry_styles;
     $total_reserved_booth = 0;
     $entry = \Model_Entry::getTotalEntryByFleamarketId($fleamarket['fleamarket_id'], false);
     if ($entry) {
         $total_reserved_booth = $entry[0]['reserved_booth'];
     }
     $fleamarket['total_reserved_booth'] = $total_reserved_booth;
     return $fleamarket;
 }
 /**
  * フリーマーケット情報に紐づくフリーマーケット出店形態情報を取得する
  *
  * @access private
  * @param array $fleamarket_list フリーマーケット情報
  * @return array
  * @author ida
  */
 private function getFleamarketEntryStyle($fleamarket_list = array())
 {
     if (!$fleamarket_list) {
         return false;
     }
     $result = array();
     foreach ($fleamarket_list as $fleamarket) {
         $fleamarket_entry_styles = \Model_Fleamarket_Entry_Style::find('all', array('where' => array(array('fleamarket_id', $fleamarket['fleamarket_id'])), 'order_by' => array('entry_style_id')));
         $results = $this->createReservation($fleamarket_entry_styles);
         list($entry_styles, $total_reseved_booth, $total_booth) = $results;
         $fleamarket['total_reseved_booth'] = $total_reseved_booth;
         $fleamarket['total_booth'] = $total_booth;
         $fleamarket['entry_styles'] = $entry_styles;
         $result[] = $fleamarket;
     }
     return $result;
 }
 /**
  * フリマ出店形態情報を登録する
  *
  * @access private
  * @param object フリマ情報
  * @return void
  * @author kobayashi
  * @author ida
  */
 private function registerFleamarketEntryStyle($fleamarket)
 {
     $entry_styles = \Config::get('master.entry_styles');
     $fieldsets = $this->getFieldsets();
     foreach ($entry_styles as $id => $entry_style) {
         $fieldset = $fieldsets['fleamarket_entry_styles'][$id];
         $input = $fieldset->input();
         $fleamarket_entry_style = \Model_Fleamarket_Entry_Style::find('first', array('where' => array('fleamarket_id' => $fleamarket->fleamarket_id, 'entry_style_id' => $id)));
         $data = array('booth_fee' => $input['booth_fee'], 'max_booth' => $input['max_booth'], 'reservation_booth_limit' => $input['reservation_booth_limit']);
         if (strlen($input['booth_fee'])) {
             $administrator_id = $this->administrator->administrator_id;
             if ($fleamarket_entry_style) {
                 $data['updated_user'] = $administrator_id;
             } else {
                 $fleamarket_entry_style = \Model_Fleamarket_Entry_Style::forge(array('fleamarket_id' => $fleamarket->fleamarket_id, 'entry_style_id' => $id));
                 $data['created_user'] = $administrator_id;
             }
             $fleamarket_entry_style->set($data)->save();
         } else {
             if ($fleamarket_entry_style) {
                 $fleamarket_entry_style->delete();
             }
         }
     }
 }
    if ($entry_style_rand > 0) {
        $entry_style_list = array_rand($entry_styles, $entry_style_rand);
        if (!is_array($entry_style_list)) {
            $entry_style_list = (array) $entry_style_list;
        }
        foreach ($entry_style_list as $entry_style_id) {
            if ($shop_fee_list[$shop_fee] == \Model_Fleamarket::SHOP_FEE_FLAG_FREE) {
                $booth_fee = 0;
            } else {
                $booth_fee_key = array_rand($booth_fee_list);
                $booth_fee = $booth_fee_list[$booth_fee_key];
            }
            $max_booth = mt_rand(20, 100);
            $reservation_booth_limit = mt_rand(1, 10);
            $entry_style_line = array('fleamarket_id' => $fleamarket_id, 'entry_style_id' => $entry_style_id, 'booth_fee' => $booth_fee, 'max_booth' => $max_booth, 'reservation_booth_limit' => $reservation_booth_limit, 'created_user' => 0, 'updated_user' => null, 'created_at' => \Date::forge()->format('mysql'));
            \Model_Fleamarket_Entry_Style::forge($entry_style_line)->save();
        }
    }
    // フリマ説明情報
    $about_rand = mt_rand(0, 7);
    if ($about_rand > 0) {
        $about_list = array_rand($about_titles, $about_rand);
        if (!is_array($about_list)) {
            $about_list = (array) $about_list;
        }
        foreach ($about_list as $about_id) {
            $about_line = array('fleamarket_id' => $fleamarket_id, 'about_id' => $about_id, 'title' => $about_titles[$about_id], 'description' => $abouts[$about_id], 'created_user' => 0, 'updated_user' => null, 'created_at' => \Date::forge()->format('mysql'));
            \Model_Fleamarket_About::forge($about_line)->save();
        }
    }
}
use Model_User;
$item_categories = array('1' => 'リサイクル品', '2' => '手作り品');
$item_genres = \Model_Entry::getItemGenres();
$link_from_list = \Model_Entry::getLinkFromList();
$entry_statuses = \Model_Entry::getEntryStatuses();
$fleamarkets = \Model_Fleamarket::find('all', array('select' => array('fleamarket_id')));
$users = \Model_User::find('all', array('select' => array('user_id')));
for ($i = 1; $i < 1000; $i++) {
    $item_category = array_rand($item_categories);
    $item_genre = array_rand($item_genres);
    $link_from = array_rand($link_from_list);
    $entry_status = array_rand($entry_statuses);
    while (true) {
        $fleamarket_key = array_rand($fleamarkets);
        $fleamarket = $fleamarkets[$fleamarket_key];
        $fleamarket_entry_styles = \Model_Fleamarket_Entry_Style::find('all', array('select' => array('fleamarket_entry_style_id'), 'where' => array(array('fleamarket_id', $fleamarket->fleamarket_id))));
        if ($fleamarket_entry_styles) {
            $fleamarket_entry_style_key = array_rand($fleamarket_entry_styles);
            $fleamarket_entry_style = $fleamarket_entry_styles[$fleamarket_entry_style_key];
            break;
        }
    }
    $user_key = array_rand($users);
    $user = $users[$user_key];
    $data = array('user_id' => $user->user_id, 'fleamarket_id' => $fleamarket->fleamarket_id, 'fleamarket_entry_style_id' => $fleamarket_entry_style->fleamarket_entry_style_id, 'reservation_number' => str_pad($fleamarket->fleamarket_id, 5, "0", STR_PAD_LEFT) . '-' . str_pad($i, 5, "0", STR_PAD_LEFT), 'item_category' => $item_category, 'item_genres' => $item_genres[$item_genre], 'reserved_booth' => mt_rand(1, 3), 'link_from' => $link_from_list[$link_from], 'remarks' => '初めてフリマを予約します' . $i, 'entry_status' => $entry_status, 'created_user' => 0);
    $entry = \Model_Entry::forge($data);
    $entry->save();
}
// foreach ($seeds as $line) {
// $model = Model_Entry::forge($line);
// $model->save();
 /**
  * 空きブース判定
  *
  * @access public
  * @param mixed $fleamarket_id
  * @return bool
  * @author kobayasi
  */
 public static function hasEmptyBooth($fleamarket_id = null)
 {
     if (!$fleamarket_id) {
         $fleamarket_id = $this->fleamarket_id;
     }
     $max_booth = 0;
     $max_booth_result = \Model_Fleamarket_Entry_Style::getMaxBoothByFleamarketId($fleamarket_id, false);
     if (isset($max_booth_result[0]['max_booth'])) {
         $max_booth = $max_booth_result[0]['max_booth'];
     }
     $total_entry = 0;
     $total_entry_result = \Model_Entry::getTotalEntryByFleamarketId($fleamarket_id, false);
     if (isset($total_entry_result[0]['reserved_booth'])) {
         $total_entry = $total_entry_result[0]['reserved_booth'];
     }
     return $max_booth - $total_entry > 0;
 }
 /**
  * 出店予約情報の登録
  *
  * @access private
  * @param
  * @return object
  * @author kobayashi
  * @author ida
  */
 private function registerWaitingEntry()
 {
     $fleamarket_id = \Input::post('fleamarket_id');
     $fleamarket_entry_style_id = \Input::post('fleamarket_entry_style_id');
     $fleamarket_entry_style = \Model_Fleamarket_Entry_Style::find('first', array('where' => array('fleamarket_entry_style_id' => $fleamarket_entry_style_id, 'fleamarket_id' => $fleamarket_id)));
     if (!$fleamarket_entry_style) {
         return false;
     }
     $condition = array('user_id' => $this->login_user->user_id, 'fleamarket_id' => $fleamarket_id, 'fleamarket_entry_style_id' => $fleamarket_entry_style_id);
     $entry = \Model_Entry::findBy($condition);
     if ($entry) {
         $entry->set(array('entry_status' => Model_Entry::ENTRY_STATUS_WAITING, 'updated_user' => $this->login_user->user_id));
     } else {
         $entry = \Model_Entry::forge($condition);
         $entry->set(array('reservation_number' => '', 'entry_status' => Model_Entry::ENTRY_STATUS_WAITING, 'item_category' => '', 'item_genres' => '', 'reserved_booth' => 0, 'link_from' => '', 'remarks' => '', 'created_user' => $this->login_user->user_id));
     }
     $entry->save();
     return $entry;
 }
<?php

use Model_FleamarketEntryStyle;
$seeds = array(array('fleamarket_entry_style_id' => 1, 'fleamarket_id' => 1, 'entry_style_id' => 1, 'booth_fee' => 100, 'max_booth' => 100, 'reservation_booth_limit' => 10, 'created_user' => 1, 'updated_user' => 1), array('fleamarket_entry_style_id' => 2, 'fleamarket_id' => 1, 'entry_style_id' => 2, 'booth_fee' => 100, 'max_booth' => 100, 'reservation_booth_limit' => 5, 'created_user' => 1, 'updated_user' => 1));
foreach ($seeds as $line) {
    $model = Model_Fleamarket_Entry_Style::forge($line);
    $model->save();
}
 /**
  * fleamarket_entry_style_id が fleamarket_entry_styles テーブルに
  * 存在するかチェック
  *
  * @access public
  * @param  int
  * @return bool
  * @author kobayasi
  */
 public function _validation_fleamarket_entry_style_id($fleamarket_entry_style_id)
 {
     if (!$this->fleamarket_id) {
         return false;
     }
     $count = \Model_Fleamarket_Entry_Style::query()->where(array('fleamarket_id' => $this->fleamarket_id, 'fleamarket_entry_style_id' => $fleamarket_entry_style_id))->count();
     return $count > 0;
 }