<?php
require_once(PLUGIN_DIR . 'Dao/SearchDao.php');
require_once(PLUGIN_DIR . 'Dao/InsertDao.php');
require_once(PLUGIN_DIR . 'Tools/Image.php');
require_once(PLUGIN_DIR . 'Tools/Core.php');
require_once(PLUGIN_DIR . 'Admin/Tospur_House.php');
class House extends Tospur_House{
    public static function init_view(){
        global $wpdb;
        $type = $_POST["type"];
        $context = array();
        $context['siteUrl'] = get_site_url();
        if($type==1){
            $insert_tospur_house_array = array(
                'name' => $_POST['housename'],
                'average_price' => $_POST['average_price'],
                'latest_news' => $_POST['latest_news'],
                'address' => $_POST['address'],
                'traffic' => $_POST['traffic'],
                'periphery' => $_POST['periphery'],
                'developer' => $_POST['developers'],
                'check_in_time' => $_POST['check_in_time'],
                'property_age' => $_POST['property_age'],
                'decoration' => $_POST['decoration'],
                'covered_area' => $_POST['covered_area'],
                'volume_rate' => $_POST['volume_rate'],
                'greening_rate' => $_POST['greening_rate'],
                'households' => $_POST['households'],
                'parking_spaces' => $_POST['parking_spaces'],
                'property_management' => $_POST['property_management'],
                'overview' => $_POST['overview'],
                'city_id' => $_POST['baseCity'],
                'district_id' => $_POST['baseAreaId'],
                'plate_id' => $_POST["basePlateId"],
                'room_id' => $_POST['baseRoom'],
                "location" => $_POST["location"],
                "property_money" => $_POST["property_money"],
                'community_name' => $_POST["community_name"],
                'publicize' => $_POST["publicize"],
                'threeD' => $_POST["threeD"],
                'roundLook' => $_POST["roundLook"],
                'userId' => get_current_user_id()
            );
            $wpdb->query("START TRANSACTION");
            if(isset($_POST['houseId'])){
                //修改list中当前状态的方法
                $insert_tospur_house_array = House::list_status_upate($_POST["houseId"],$_POST["status"],$insert_tospur_house_array);
                $result = House::data_update($_POST['houseId'],$insert_tospur_house_array);
                if(!is_numeric($result)){
                    $wpdb->query("ROLLBACK");
                    echo "<h4>新房房源修改失败</h4>";
                    print_r($result);
                }else{
                    $wpdb->query("COMMIT");
                    echo "<h4>新房房源修改成功</h4>";
                    w3tc_pgcache_flush_url(home_url() . '/?page=detail&hid=' . $_POST['houseId']);
                }
            }else{
                $insert_tospur_house_array["status"] = 0;
                $insert_tospur_house_array["approval"] = 1;
                $result = House::data_insert($insert_tospur_house_array);
                if(!is_numeric($result)){
                    $wpdb->query("ROLLBACK");
                    echo "<h4>新房房源新增失败</h4>";
                    print_r($result);
                }else{
                    $wpdb->query("COMMIT");
                    echo "<h4>新房房源新增成功</h4>";
                }
            }
            echo "<h4>3秒后自动跳转至新房列表</h4>
            <script>
                setTimeout(function(){
                    window.location.href='" . admin_url('admin.php?page=newHouseList') . "';
                },3000);
            </script>";
            exit;
        }else if(isset($_GET['edit'])){
            $context['houseId'] = $_GET['id'];
            $context = array_merge($context,SearchDao::getDetailInfo($_GET['id'],"edit"));
            $context["district"] = SearchDao::searchCity($context['result']->city_id);
            $context["plate"] = SearchDao::searchCity($context['result']->city_id,$context['result']->district_id);
            $context["mark"] = SearchDao::searchHouseTag($_GET['id']);
            $context["status"] = searchDao::searchStatusType(1,0);
        }else{
            $context['consultant'] = SearchDao::searchConsultantById(get_current_user_id());
        }
        $context['canApproval'] = House::canApproval();
        $context['canEdit'] =  House::canEdit();
        $context['role'] = House::getCurrentRole();
        $context["city"] = SearchDao::searchCity();
        $context["buildProperty"] = SearchDao::searchBuildProperty();
        $context["room"] = SearchDao::searchRoom();
        $context["photoType"] = SearchDao::searchPhotoType();
        $context["house_type"] = 0;
        Timber::render("newhouse.html",$context);
    }

