<?php

/**
 * 店鋪管理
 */

namespace Module\Store;

use Pyramid\Component\HttpFoundation\Response;
use Pyramid\Component\HttpFoundation\RedirectResponse;
use Exception;

class Store {
    
    use ServiceStore;
    
    /**
     * 列表
     * @access store
     * @route /admin/store
     * @route /admin/store/list
     */
    public static function listStore($request) {
        $keywords = $request->getParameter('keywords');
        $page = $request->getParameter('page');
        if ($keywords) {
            if (db_query("select * from {store} where province=:province", array(':province'=>$keywords))->fetchObject()) {
                $query = db_select('store', 's')->extend('Pager')->size(50)->page($page)->condition('status',1)->condition('province', $keywords);
            }
            elseif (db_query("select * from {store} where city=:city", array(':city'=>$keywords))->fetchObject()) {
                $query = db_select('store', 's')->extend('Pager')->size(50)->page($page)->condition('status',1)->condition('city', $keywords);
            }
            else {
                $query = db_select('store', 's')->extend('Pager')->size(50)->page($page)->condition('status',1)->condition('name', '%'.db_like($keywords).'%', 'LIKE');
            }
        } else {
            $query = db_select('store', 's')->extend('Pager')->size(20)->page($page)->condition('status',1);
        }
        
        $query->fields('s', array('id'));
        $ids   = $query->execute()->fetchCol();
        $pager = $query->fetchPager();
        $data  = entity_load('store', $ids);
        return new Response(render('/admin/store/store.list.html', array(
            'pager' => $pager,
            'data'  => $data,
        )));
    }
    
    /**
     * 添加
     * @access store_add
     * @route /admin/store/add
     */
    public static function storeAdd($request) {
        if ($request->post->getParameters()) {
            $store = (object) $request->post->getParameters();
            $store->created = $store->updated = time();
            try {
                entity_insert('store', $store);
                return new RedirectResponse($request->getUriForPath('/admin/store'), 1, '添加成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/store'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/store/store.add.html'));
    }
    
    /**
     * 修改
     * @access store_edit
     * @route /admin/store/edit/{id}
     */
    public static function storeEdit($request) {
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/store'), 4, '无此记录');
        }
        if (!$store = entity_object('store', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/store'), 4, '无此记录');
        }
        if ($request->post->getParameters()) {
            $store = (object) $request->post->getParameters();
            $store->id = $id;
            $store->updated = time();
            try {
                entity_update('store', $store);
                return new RedirectResponse($request->getUriForPath('/admin/store'), 1, '更新成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/store'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/store/store.edit.html', array('data' => $store)));
    }

    /**
     * 删除
     * @access store_delete
     * @route /admin/store/delete/{id}
     */
    public static function storeDelete($request) {
        validateRequestToken($request, 600);
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/store'), 4, '无此记录');
        }
        if (!$store = entity_object('store', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/store'), 4, '无此记录');
        }
        $storeUpdate = (object) array('id'=>$store->id,'status'=>0);
        entity_update('store', $storeUpdate);            
        return new RedirectResponse($request->getUriForPath('/admin/store'), 1, '操作成功');
    }

}


permission_register(array(
    'store' => array(
        'bundle'        => '店铺管理',
        'title'         => '店铺管理',
        'description'   => '查看店铺',
    ),
    'store_add' => array(
        'bundle'        => '店铺管理',
        'title'         => '添加店铺',
        'description'   => '',
    ),
    'store_edit' => array(
        'bundle'        => '店铺管理',
        'title'         => '修改店铺',
        'description'   => '',
    ),
    'store_delete' => array(
        'bundle'        => '店铺管理',
        'title'         => '删除店铺',
        'description'   => '',
    ),
));

