<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Api_model extends CI_Model {

    
    public function __construct()
    {
        parent::__construct();
        $this->HT = $this->load->database('HT', TRUE);    
        $this->InfoCT = $this->load->database('INFORMATION', TRUE);    
    }
    
    var $dei_sn = 17; //组别ID
    var $CTLGC = 104; //语种

    /**
     * @description: 根据一日游code获取对应人数的成人价格
     * @param {string} $pagecode 线路代码
     * @param int $personnum 人数 
     * @return: 
     */
    function getDaytripsPrice($pagcode, $personnum)
    {
        $sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
        ,PAG_DefaultVEI_SN 
     from BIZ_PackagePrice 
     inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN 
     and BIZ_PackagePrice.PKP_VEI_SN = BIZ_PackageInfo.PAG_DefaultVEI_SN 
      where (BIZ_PackageInfo.PAG_Code = ?) AND (pag_dei_sn= ? ) 
     and ? between PKP_PersonStart and PKP_PersonStop and CONVERT(varchar(12),getdate(),111) between pkp_validdate and pkp_invaliddate 
     order by isnull( BIZ_PackageInfo.PAG_DefaultVEI_SN,0) desc,PKP_PriceGrade  ";
        $param = array($pagcode,$this->dei_sn, $personnum);

        $query = $this->HT->query($sql, $param);
        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            //'第二种有默认供应商但是没有当前日期价格的时候
            $sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
            ,PAG_DefaultVEI_SN 
            from BIZ_PackagePrice 
            inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN 
            and BIZ_PackagePrice.PKP_VEI_SN = BIZ_PackageInfo.PAG_DefaultVEI_SN 
             where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? ) 
            and ? between PKP_PersonStart and PKP_PersonStop 
            order by pkp_invaliddate desc,PKP_PriceGrade  ";
            $query = $this->HT->query($sql, $param);
            if ($query->num_rows() > 0) {
                return $query->row();
            }else{
                //'第三种没有默认供应商但是有当前日期价格的时候
                $sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
                ,PAG_DefaultVEI_SN 
                from BIZ_PackagePrice 
                inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN 
                 where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? ) 
                and ? between PKP_PersonStart and PKP_PersonStop and CONVERT(varchar(12),getdate(),111) between pkp_validdate and pkp_invaliddate 
                order by isnull( BIZ_PackageInfo.PAG_DefaultVEI_SN,0) desc,PKP_PriceGrade  ";
                $query = $this->HT->query($sql, $param);
                if ($query->num_rows() > 0) {
                    return $query->row();
                }else{
                    //'第四种无默认供应商无当前日期价格
                    $sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
                    ,PAG_DefaultVEI_SN 
                    from BIZ_PackagePrice 
                    inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN 
                     where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? ) 
                    and ? between PKP_PersonStart and PKP_PersonStop 
                    order by pkp_invaliddate desc,PKP_PriceGrade   ";
                    $query = $this->HT->query($sql, $param);
                    if ($query->num_rows() > 0) {
                        return $query->row();
                    }else {
                        return null;
                    }
                }
            }
        }
        
    }

    /**
     * @description: 获取精华线路价格，2人等
     * @param {*}
     * @return {*}
     * @Date Changed: 
     */
    function getTourPrice($cli_no){
        $CLI_SN = "";
        $reust = "";
        //'新的GP没有设置以前的2-5人等价格，导致读不出价格。把Gp价格放前面计算
        $sql = "select top 1 CLI_SN,CLI_PackageClass from CustomerLineInfo 
        where CLI_NO=? and ( CLI_State = 1005003 or CLI_State=1005004) and  CLI_Grade=7001
        AND (CLI_DEI_SN= ? )";
        $query = $this->HT->query($sql,array($cli_no,$this->dei_sn));
        if (!$query->num_rows()>0){
            return null;    
        }else{
            $row = $query->row();
            if (isset($row)){
                $CLI_SN = $row->CLI_SN;
            }

            //'获取线路是否有travelbuddy,也就是有固定的发团日期
	        $fut_sql = "SELECT  count(*) as CountBuddy FROM FixedGroupDate WHERE FGD_CLI_SN='".$CLI_SN."'";
            $futQuery = $this->HT->query($fut_sql);
            $futrow = $futQuery->row();
            $fut_CountBuddy = $futrow->CountBuddy;

            if ($fut_CountBuddy>0){
                //读取GP价格
                $gpSql  ="SELECT TOP 1 FGD_AdultPrice,FGD_Departure,
                	isnull(FGD_ProAdultPrice,0) as FGD_ProAdultPrice 
            		FROM FixedGroupDate 
            		WHERE (FGD_Departure >= GETDATE())  
            		AND (FGD_CLI_SN = ".$CLI_SN.") AND (FGD_State = 1) ORDER BY FGD_AdultPrice";
                $gpquery = $this->HT->query($gpSql);
                if ($gpquery->num_rows()>0){
                    $gpRow = $gpquery->row();
                    $FGD_AdultPrice = $gpRow->FGD_AdultPrice;
                    $FGD_ProAdultPrice = $gpRow->FGD_ProAdultPrice;
                    if ($FGD_ProAdultPrice>0){
                        $reust = $FGD_ProAdultPrice; //促销价
                    }else{
                        $reust=$FGD_AdultPrice;
                    }
                }

            }else {
                //普通线路价格
                $sql = "select top 1  
                CLI_SN,CLP_TwoToFiveAdultPrice,CLI_PackageClass  
                 FROM CustomerLineInfo INNER JOIN 
               CustomerLinePrice ON CustomerLineInfo.CLI_SN = CustomerLinePrice.CLP_CLI_SN INNER JOIN 
               CustomerLineInfo2 ON CustomerLineInfo.CLI_SN = CustomerLineInfo2.CLI2_CLI_SN 
                 where CLI_SN= ?  and CLI2_LGC=? and (CLP_Area=1 or CLP_Area=2) 
                 and (CLI_State = 1005004 or CLI_State = 1005003) ORDER BY CLP_TwoToFiveAdultPrice";
                 $query = $this->HT->query($sql,array($CLI_SN,$this->CTLGC));
                 if ($query->num_rows()>0){
                     $reust = $query->row()->CLP_TwoToFiveAdultPrice;
                 }

            }
        }
        
        return $reust;
    }


    /**
     * @description: 一日游列表,包含信息平台和HT
     * @param {*} $whereHT HT的查询条件
     * @param {*} $whereInfo  信息平台的查询条件
     * @return {*}
     * @Date Changed: 
     */
    function getDaytripList($whereHT="",$whereInfo=""){
        $sql = "select * from(

            select  *  from( 
                SELECT  p2.PAG2_Name as title
                ,P1.PAG_Code  as code
                ,'' as url
                ,isnull(p2.PAG2_ImageURL,'') as pic1 
                ,isnull((select top 1 PAP_ImageURL from BIZ_PackagePic where PAP_PII_SN=p2.PAG2_PII_SN),'') as pic2
                ,'2' as sortby
                FROM dbo.BIZ_PackageInfo P1 
                INNER JOIN dbo.BIZ_PackageInfo2 p2 ON P1.PAG_SN = p2.PAG2_PAG_SN 
                INNER JOIN dbo.CItyInfo2 ON P1.PAG_CII_SN = dbo.CItyInfo2.CII2_CII_SN AND dbo.CItyInfo2.CII2_LGC = 1 
                WHERE 1=2 and (p2.PAG2_LGC = 104) 
                    AND (p1.pag_dei_sn = 17) 
                    AND (p2.PAG2_Check = 2) 
                    AND (PAG_Code not in(
                        SELECT  convert(varchar(100),(
                            SELECT TOP 1 im_value
                            FROM information_ct.dbo.infoMetas
                            WHERE im_key = 'meta_product_code'
                                AND im_ic_id = ic_id
                            )) AS code			
                            FROM information_ct.dbo.infoContents
                            INNER JOIN information_ct.dbo.infoStructures ON ic_id = is_ic_id
                            WHERE is_sitecode = 'chinatravel'".$whereInfo."
                                AND ic_status = 1
                    ))
                    AND (isnull(P1.DeleteFlag,0) <>1) ".$whereHT."
             ) Tmp 		 
            
            UNION ALL
        
            SELECT * from (
               select ic_url_title as title
               ,(select top 1 im_value from information_ct.dbo.infoMetas where  im_key='meta_product_code' and im_ic_id=ic_id) as code
               ,ic_url as url , ic_photo  as pic1
                ,(select top 1 im_value from information_ct.dbo.infoMetas where  im_key='meta_addon_picture_mobile' and im_ic_id=ic_id) as pic2
                ,'1' as sortby
                FROM information_ct.dbo.infoContents
                inner join information_ct.dbo.infoStructures on ic_id=is_ic_id
                 WHERE   is_sitecode='chinatravel' ".$whereInfo."
                and ic_status=1            
             ) as t
          )  tball
          where 1=1
          ORDER BY tball.sortBy ASC
          ";
     
          $query = $this->HT->query($sql);
          return $query->result();
    }


    /**
     * @description: HT获取一日游列表
     * @param {*} $city 一日游城市 ，默认必须有城市，不然太多
     * @param {*} $where 其它条件
     * @return {*}
     * @Date Changed: 
     */
    function getDaytripListHT($city="beijing",$where=""){
        $sql = " select  *  from( 
            SELECT  p2.PAG2_Name 
            ,p2.PAG2_Intro 
            ,P1.PAG_NeedTime 
            ,P1.PAG_SN 
            ,P1.PAG_Leve 
            ,p2.PAG2_Order 
            ,P1.PAG_Code 
            ,p2.PAG2_Attraction 
            ,CItyInfo2.CII2_Name 
            ,isnull((select top 1 PAP_ImageURL from BIZ_PackagePic where PAP_PII_SN=p2.PAG2_PII_SN),'') as NewListImage 
            ,isnull(p2.PAG2_ImageURL,'') as NewListImage2 
            ,dbo.GetFullPathByPII_SN(p2.PAG2_PII_SN, 2) AS picpath  
            ,p2.PAG2_Title  
            ,p1.PAG_Type 
            ,pag2_summary 
        FROM dbo.BIZ_PackageInfo P1 
        INNER JOIN dbo.BIZ_PackageInfo2 p2 ON P1.PAG_SN = p2.PAG2_PAG_SN 
        INNER JOIN dbo.CItyInfo2 ON P1.PAG_CII_SN = dbo.CItyInfo2.CII2_CII_SN AND dbo.CItyInfo2.CII2_LGC = 1 
        WHERE (p2.PAG2_LGC = ?) 
            AND (p1.pag_dei_sn = ?) 
            AND (p2.PAG2_Check = 2) 
            AND (isnull(P1.DeleteFlag,0) <>1) 
            ) Tmp 
            where 1=1 ";
        if ($city!=""){
            $sql .= " AND (CII2_Name ='".$city."')";
        }
        // $sql .= "and PAG_Code in ('SHALC-1','SHALC-7')";
        $sql .= " order by isnull(pag2_order,0) desc,pag_code ";
       // echo ($sql);
        $param = array($this->CTLGC,$this->dei_sn);
        $query = $this->HT->query($sql,$param);
        return $query->result();

    }


      /**
     * @description: 获取子类信息列表
     * @param {type} $old_pid，$new_pid  父类的Id,分为旧网站的和新网站的
     * @return: 
     * @Date Changed: 
     */
    function getGuideList($old_pid,$new_pid){

        $sql = "  select top 1 ic_url from  dbo.infoContents
        inner join infoStructures on ic_id=is_ic_id
         where is_id = ? ";

        $query = $this->InfoCT->query ($sql ,array($new_pid));

        if ($query->num_rows()>0){
            $url = $query->row()->ic_url;
        }else{
            $url = "";
        }

        if ($url==""){$url="nourl";}

        ////原来读取旧信息数据
        //     SELECT  ic_url,ic_url_title,ic_photo 
        //             ,(select top 1 im_value from infoMetas where  im_key='meta_addon_picture_mobile' and im_ic_id=ic_id) as pic2
        //             ,'2' as sortby
        //     FROM dbo.infoContents
        //     inner join infoStructures on ic_id=is_ic_id
        //     WHERE   is_sitecode='ct'
        //             and ic_status=1
        //             and is_parent_id = ?


        $sql = "
        select * from (    
            SELECT    ic_url,ic_url_title,ic_photo 
            ,(select top 1 im_value from infoMetas where  im_key='meta_addon_picture_mobile' and im_ic_id=ic_id) as pic2
                    ,'2' as sortby , is_sort
            FROM dbo.infoContents
            inner join infoStructures on ic_id=is_ic_id
            WHERE   is_sitecode='chinatravel'
                    and ic_status=1
                    and ic_url like ?
                    and is_parent_id <> ?
             
            UNION ALL 
                        
            SELECT    ic_url,ic_url_title,ic_photo 
                    ,(select top 1 im_value from infoMetas where  im_key='meta_addon_picture_mobile' and im_ic_id=ic_id) as pic2
                    ,'1' as sortby ,is_sort
            FROM dbo.infoContents
            inner join infoStructures on ic_id=is_ic_id
             WHERE   is_sitecode='chinatravel'
                    and ic_status=1
                    and is_parent_id = ?
        ) allbt
        order by sortby ,is_sort
                      
             ";   
 
        $qurey = $this->InfoCT->query($sql,array($url."/%",$new_pid,$new_pid));
        return $qurey->result();
    }

    /**
     * @description: 获取线路的sn
     * @param {*} $clino 线路编码
     * @return {*}
     * @Date Changed: 
     */
    function getCliSn($clino=""){
        $sql = "select top 1 CLI_SN,CLI_PackageClass from CustomerLineInfo 
        where CLI_NO=? and CLI_State=1005004 
        AND (CLI_DEI_SN= ? )";
        $query = $this->HT->query($sql,array($clino,$this->dei_sn));
        if (!$query->num_rows()>0){
            return null;    
        }else{
            return $query->row();
        }
    }


    /**
     * @description: 获取一日游价格列表
     * @param {*} $pagcode
     * @return {*}
     * @Date Changed: 
     */
    function getDaytripPriceList($pagcode){
        //1.先根据编码获取SN
        $sql = "select top 1 PAG_SN from BIZ_PackageInfo p1
        inner join BIZ_PackageInfo2 p2 on p1.PAG_SN = p2.PAG2_PAG_SN 
        where p1.pag_dei_sn = ?
        and p2.PAG2_LGC = ?
        and p1.PAG_Code = ?
        and p2.PAG2_Check = 2
        AND (isnull(P1.DeleteFlag,0) <>1) ";
        $query = $this->HT->query($sql,array($this->dei_sn,$this->CTLGC,$pagcode));
        if ($query->num_rows()>0){
            //2.根据SN获取获取一个供应商的ID，不然所有供应商的价格都出来了。
            $pagsn = $query->row()->PAG_SN;
            $sql = "select top 10 PAG_DefaultVEI_SN,pkp_vei_sn ,*
                    from BIZ_PackagePrice 
                    left join BIZ_PackageInfo on BIZ_PackageInfo.PAG_DefaultVEI_SN=BIZ_PackagePrice.PKP_VEI_SN 
                    and BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN 
                    where  PKP_PAG_SN =?   
                        order by isnull( BIZ_PackageInfo.PAG_DefaultVEI_SN,0) desc ,PKP_InvalidDate desc";
            $query = $this->HT->query($sql,array($pagsn));
            if ($query->num_rows()>0){
                $veisn = $query->row()->pkp_vei_sn;
                if (!empty($query->row()->PAG_DefaultVEI_SN)){
                    $veisn = $query->row()->PAG_DefaultVEI_SN;
                }
            }else{
                $veisn=0;
            }

            //3.根据供应商ID获取对应价格列表
            $sql = "SELECT isnull(PKP_AdultPrice, 0) AS PKP_AdultPrice 
                        ,isnull(PKP_AdultSpecialPrice, 0) AS PKP_AdultSpecialPrice 
                        ,PKP_PersonStart 
                        ,PKP_PersonStop 
                    FROM BIZ_PackagePrice 
                    WHERE PKP_PAG_SN = ? 
                        AND PKP_VEI_SN = ? 
                        AND getdate() BETWEEN pkp_validdate AND pkp_invaliddate 
                        and Checked=2 
                    ORDER BY PKP_PersonStart ";
            $query = $this->HT->query($sql,array($pagsn,$veisn));
            if (!$query->num_rows()>0){
                //如果今年没价格，获取去年的价格
                $nowYear = date('Y');
                for ($i=1;$i<6;$i++){
                    $price_pyears = $nowYear-$i ."-1-1";
                    $price_pyears_2 = $nowYear-$i . "-12-31";   
                    $sql = "SELECT isnull(PKP_AdultPrice, 0) AS PKP_AdultPrice 
                                ,isnull(PKP_AdultSpecialPrice, 0) AS PKP_AdultSpecialPrice 
                                ,PKP_PersonStart 
                                ,PKP_PersonStop 
                            FROM BIZ_PackagePrice 
                            WHERE PKP_PAG_SN = ? 
                                AND PKP_VEI_SN = ? 
                                AND pkp_validdate BETWEEN '".$price_pyears."' AND '".$price_pyears_2."'   ORDER BY PKP_PersonStart ";
                    $query = $this->HT->query($sql,array($pagsn,$veisn));
                    if ($query->num_rows()>0){
                        break;
                    }
                }

            }

            if ($query->num_rows()>0){
                //4.价格列表返回
                return $query->result();
            }else {
                return null;
            }

        }else{
            return null;
        }
    }

    //根据图片URL判断CDN的地址
   function getPicCdn($picurl){
        $strCdn ="";
        if (strpos($picurl,"chinatravel.com")!== false) {
            $strCdn="";
        } else if (strpos($picurl,"allpicture")!== false){
            $strCdn = "//images.chinatravel.com";
        }else if (strpos($picurl,"/album/userupload/")!== false){
            $strCdn = "//data.chinatravel.com";
        }else if (strpos($picurl,"/images/")!== false) {
            $strCdn = "//data.chinatravel.com";
        }else{
            $strCdn = "//images.chinatravel.com"; 
        }
        return $strCdn;
    }


    /**
     * @description:   //旧数据导入新数据
     * @param {*} $id
     * @param {*} $oldUrl
     * @return {*}
     * @Date Changed: 
     */
    function copyOldUrl($id,$oldUrl){      
        $sql = "UPDATE icNew
                SET icNew.ic_content = icOld.ic_content
                    ,icNew.ic_summary = icOld.ic_summary
                    ,icNew.ic_title = icOld.ic_title
                    ,icNew.ic_url_title = icOld.ic_url_title
                    ,icNew.ic_seo_title = icOld.ic_seo_title
                    ,icNew.ic_seo_description = icOld.ic_seo_description
                    ,icNew.ic_seo_keywords = icOld.ic_seo_keywords
                    ,icNew.ic_photo = icOld.ic_photo
                FROM infoContents icNew
                    ,infoContents icOld
                WHERE icNew.ic_id = ?
                    AND icNew.ic_sitecode = 'chinatravel'
                    AND icOld.ic_url = ?
                    AND icOld.ic_sitecode = 'ct'";

        return $this->InfoCT->query($sql, array($id,$oldUrl));
    }

}

/* End of file Api_model.php */