    public static function data_update($houseId,$insert_tospur_house_array){
        global $wpdb;
        $data = $_POST["data"];
        $result = DBManager::update(Config::TOSPUR_HOUSE_TABLE,$insert_tospur_house_array,array("id" => $houseId));
        $exist_ids = array();
        if(isset($_POST['exists'])){
            foreach($_POST['exists'] as $id => $item){
                DBManager::update(Config::A_DISTRICT_AREA_TABLE,array(
                    "buildproperty_id" => $item['buildProperty'],
                    "house_area" => $item['housearea']
                ),array("image_id" => $id));
                $exist_ids[] = $id;
            }
        }
        $old_exists_ids = explode(",",$_POST['exists_ids']);
        $delete_ids = array();
        foreach(array_diff($old_exists_ids,$exist_ids) as $key => $id){
            $delete_ids[] = $id;
        }
        $delete_ids = implode(",",$delete_ids);
        DBManager::query("delete from ".Config::A_DISTRICT_AREA_TABLE." where house_id = {$houseId} and image_id in ({$delete_ids});");
        DBManager::query("delete from ".Config::A_HOUSE_IMAGE_TABLE." where house_id = {$houseId} and image_id in ({$delete_ids});");
        InsertDao::addMainImage($houseId,$data);

        $exists_photo_ids = array();
        if(isset($_POST['exists_photo'])){
            foreach($_POST['exists_photo'] as $id => $item){
                DBManager::update(Config::TOSPUR_IMAGE_TABLE,array(
                    "image_type" => $item['type'],
                ),array("id" => $id));
                $exists_photo_ids[] = $id;
            }
        }
        $old_exists_photo_ids = explode(",",$_POST['exists_photo_ids']);
        $delete_photo_ids = array();
        foreach(array_diff($old_exists_photo_ids,$exists_photo_ids) as $key => $id){
            $delete_photo_ids[] = $id;
        }
        $delete_photo_ids = implode(",",$delete_photo_ids);
        DBManager::query("delete from ".Config::A_HOUSE_IMAGE_TABLE." where house_id = {$houseId} and image_id in ({$delete_photo_ids});");

        DBManager::delete(Config::A_HOUSE_RECOMMEND_TABLE,array("house_id" => $houseId));
        $result = InsertDao::addRecommend($houseId,$data);
        if(!is_numeric($result)){
            return $result;
        }

        $result = InsertDao::addRecConsultant($houseId, $data['recConsultant']);
        if(!is_numeric($result)){
            return $result;
        }
        InsertDao::addHouseTag($houseId, $data['houseTag']);

        CustomerTrackingDao::insert($houseId, $_REQUEST);
		return $result;
    }

    public static function data_insert($params){
        global $wpdb;
        //房源与类型以及面积信息
        $data = $_POST["data"];
        //获取新房信息，存入tospur_house表
        $params['creattime'] = date("Y-m-d H:i:s");
        $params['house_type'] = 0;
        $res = DBManager::get_results('SELECT * FROM tospur_house WHERE name="' . $_POST['housename'] . '" and address="' . $_POST['address'] . '" and house_type=0', OBJECT);
        if (!$res) {
            $houseId =  InsertDao::insert_tospur_house($params);
            if(is_numeric($houseId)){

                $mainImageRes = InsertDao::addMainImage($houseId,$data);
                if(!is_numeric($mainImageRes)){
                    return $mainImageRes;
                }

                $recommendRes = InsertDao::addRecommend($houseId,$data);
                if(!is_numeric($recommendRes)){
                    return $recommendRes;
                }

                $recConsultantRes = InsertDao::addRecConsultant($houseId, $data['recConsultant']);
                if(!is_numeric($recConsultantRes)){
                    return $recConsultantRes;
                }

                $tagRes = InsertDao::addHouseTag($houseId, $data['houseTag']);
                if(!is_numeric($tagRes)){
                    return $tagRes;
                }

                $customerTrackRes = CustomerTrackingDao::insert($houseId, $_REQUEST);
                if(!is_numeric($customerTrackRes)){
                    return $customerTrackRes;
                }
            }
            return $houseId;
        }else{
            return "房源已存在";
        }
    }

} 