<?php

namespace App\Console\Commands\Uploads;

use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;

class SuumoUpload
{
    private $url, $urlArea, $urlUpload, $urlSave, $urlSaveArea, $data, $option, $bukkenCd, $article, $portal_images;

    public function __construct($option, $article, $portal_images, $suumo_seller, $suumo_facility, $suumo_traffic_map, $suumo_spec, $suumo_construction)
    {
        $this->url = "https://manager.suumo.jp/chukai/tn01Xx1101.do";
        $this->urlUpload = "https://manager.suumo.jp/chukai/commonGazo/singleGazoLogin";
        $this->urlSave = "https://manager.suumo.jp/chukai/tn01Xx1102.do";
        $this->urlSaveArea = "https://manager.suumo.jp/chukai/tn01Xx3102.do";
        $this->urlArea = "https://manager.suumo.jp/chukai/tn01Xx3101.do";
        $this->urlStep3 = "https://manager.suumo.jp/chukai/tn01Xx2101.do";
        $this->urlSaveStep3 = "https://manager.suumo.jp/chukai/tn01Xx2102.do";
        $this->data = [
            "TB" => "20",
            "BKTB" => "20",
            "hanbaiKosuHanteiFlg" => "1",
            "bukkenShuCtg" => "2",
            "hanKubun" => "1K",
            "hidMaxErrorLevel" => "10",
        ];
        $this->option = $option;
        $this->bukkenCd = $article->suumo_no;
        $this->article = $article;
        $this->portal_images = $portal_images;
        $this->suumo_seller = $suumo_seller;
        $this->suumo_facility = $suumo_facility;
        $this->suumo_traffic_map = $suumo_traffic_map;
        $this->suumo_spec = $suumo_spec;
        $this->suumo_construction = $suumo_construction;
    }

    private function log($data)
    {
        file_put_contents("./suumo_response.html", $data);
    }

    public function upload()
    {
        if (empty($this->bukkenCd)) {
            Log::error("Insert image into Suumo not found bukkenCd");
            return false;
        }

        $this->data["bukkenCd"] = $this->bukkenCd;

        $response = $this->requestWithData($this->url, http_build_query($this->data), true);

        $pattern = '/<form name="tn01Xx1101ActionForm" id="Tn01Xx1101Form" method="POST" action="\/chukai\/tn01Xx1101\/" enctype="multipart\/form-data">(.*?) <div class="pv15 mt10 bgLGray bdDGray">/s';
        preg_match($pattern, $response, $match1);

        if (count($match1) < 2) {
            return false;
        }

        $pattern = '/<input type="hidden" name="(?<name>.*?)" value="(?<value>.*?)".*?>/';
        preg_match_all($pattern, $match1[1], $match2, PREG_SET_ORDER);

        $hiddenInputs = collect($match2)
            ->pluck('value', 'name')
            ->toArray();

        $files = [];
        $countFile = 0;

        $listImages = $this->portal_images;
        $suumo_seller = $this->suumo_seller;
        $article = $this->article;

        $article_property = $article->property;

        for($i = 0; $i<27; $i++){
            $file = [
                "name" => "upFile[" . $countFile . "]",
                "index" => $countFile,
                "filename" => "",
                "type" => "",
                "content" => "",
                "type_id" => "",
                "type_text" => "",
                "comment" => ""
            ];
            if($i<20){
                if($i < count($listImages)){
                    $image = $listImages[$i];
                    $imagePath = storage_path() . "/app/" . $image->file_path;
                    $imageName = explode("/", $imagePath);
                    if (strpos($imagePath, ".JPG") === false
                        && strpos($imagePath, ".jpg") === false
                        && strpos($imagePath, ".JPEG") === false
                        && strpos($imagePath, ".jpeg") === false) {
                        continue;
                    }
                    $property_sub = selectedPhotoPropertySuumo($article_property, $image->property_sub, $image->type_upload, $image->mansion, $image->facility);
                    $check_img = str_replace('public/', '', $image->file_path);
                    $file = [
                        "name" => "upFile[" . $countFile . "]",
                        "index" => $countFile,
                        "filename" => array_last($imageName),
                        "type" => "image/jpeg",
                        "content" => Storage::disk('public')->exists($check_img)? file_get_contents($imagePath):null,
                        "type_id" => $this->getTypeData($property_sub, $article_property)["id"],
                        "type_text" => $this->getTypeData($property_sub, $article_property)["name"],
                        "comment" => $image->memo
                    ];
                }
            }else{
                $j = $i-20;
                if($j < count($suumo_seller)){
                    $image = $suumo_seller[$j];
                    $imagePath = storage_path() . "/app/" . $image->file_path;
                    $imageName = explode("/", $imagePath);
                    if (strpos($imagePath, ".JPG") === false
                        && strpos($imagePath, ".jpg") === false
                        && strpos($imagePath, ".JPEG") === false
                        && strpos($imagePath, ".jpeg") === false) {
                        continue;
                    }
                    $check_img = str_replace('public/', '', $image->file_path);
                    $file = [
                        "name" => "upFile[" . $countFile . "]",
                        "index" => $countFile,
                        "filename" => array_last($imageName),
                        "type" => "image/jpeg",
                        "content" => Storage::disk('public')->exists($check_img)? file_get_contents($imagePath):null,
                        "type_id" => $this->getTypeDataSeller($image->property, $article_property)["id"],
                        "type_text" => $this->getTypeDataSeller($image->property, $article_property)["name"],
                        "comment" => $image->memo
                    ];
                }
            }
            array_push($files, $file);
            $countFile++;
        }

        $dataUpload = [
            "org.apache.struts.taglib.html.TOKEN" => "049ed4a025385f8c45b1a35ab9ca17ff",
            "bukkenCd" => "93632557",
            "poolGlCd" => "MA",
            "areaCd" => "060",
            "regId" => "Tn01Xx1101",
            "kenchikuJokenUmu" => "0",
            "hyoujiKensu" => "27",
            "bukkenShuCtg" => "2",
            "gazoBukkenCd" => "93632557",
            "hatchuGazoId" => "",
            "hatchuGazoCtgKbn" => "",
            "hanbaiKosuHanteiFlg" => "1",
            "TB" => "20",
            "krNyukoKbn" => "00",
            "jjt" => "",
            "singleGazoTotalSize" => "0",
        ];

        foreach ($dataUpload as $key => $field) {
            if (isset($hiddenInputs[$key])) {
                switch ($key) {
                    case "org.apache.struts.taglib.html.TOKEN":
                    case "bukkenCd":
                    case "gazoBukkenCd":
                        $dataUpload[$key] = $hiddenInputs[$key];
                        break;
                }
            }
        }

        $response = $this->uploadImage($this->urlUpload, $dataUpload, $files);

        $patternImage = '/parent.SUUMO.COMMON.callBack(.*?);/';
        preg_match_all($patternImage, $response, $matchImage);

        if (count($matchImage) > 1) {
            foreach ($matchImage[1] as $key => $match) {
                $patternField = "/'(.*?)'/";
                preg_match_all($patternField, $match, $matchField);
                if (count($matchField) > 1 && count($matchField[1]) > 3) {
                    $files[$matchField[1][3]]["image"] = $matchField[1];
                }
            }
        }

        if ($this->saveImage($files, $dataUpload) == 302) {
            return true;
        }

        return false;
    }

    private function uploadImage($url, $fields, $files)
    {
        $boundary = uniqid();
        $delimiter = '-------------' . $boundary;
        $data = '';

        foreach ($fields as $name => $content) {
            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
                . $content . "\r\n";
        }

        foreach ($files as $content) {
            $arrayImage = [
                "tdId" => $content["index"],
                "singleGazoPath" => "",
                "gazoUploadFlg" => "2",
                "gazoFileNm" => "",
                "gazoFilePath" => "",
                "gazoId" => "",
                "gazoCtgKbn" => "",
                "hatchuFlg" => "false",
                "traceGazoUmuFlg" => "dn",
                "cusShinkokuFlg" => "0",
                "singleGazoSize" => "0",
                "nykMotoGazoFileNm" => "",
                "select148a" => "画像カテゴリを選択してください",
                "gazoCaption1" => ""
            ];

            foreach ($arrayImage as $key => $value) {
                $data .= "--" . $delimiter . "\r\n"
                    . 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n"
                    . $value . "\r\n";
            }

            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $content["name"] . '"; filename="' . $content["filename"] . '"' . "\r\n"
                . 'Content-Type: ' . $content["type"] . "\r\n\r\n"
                . $content["content"] . "\r\n";
        }

        $data .= "--" . $delimiter . "--\r\n";

        return $this->requestPostBinary($url, $data, $delimiter)["response"];
    }

    private function saveImage($dataImage, $fields)
    {
        $boundary = uniqid();
        $delimiter = '-------------' . $boundary;
        $data = '';

        foreach ($fields as $name => $content) {
            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
                . $content . "\r\n";
        }

        for ($i = 0; $i < 27; $i++) {
            $arrayImage = [
                "tdId" => $i,
                "singleGazoPath" => "",
                "gazoUploadFlg" => "2",
                "gazoFileNm" => "",
                "gazoFilePath" => "",
                "gazoId" => "",
                "gazoCtgKbn" => "",
                "hatchuFlg" => "false",
                "traceGazoUmuFlg" => "dn",
                "cusShinkokuFlg" => "0",
                "singleGazoSize" => "0",
                "nykMotoGazoFileNm" => "",
                "select148a" => "画像カテゴリを選択してください",
                "gazoCaption1" => ""
            ];

            if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                $image = $dataImage[$i]["image"];
                $dataOther = $dataImage[$i];
                $arrayImage["singleGazoPath"] = $image[1];
                $arrayImage["gazoFilePath"] = $image[2];
                $arrayImage["hatchuFlg"] = "";
                $arrayImage["gazoUploadFlg"] = "1";
                $arrayImage["singleGazoSize"] = $image[5];
                $arrayImage["nykMotoGazoFileNm"] = $image[6];
                $arrayImage["gazoCtgKbn"] = $dataOther["type_id"];
                $arrayImage["select148a"] = $dataOther["type_text"];
                $arrayImage["gazoCaption1"] = $dataOther["comment"] ?? "";
            }

            foreach ($arrayImage as $key => $value) {
                $data .= "--" . $delimiter . "\r\n"
                    . 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n"
                    . $value . "\r\n";
            }

            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="upFile[' . $i . ']"; filename=""' . "\r\n"
                . 'Content-Type: application/octet-stream' . "\r\n\r\n"
                . "\r\n";
        }

        $data .= "--" . $delimiter . "--\r\n";

        return $this->requestPostBinary($this->urlSave, $data, $delimiter)["http_code"];
    }

    private function requestPostBinary($url, $data, $delimiter)
    {
        $ch = curl_init($url);

        curl_setopt_array($ch, [
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'Content-Type: multipart/form-data; boundary=' . $delimiter,
                'Content-Length: ' . strlen($data),
                'Host: manager.suumo.jp',
                'Referer: https://manager.suumo.jp/chukai/tn01Xx1101.do',
                'Origin: https://manager.suumo.jp',
                'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',
            ],
            CURLOPT_POSTFIELDS => $data
        ]);

        curl_setopt_array($ch, $this->option);
        $response = curl_exec($ch);

        return [
            "response" => $response,
            "http_code" => curl_getinfo($ch, CURLINFO_HTTP_CODE)
        ];
    }

    function uploadStep2()
    {
        $files = [];
        $countFile = 0;
        if (empty($this->bukkenCd)) {
            Log::error("Insert image into Suumo not found bukkenCd");
            return false;
        }

        $this->data["bukkenCd"] = $this->bukkenCd;

        $response = $this->requestWithData($this->urlArea, http_build_query($this->data), true);
        $pattern = '/<form name="tn01Xx3101ActionForm" id="tn01Xx3101FormId" method="POST" action="\/chukai\/tn01Xx3101\/" enctype="multipart\/form-data">(.*?)<\/form>/s';

        preg_match($pattern, $response, $match1);

        if (count($match1) < 2) {
            return false;
        }

        $pattern = '/<input type="hidden" name="(?<name>.*?)" value="(?<value>.*?)".*?>/';
        preg_match_all($pattern, $match1[1], $match2, PREG_SET_ORDER);

        $hiddenInputs = collect($match2)
            ->pluck('value', 'name')
            ->toArray();

        $suumo_facility = $this->suumo_facility;
        $suumo_seller = $this->suumo_seller;
        $suumo_traffic_map = $this->suumo_traffic_map;

        $trafficMapArr = [];
        if (count($suumo_traffic_map->file_path) < 4) { //4は現地案内図の枚数
            foreach ($suumo_traffic_map->file_path as $obj) {
                $trafficMapArr[$obj->id - 1] = $obj;
            }
        } else {
            $trafficMapArr = $suumo_traffic_map->file_path;
        }

        for($i = 0; $i<34; $i++){
            $file = [
                "name" => "upFile[" . $countFile . "]",
                "index" => $countFile,
                "filename" => "",
                "type" => "",
                "content"   => "",
                "property_sub"  =>  "",
                "facility_name" =>  "",
                "distance"  =>  "",
                "comment"   =>  ""
            ];
            if($i<30){
                if($i < count($suumo_facility)){
                    $image = $suumo_facility[$i];
                    $imagePath = storage_path() . "/app/" . $image->file_path;
                    $imageName = explode("/", $imagePath);
                    if (strpos($imagePath, ".JPG") === false
                        && strpos($imagePath, ".jpg") === false
                        && strpos($imagePath, ".JPEG") === false
                        && strpos($imagePath, ".jpeg") === false) {
                        continue;
                    }
                    $check_img = str_replace('public/', '', $image->file_path);
                    $file = [
                        "name" => "upFile[" . $countFile . "]",
                        "index" => $countFile,
                        "filename" => array_last($imageName),
                        "type" => "image/jpeg",
                        "content" => Storage::disk('public')->exists($check_img)? file_get_contents($imagePath):null,
                        "property_sub"  =>  $this->getTypeDataFacility($image->facility_property)["id"],
                        "facility_name" =>  $image->facility_name,
                        "distance"  =>  $image->distance,
                        "comment"   =>  $image->facility_memo
                    ];
                }
            }else {
                $j = $i - 30;
                if (!empty($suumo_traffic_map) && isset($trafficMapArr[$j]) && $trafficMapArr[$j]->file_path != '') {
                    $image = $trafficMapArr[$j];
                    $imagePath = storage_path() . "/app/" . $image->file_path;
                    $imageName = explode("/", $imagePath);
                    if (strpos($imagePath, ".JPG") === false
                        && strpos($imagePath, ".jpg") === false
                        && strpos($imagePath, ".JPEG") === false
                        && strpos($imagePath, ".jpeg") === false) {
                        continue;
                    }
                    $file = [
                        "name" => "upFile[" . $countFile . "]",
                        "index" => $countFile,
                        "filename" => array_last($imageName),
                        "type" => "image/jpeg",
                        "content" => file_get_contents($imagePath),
                        "comment" => $image->memo
                    ];
                }
            }
            array_push($files, $file);
            $countFile++;
        }
        $carNaviComment = "";
        if(!empty($suumo_traffic_map)){
            $carNaviComment = $suumo_traffic_map['memo'];
        }
        $dataUpload = [
            "org.apache.struts.taglib.html.TOKEN" => "7e91b76f32a9f008142e032ef791b8e5",
            "bukkenCd" => "96848569",
            "poolGlCd" => "SH",
            "areaCd" => "060",
            "regId" => "Tn01Xx3101",
            "kenchikuJokenUmu" => "0",
            "bukkenShuCtg" => "2",
            "gazoBukkenCd" => "96848569",
            "bukkenShuCtgCd"    =>  "2",
            "hanbaiKosuHanteiFlg" => "1",
            "rakuShuhenIndex"   =>  "1",
            "rakuShuhenCnt" =>  "5",
            "gamenId"   =>  "BGHI-061",
            "azaNm" =>  "1",
            "jushoMatsubi"  =>  "1-244",
            "bukkenIdo"     =>  "35.35.3.300",
            "bukkenKeido"   =>  "136.21.32.280",
            "TB" => "20",
            "jjt" => "",
            "krNyukoKbn" => "00",
            "btnKaseiFlag"  =>  "0",
            "hyoujiKensu" => "5",
            "singleGazoTotalSize" => "0",
            "carNaviComment"    =>  $carNaviComment
        ];

        foreach ($dataUpload as $key => $field) {
            if (isset($hiddenInputs[$key])) {
                switch ($key) {
                    case "org.apache.struts.taglib.html.TOKEN":
                    case "bukkenCd":
                    case "gazoBukkenCd":
                        $dataUpload[$key] = $hiddenInputs[$key];
                        break;
                }
            }
        }

        $responseImageArea = $this->uploadImageStep2($this->urlUpload, $dataUpload, $files);

        $patternImage = '/parent.SUUMO.COMMON.callBack(.*?);/';
        preg_match_all($patternImage, $responseImageArea, $matchImage);

        if (count($matchImage) > 1) {
            foreach ($matchImage[1] as $key => $match) {
                $patternField = "/'(.*?)'/";
                preg_match_all($patternField, $match, $matchField);
                if (count($matchField) > 1 && count($matchField[1]) > 3) {
                    $files[$matchField[1][3]]["image"] = $matchField[1];
                }
            }
        }
        $this->saveImageStep2($files, $dataUpload);
    }

    private function uploadImageStep2($url, $fields, $files)
    {
        $boundary = uniqid();
        $delimiter = '-------------' . $boundary;
        $data = '';

        foreach ($fields as $name => $content) {
            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
                . $content . "\r\n";
        }

        foreach ($files as $content) {
            $arrayImage = [
                "tdId" => $content["index"],
                "singleGazoPath" => "",
                "gazoUploadFlg" => "2",
                "gazoFileNm" => "",
                "gazoFilePath" => "",
                "gazoId" => "",
                "gazoCtgKbn" => "",
                "cusShinkokuFlg" => "0",
                "singleGazoSize" => "0",
                "nykMotoGazoFileNm" => ""

            ];

            foreach ($arrayImage as $key => $value) {
                $data .= "--" . $delimiter . "\r\n"
                    . 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n"
                    . $value . "\r\n";
            }

            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $content["name"] . '"; filename="' . $content["filename"] . '"' . "\r\n"
                . 'Content-Type: ' . $content["type"] . "\r\n\r\n"
                . $content["content"] . "\r\n";
        }

        $data .= "--" . $delimiter . "--\r\n";

        return $this->requestPostBinaryStep2($url, $data, $delimiter)["response"];
    }

    private function saveImageStep2($dataImage, $fields)
    {
        $boundary = uniqid();
        $delimiter = '-------------' . $boundary;
        $data = '';
        foreach ($fields as $name => $content) {
            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
                . $content . "\r\n";
        }

        for ($i = 0; $i < 34; $i++) {
            if($i < 30) {
                $arrayImage = [
                    "tdId" => $i,
                    "singleGazoPath" => "",
                    "gazoPath" => "",
                    "gazoUploadFlg" => "",
                    "gazoFileNm" => "",
                    "cusShinkokuFlg" => "",
                    "gazoId" => "",
                    "singleGazoSize" => "",
                    "nykMotoGazoFileNm" => "",
                    "shuhenKankyoToho" => "",
                    "shuhenKankyoNo" => "",
                    "shuhenKankyoKbn" => "",
                    "shuhenKankyoNm" => "",
                    "shuhenKankyoKyori" => "",
                    "shuhenComment" => ""
                ];

                if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                    $image = $dataImage[$i]["image"];
                    $dataOther = $dataImage[$i];
                    $arrayImage["singleGazoPath"] = $image[1];
                    $arrayImage["gazoUploadFlg"] = "1";
                    $arrayImage["cusShinkokuFlg"] = "0";
                    $arrayImage["gazoPath"] = $image[2];
                    $arrayImage["hatchuFlg"] = "";
                    $arrayImage["shuhenKankyoToho"] = "1";
                    $arrayImage["singleGazoSize"] = $image[5];
                    $arrayImage["nykMotoGazoFileNm"] = $image[6];
                    $arrayImage["shuhenComment"] = $dataOther["comment"] ?? "";
                    $arrayImage["shuhenKankyoKyori"] = $dataOther["distance"];
                    $arrayImage["shuhenKankyoNm"] = $dataOther["facility_name"];
                    $arrayImage["shuhenKankyoKbn"] = $dataOther["property_sub"];
                }
            }
            if($i == 30){
                if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                    $image = $dataImage[$i]["image"];
                    $dataOther = $dataImage[$i];
                    $arrayImage["tdId"] = $i;
                    $arrayImage["annai1SingleGazoPath"] = $image[1];
                    $arrayImage["annai1GazoUploadFlg"] = "1";
                    $arrayImage["gazoUploadFlg"] = "1";
                    $arrayImage["cusShinkokuFlg"] = "0";
                    $arrayImage["gazoPath"] = $image[2];
                    $arrayImage["annai1GazoId"] = "";
                    $arrayImage["hatchuFlg"] = "";
                    $arrayImage["annai1NyukoGazoShuCd"] = "";
                    $arrayImage["annai1HatchuSts"] = "";
                    $arrayImage["annai1TraceGazoUmuFlg"] = "";
                    $arrayImage["annai1GazoUmuFlg"] = "";
                    $arrayImage["annai1CusShinkokuFlg"] = "";
                    $arrayImage["annai1SingleGazoSize"] = $image[5];
                    $arrayImage["annai1NykMotoGazoFileNm"] = $image[6];
                    $arrayImage["annai1GazoFileNm"] = "";
                    $arrayImage["annai1GazoCaption1"] = $dataOther["comment"] ?? "";
                }
            }
            if($i == 31){
                if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                    $image = $dataImage[$i]["image"];
                    $dataOther = $dataImage[$i];
                    $arrayImage["tdId"] = $i;
                    $arrayImage["annai2SingleGazoPath"] = $image[1];
                    $arrayImage["annai2GazoUploadFlg"] = "1";
                    $arrayImage["gazoUploadFlg"] = "1";
                    $arrayImage["cusShinkokuFlg"] = "0";
                    $arrayImage["gazoPath"] = $image[2];
                    $arrayImage["annai2GazoId"] = "";
                    $arrayImage["hatchuFlg"] = "";
                    $arrayImage["annai2NyukoGazoShuCd"] = "";
                    $arrayImage["annai2HatchuSts"] = "";
                    $arrayImage["annai2TraceGazoUmuFlg"] = "";
                    $arrayImage["annai2GazoUmuFlg"] = "";
                    $arrayImage["annai2CusShinkokuFlg"] = "";
                    $arrayImage["annai2SingleGazoSize"] = $image[5];
                    $arrayImage["annai2NykMotoGazoFileNm"] = $image[6];
                    $arrayImage["annai2GazoFileNm"] = "";
                    $arrayImage["annai2GazoCaption1"] = $dataOther["comment"] ?? "";
                }
            }
            if($i == 32){
                if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                    $image = $dataImage[$i]["image"];
                    $dataOther = $dataImage[$i];
                    $arrayImage["tdId"] = $i;
                    $arrayImage["kotsuSingleGazoPath"] = $image[1];
                    $arrayImage["kotsuGazoUploadFlg"] = "1";
                    $arrayImage["gazoUploadFlg"] = "1";
                    $arrayImage["cusShinkokuFlg"] = "0";
                    $arrayImage["kotsuGazoPath"] = $image[2];
                    $arrayImage["kotsuGazoId"] = "";
                    $arrayImage["hatchuFlg"] = "";
                    $arrayImage["kotsuCusShinkokuFlg"] = "";
                    $arrayImage["kotsuSingleGazoSize"] = $image[5];
                    $arrayImage["kotsuNykMotoGazoFileNm"] = $image[6];
                    $arrayImage["kotsuGazoFileNm"] = "";
                    $arrayImage["kotsuGazoCaption1"] = $dataOther["comment"] ?? "";
                }
            }
            if($i == 33){
                if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                    $image = $dataImage[$i]["image"];
                    $dataOther = $dataImage[$i];
                    $arrayImage["tdId"] = $i;
                    $arrayImage["rosenSingleGazoPath"] = $image[1];
                    $arrayImage["rosenGazoUploadFlg"] = "1";
                    $arrayImage["gazoUploadFlg"] = "1";
                    $arrayImage["cusShinkokuFlg"] = "0";
                    $arrayImage["rosenGazoPath"] = $image[2];
                    $arrayImage["rosenGazoId"] = "";
                    $arrayImage["hatchuFlg"] = "";
                    $arrayImage["rosenCusShinkokuFlg"] = "";
                    $arrayImage["rosenSingleGazoSize"] = $image[5];
                    $arrayImage["rosenNykMotoGazoFileNm"] = $image[6];
                    $arrayImage["rosenGazoFileNm"] = "";
                    $arrayImage["rosenGazoCaption1"] = $dataOther["comment"] ?? "";
                }
            }

            foreach ($arrayImage as $key => $value) {
                $data .= "--" . $delimiter . "\r\n"
                    . 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n"
                    . $value . "\r\n";
            }

            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="upFile[' . $i . ']"; filename=""' . "\r\n"
                . 'Content-Type: application/octet-stream' . "\r\n\r\n"
                . "\r\n";
        }

        $data .= "--" . $delimiter . "--\r\n";

        return $this->requestPostBinaryStep2($this->urlSaveArea, $data, $delimiter);
    }

    private function requestPostBinaryStep2($url, $data, $delimiter)
    {
        $ch = curl_init($url);

        curl_setopt_array($ch, [
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'Content-Type: multipart/form-data; boundary=' . $delimiter,
                'Content-Length: ' . strlen($data),
                'Host: manager.suumo.jp',
                'Referer: https://manager.suumo.jp/chukai/tn01Xx3101.do',
                'Origin: https://manager.suumo.jp',
                'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',
            ],
            CURLOPT_POSTFIELDS => $data
        ]);

        curl_setopt_array($ch, $this->option);
        $response = curl_exec($ch);

        return [
            "response" => $response,
            "http_code" => curl_getinfo($ch, CURLINFO_HTTP_CODE)
        ];
    }

    public function uploadStep3()
    {
        if (empty($this->bukkenCd)) {
            Log::error("Insert image into Suumo not found bukkenCd");
            return false;
        }

        $this->data["bukkenCd"] = $this->bukkenCd;

        $response = $this->requestWithData($this->urlStep3, http_build_query($this->data), true);

        $pattern = '/<form name="tn01Xx2101ActionForm" id="Tn01Xx2101Form" method="POST" action="\/chukai\/tn01Xx2101\/" enctype="multipart\/form-data">(.*?) <div class="pv15 mt10 bgLGray bdDGray">/s';
        preg_match($pattern, $response, $match1);

        if (count($match1) < 2) {
            return false;
        }

        $pattern = '/<input type="hidden" name="(?<name>.*?)" value="(?<value>.*?)".*?>/';
        preg_match_all($pattern, $match1[1], $match2, PREG_SET_ORDER);

        $hiddenInputs = collect($match2)
            ->pluck('value', 'name')
            ->toArray();

        $files = [];
        $countFile = 0;

        $suumo_spec = $this->suumo_spec;
        $suumo_construction = $this->suumo_construction;

        for($i = 0; $i<12; $i++){
            $file = [
                "name" => "upFile[" . $countFile . "]",
                "index" => $countFile,
                "filename" => "",
                "type" => "",
                "content" => "",
                "type_id" => "",
                "type_text" => "",
                "comment_name"  =>  "",
                "comment" => ""
            ];
            if($i<6){
                if($i < count($suumo_spec)){
                    $image = $suumo_spec[$i];
                    $imagePath = storage_path() . "/app/" . $image->file_path;
                    $imageName = explode("/", $imagePath);
                    if (strpos($imagePath, ".JPG") === false
                        && strpos($imagePath, ".jpg") === false
                        && strpos($imagePath, ".JPEG") === false
                        && strpos($imagePath, ".jpeg") === false) {
                        continue;
                    }
                    $file = [
                        "name" => "upFile[" . $countFile . "]",
                        "index" => $countFile,
                        "filename" => array_last($imageName),
                        "type" => "image/jpeg",
                        "content" => file_get_contents($imagePath),
                        "type_id" => $this->getTypeDataSpec($image->property)["id"],
                        "type_text" => $this->getTypeDataSpec($image->property)["name"],
                        "comment_name" => $image->facility_name,
                        "comment" => $image->memo
                    ];
                }
            }else{
                $j = $i-6;
                if($j < count($suumo_construction)){
                    $image = $suumo_construction[$j];
                    $imagePath = storage_path() . "/app/" . $image->file_path;
                    $imageName = explode("/", $imagePath);
                    if (strpos($imagePath, ".JPG") === false
                        && strpos($imagePath, ".jpg") === false
                        && strpos($imagePath, ".JPEG") === false
                        && strpos($imagePath, ".jpeg") === false) {
                        continue;
                    }
                    $file = [
                        "name" => "upFile[" . $countFile . "]",
                        "index" => $countFile,
                        "filename" => array_last($imageName),
                        "type" => "image/jpeg",
                        "content" => file_get_contents($imagePath),
                        "type_id" => $this->getTypeDataSpec($image->property)["id"],
                        "type_text" => $this->getTypeDataSpec($image->property)["name"],
                        "comment_name" => $image->facility_name,
                        "comment" => $image->memo
                    ];
                }
            }
            array_push($files, $file);
            $countFile++;
        }

        $dataUpload = [
            "org.apache.struts.taglib.html.TOKEN" => "049ed4a025385f8c45b1a35ab9ca17ff",
            "bukkenCd" => "93632557",
            "poolGlCd" => "SE",
            "areaCd" => "060",
            "regId" => "Tn01Xx1101",
            "bukkenShuCtg" => "2",
            "kenchikuJokenUmu" => "0",
            "hanbaiFlg" => "1",
            "gazoBukkenCd" => "93632557",
            "krNyukoKbn" => "00",
            "TB" => "20",
            "jjt" => "",
            "singleGazoTotalSize" => "0"
        ];

        foreach ($dataUpload as $key => $field) {
            if (isset($hiddenInputs[$key])) {
                switch ($key) {
                    case "org.apache.struts.taglib.html.TOKEN":
                    case "bukkenCd":
                    case "gazoBukkenCd":
                        $dataUpload[$key] = $hiddenInputs[$key];
                        break;
                }
            }
        }

        $response = $this->uploadImageStep3($this->urlUpload, $dataUpload, $files);

        $patternImage = '/parent.SUUMO.COMMON.callBack(.*?);/';
        preg_match_all($patternImage, $response, $matchImage);

        if (count($matchImage) > 1) {
            foreach ($matchImage[1] as $key => $match) {
                $patternField = "/'(.*?)'/";
                preg_match_all($patternField, $match, $matchField);

                if (count($matchField) > 1 && count($matchField[1]) > 3) {
                    $files[$matchField[1][3]]["image"] = $matchField[1];
                }
            }
        }

        if ($this->saveImageStep3($files, $dataUpload) == 302) {
            return true;
        }

        return false;
    }

    private function uploadImageStep3($url, $fields, $files)
    {
        $boundary = uniqid();
        $delimiter = '-------------' . $boundary;
        $data = '';

        foreach ($fields as $name => $content) {
            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
                . $content . "\r\n";
        }

        foreach ($files as $content) {
            $arrayImage = [
                "tdId" => $content["index"],
                "singleGazoPath" => "",
                "gazoUploadFlg" => "2",
                "gazoFileNm" => "",
                "gazoFilePath" => "",
                "gazoId" => "",
                "gazoCtgKbn" => "",
                "hatchuFlg" => "false",
                "traceGazoUmuFlg" => "dn",
                "cusShinkokuFlg" => "0",
                "singleGazoSize" => "0",
                "nykMotoGazoFileNm" => "",
                "select148a" => "画像カテゴリを選択してください",
                "gazoCaption1" => ""
            ];

            foreach ($arrayImage as $key => $value) {
                $data .= "--" . $delimiter . "\r\n"
                    . 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n"
                    . $value . "\r\n";
            }

            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $content["name"] . '"; filename="' . $content["filename"] . '"' . "\r\n"
                . 'Content-Type: ' . $content["type"] . "\r\n\r\n"
                . $content["content"] . "\r\n";
        }

        $data .= "--" . $delimiter . "--\r\n";

        return $this->requestPostBinaryStep3($url, $data, $delimiter)["response"];
    }

    private function saveImageStep3($dataImage, $fields)
    {
        $boundary = uniqid();
        $delimiter = '-------------' . $boundary;
        $data = '';

        foreach ($fields as $name => $content) {
            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
                . $content . "\r\n";
        }

        for ($i = 0; $i < 12; $i++) {
            if($i<6){
                $j = $i+1;
                $arrayImage = [
                    "tdId" => $i,
                    "gazoId"    =>  "",
                    "singleGazoPath" => "",
                    "gazoUploadFlg" => "",
                    "nyukoGazoShuGlCd" => "SE",
                    "nyukoGazoShuCd" => "SE0".$j,
                    "gazoFileNm" => "",
                    "gazoFilePath" => "",
                    "cusShinkokuFlg" => "",
                    "singleGazoSize" => "",
                    "nykMotoGazoFileNm" => "",
                    "gazoCaption1" => "",
                    "gazoCaption2" => "",
                    "gazoCtgKbn" => "",
                    "gazoCtgKbn00" => "",
                ];

                if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                    $image = $dataImage[$i]["image"];
                    $dataOther = $dataImage[$i];
                    $arrayImage["singleGazoPath"] = $image[1];
                    $arrayImage["gazoFilePath"] = $image[2];
                    $arrayImage["gazoUploadFlg"] = "1";
                    $arrayImage["singleGazoSize"] = $image[5];
                    $arrayImage["nykMotoGazoFileNm"] = $image[6];
                    $arrayImage["gazoCtgKbn"] = $dataOther["type_id"];
                    $arrayImage["gazoCtgKbn00"] = $dataOther["type_text"];
                    $arrayImage["gazoCaption1"] = $dataOther["comment"] ?? "";
                    $arrayImage["gazoCaption2"] = $dataOther["comment_name"] ?? "";
                }
            }else{
                $j = $i-6;
                $arrayImage = [
                    "tdId" => $i,
                    "gazoId"    =>  "",
                    "singleGazoPath" => "",
                    "gazoUploadFlg" => "",
                    "nyukoGazoShuGlCd" => "KO",
                    "nyukoGazoShuCd" => "KO0".$j,
                    "gazoFileNm" => "",
                    "gazoFilePath" => "",
                    "cusShinkokuFlg" => "",
                    "singleGazoSize" => "",
                    "nykMotoGazoFileNm" => "",
                    "gazoCtgKbn" => "",
                    "gazoCaption1" => "",
                    "gazoCaption2" => ""
                ];
                if (isset($dataImage[$i]) && isset($dataImage[$i]["image"])) {
                    $image = $dataImage[$i]["image"];
                    $dataOther = $dataImage[$i];
                    $arrayImage["singleGazoPath"] = $image[1];
                    $arrayImage["gazoFilePath"] = $image[2];
                    $arrayImage["gazoUploadFlg"] = "1";
                    $arrayImage["singleGazoSize"] = $image[5];
                    $arrayImage["nykMotoGazoFileNm"] = $image[6];
                    $arrayImage["gazoCtgKbn"] = $dataOther["type_id"];
                    $arrayImage["gazoCtgKbn00"] = $dataOther["type_text"];
                    $arrayImage["gazoCaption1"] = $dataOther["comment"] ?? "";
                    $arrayImage["gazoCaption2"] = $dataOther["comment_name"] ?? "";
                }
            }

            foreach ($arrayImage as $key => $value) {
                $data .= "--" . $delimiter . "\r\n"
                    . 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n"
                    . $value . "\r\n";
            }

            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="upFile[' . $i . ']"; filename=""' . "\r\n"
                . 'Content-Type: application/octet-stream' . "\r\n\r\n"
                . "\r\n";
        }

        $data .= "--" . $delimiter . "--\r\n";

        return $this->requestPostBinaryStep3($this->urlSaveStep3, $data, $delimiter)["http_code"];
    }

    private function requestPostBinaryStep3($url, $data, $delimiter)
    {
        $ch = curl_init($url);

        curl_setopt_array($ch, [
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'Content-Type: multipart/form-data; boundary=' . $delimiter,
                'Content-Length: ' . strlen($data),
                'Host: manager.suumo.jp',
                'Referer: https://manager.suumo.jp/chukai/tn01Xx2101.do',
                'Origin: https://manager.suumo.jp',
                'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',
            ],
            CURLOPT_POSTFIELDS => $data
        ]);

        curl_setopt_array($ch, $this->option);
        $response = curl_exec($ch);

        return [
            "response" => $response,
            "http_code" => curl_getinfo($ch, CURLINFO_HTTP_CODE)
        ];
    }

    private function requestWithData($url, $data, $isPost = false)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        if ($isPost) {
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
            curl_setopt($curl, CURLOPT_HTTPHEADER, [
                'Host: manager.suumo.jp',
                'Referer: https://manager.suumo.jp/chukai/tn01Xx1101.do',
                'Origin: https://manager.suumo.jp',
                'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',
            ]);
        }
        curl_setopt_array($curl, $this->option);
        $response = curl_exec($curl) or die('error ' . curl_error($curl));
        return $response;
    }

    private function getTypeData($type, $property)
    {
        if (empty($property)) {
            //$photo_property = config('const.PHOTO_PROPERTY_SUUMO_ROOM');
            $dataType = [
                "id" => "991",
                "name" => "その他"
            ];
            switch ($type) {
                case "1";
                    $dataType["id"] = "214";
                    $dataType["name"] = "間取り図";
                    break;
                case "2";
                    $dataType["id"] = "011";
                    $dataType["name"] = "現地外観写真";
                    break;

                case "3";
                    $dataType["id"] = "121";
                    $dataType["name"] = "完成予想図(外観)";
                    break;
                case "4";
                    $dataType["id"] = "091";
                    $dataType["name"] = "航空写真";
                    break;
                case "5";
                    $dataType["id"] = "101";
                    $dataType["name"] = "高台写真";
                    break;
                case "6";
                    $dataType["id"] = "019";
                    $dataType["name"] = "その他現地";
                    break;
                case "7";
                    $dataType["id"] = "021";
                    $dataType["name"] = "リビング";
                    break;
                case "8";
                    $dataType["id"] = "042";
                    $dataType["name"] = "同形状・同仕様写真(リビング）";
                    break;
                case "9";
                    $dataType["id"] = "022";
                    $dataType["name"] = "浴室";
                    break;
                case "10";
                    $dataType["id"] = "043";
                    $dataType["name"] = "同形状・同仕様写真(浴室）";
                    break;
                case "11";
                    $dataType["id"] = "023";
                    $dataType["name"] = "キッチン";
                    break;
                case "12";
                    $dataType["id"] = "044";
                    $dataType["name"] = "同形状・同仕様写真(キッチン）";
                    break;
                case "13";
                    $dataType["id"] = "024";
                    $dataType["name"] = "リビング以外の居室";
                    break;
                case "14";
                    $dataType["id"] = "025";
                    $dataType["name"] = "トイレ";
                    break;
                case "15";
                    $dataType["id"] = "026";
                    $dataType["name"] = "洗面台・洗面所";
                    break;
                case "16";
                    $dataType["id"] = "027";
                    $dataType["name"] = "収納";
                    break;
                case "17";
                    $dataType["id"] = "029";
                    $dataType["name"] = "その他内観";
                    break;
                case "18";
                    $dataType["id"] = "049";
                    $dataType["name"] = "同形状・同仕様写真(その他内観)";
                    break;
                case "19";
                    $dataType["id"] = "131";
                    $dataType["name"] = "完成予想図(内観)";
                    break;
                case "20";
                    $dataType["id"] = "081";
                    $dataType["name"] = "住戸からの眺望写真";
                    break;
                case "21";
                    $dataType["id"] = "013";
                    $dataType["name"] = "庭";
                    break;
                case "22";
                    $dataType["id"] = "014";
                    $dataType["name"] = "玄関";
                    break;
                case "23";
                    $dataType["id"] = "015";
                    $dataType["name"] = "バルコニー";
                    break;
                case "24";
                    $dataType["id"] = "031";
                    $dataType["name"] = "エントランス";
                    break;
                case "25";
                    $dataType["id"] = "032";
                    $dataType["name"] = "ロビー";
                    break;
                case "26";
                    $dataType["id"] = "033";
                    $dataType["name"] = "駐車場";
                    break;
                case "27";
                    $dataType["id"] = "039";
                    $dataType["name"] = "その他共用部";
                    break;
                case "28";
                    $dataType["id"] = "051";
                    $dataType["name"] = "モデルルーム写真";
                    break;
                case "36";
                    $dataType["id"] = "991";
                    $dataType["name"] = "その他";
                    break;
            }
        } elseif ($property < 4) {
            //$photo_property = config('const.PHOTO_PROPERTY_SUUMO_LAND');
            $dataType = [
                "id" => "991",
                "name" => "その他"
            ];
            switch ($type) {
                case "1";
                    $dataType["id"] = "215";
                    $dataType["name"] = "区画図";
                    break;
                case "2";
                    $dataType["id"] = "231";
                    $dataType["name"] = "区画図+建物プラン例";
                    break;

                case "3";
                    $dataType["id"] = "216";
                    $dataType["name"] = "全体区画図";
                    break;
                case "4";
                    $dataType["id"] = "012";
                    $dataType["name"] = "現地土地";
                    break;
                case "5";
                    $dataType["id"] = "019";
                    $dataType["name"] = "その他現地";
                    break;
                case "6";
                    $dataType["id"] = "017";
                    $dataType["name"] = "前面道路含む現地写真";
                    break;
                case "7";
                    $dataType["id"] = "111";
                    $dataType["name"] = "分譲済街並み写真";
                    break;
                case "8";
                    $dataType["id"] = "082";
                    $dataType["name"] = "現地からの眺望写真";
                    break;
                case "9";
                    $dataType["id"] = "225";
                    $dataType["name"] = "建物プラン例（間取り図）";
                    break;
                case "10";
                    $dataType["id"] = "221";
                    $dataType["name"] = "建物プラン例（外観写真）";
                    break;
                case "11";
                    $dataType["id"] = "222";
                    $dataType["name"] = "建物プラン例（内観写真）";
                    break;
                case "12";
                    $dataType["id"] = "223";
                    $dataType["name"] = "建物プラン例（パース・外観）";
                    break;
                case "13";
                    $dataType["id"] = "224";
                    $dataType["name"] = "建物プラン例（パース・内観）";
                    break;
                case "14";
                    $dataType["id"] = "229";
                    $dataType["name"] = "その他建物プラン例";
                    break;
                case "15";
                    $dataType["id"] = "061";
                    $dataType["name"] = "モデルハウス写真";
                    break;
                case "16";
                    $dataType["id"] = "141";
                    $dataType["name"] = "造成完了予想図";
                    break;
                case "17";
                    $dataType["id"] = "091";
                    $dataType["name"] = "航空写真";
                    break;
                case "18";
                    $dataType["id"] = "101";
                    $dataType["name"] = "高台写真";
                    break;
                case "19";
                    $dataType["id"] = "991";
                    $dataType["name"] = "その他";
                    break;

            }
        } elseif ($property < 6) {
            //$photo_property = config('const.PHOTO_PROPERTY_SUUMO_HOUSE');
            $dataType = [
                "id" => "991",
                "name" => "その他"
            ];
            switch ($type) {
                case "1";
                    $dataType["id"] = "212";
                    $dataType["name"] = "間取り図";
                    break;
                case "2";
                    $dataType["id"] = "215";
                    $dataType["name"] = "区画図";
                    break;

                case "3";
                    $dataType["id"] = "216";
                    $dataType["name"] = "全体区画図";
                    break;
                case "4";
                    $dataType["id"] = "011";
                    $dataType["name"] = "現地外観写真";
                    break;
                case "5";
                    $dataType["id"] = "017";
                    $dataType["name"] = "前面道路含む現地写真";
                    break;
                case "6";
                    $dataType["id"] = "019";
                    $dataType["name"] = "その他現地";
                    break;
                case "7";
                    $dataType["id"] = "021";
                    $dataType["name"] = "リビング";
                    break;
                case "8";
                    $dataType["id"] = "023";
                    $dataType["name"] = "キッチン";
                    break;
                case "9";
                    $dataType["id"] = "081";
                    $dataType["name"] = "住戸からの眺望写真";
                    break;
                case "10";
                    $dataType["id"] = "029";
                    $dataType["name"] = "その他内観";
                    break;
                case "11";
                    $dataType["id"] = "024";
                    $dataType["name"] = "リビング以外の居室";
                    break;
                case "12";
                    $dataType["id"] = "027";
                    $dataType["name"] = "収納";
                    break;
                case "13";
                    $dataType["id"] = "026";
                    $dataType["name"] = "洗面台・洗面所";
                    break;
                case "14";
                    $dataType["id"] = "022";
                    $dataType["name"] = "浴室";
                    break;
                case "15";
                    $dataType["id"] = "025";
                    $dataType["name"] = "トイレ";
                    break;
                case "16";
                    $dataType["id"] = "013";
                    $dataType["name"] = "庭";
                    break;
                case "17";
                    $dataType["id"] = "014";
                    $dataType["name"] = "玄関";
                    break;
                case "18";
                    $dataType["id"] = "015";
                    $dataType["name"] = "バルコニー";
                    break;
                case "19";
                    $dataType["id"] = "033";
                    $dataType["name"] = "駐車場";
                    break;
                case "20";
                    $dataType["id"] = "111";
                    $dataType["name"] = "分譲済街並み写真";
                    break;
                case "21";
                    $dataType["id"] = "091";
                    $dataType["name"] = "航空写真";
                    break;
                case "22";
                    $dataType["id"] = "101";
                    $dataType["name"] = "高台写真";
                    break;
                case "23";
                    $dataType["id"] = "041";
                    $dataType["name"] = "同形状・同仕様写真(外観)";
                    break;
                case "24";
                    $dataType["id"] = "121";
                    $dataType["name"] = "完成予想図（外観）";
                    break;
                case "25";
                    $dataType["id"] = "049";
                    $dataType["name"] = "同形状・同仕様写真（その他内観）";
                    break;
                case "26";
                    $dataType["id"] = "131";
                    $dataType["name"] = "完成予想図（内観）";
                    break;
                case "27";
                    $dataType["id"] = "042";
                    $dataType["name"] = "同形状・同仕様写真(リビング）";
                    break;
                case "28";
                    $dataType["id"] = "043";
                    $dataType["name"] = "同形状・同仕様写真(浴室）";
                    break;
                case "29";
                    $dataType["id"] = "044";
                    $dataType["name"] = "同形状・同仕様写真(キッチン）";
                    break;
                case "30";
                    $dataType["id"] = "061";
                    $dataType["name"] = "モデルハウス写真";
                    break;
                case "31";
                    $dataType["id"] = "151";
                    $dataType["name"] = "街並完成予想図";
                    break;
                case "32";
                    $dataType["id"] = "991";
                    $dataType["name"] = "その他";
                    break;
            }
        } else {
            //$photo_property = config('const.PHOTO_PROPERTY_SUUMO_MANSION');
        }

        return $dataType;
    }

    private function getTypeDataSeller($type, $property)
    {
        if (empty($property)) {
            $dataType = [
                "id" => "991",
                "name" => "その他"
            ];
            switch ($type) {
                case "1";
                    $dataType["id"] = "011";
                    $dataType["name"] = "現地外観写真";
                    break;
                case "2";
                    $dataType["id"] = "091";
                    $dataType["name"] = "航空写真";
                    break;

                case "3";
                    $dataType["id"] = "101";
                    $dataType["name"] = "高台写真";
                    break;
                case "4";
                    $dataType["id"] = "019";
                    $dataType["name"] = "その他現地";
                    break;
                case "5";
                    $dataType["id"] = "021";
                    $dataType["name"] = "リビング";
                    break;
                case "6";
                    $dataType["id"] = "022";
                    $dataType["name"] = "浴室";
                    break;
                case "7";
                    $dataType["id"] = "023";
                    $dataType["name"] = "キッチン";
                    break;
                case "8";
                    $dataType["id"] = "024";
                    $dataType["name"] = "リビング以外の居室";
                    break;
                case "9";
                    $dataType["id"] = "025";
                    $dataType["name"] = "トイレ";
                    break;
                case "10";
                    $dataType["id"] = "026";
                    $dataType["name"] = "洗面台・洗面所";
                    break;
                case "11";
                    $dataType["id"] = "027";
                    $dataType["name"] = "収納";
                    break;
                case "12";
                    $dataType["id"] = "029";
                    $dataType["name"] = "その他内観";
                    break;
                case "13";
                    $dataType["id"] = "081";
                    $dataType["name"] = "住戸からの眺望写真";
                    break;
                case "14";
                    $dataType["id"] = "013";
                    $dataType["name"] = "庭";
                    break;
                case "15";
                    $dataType["id"] = "014";
                    $dataType["name"] = "玄関";
                    break;
                case "16";
                    $dataType["id"] = "015";
                    $dataType["name"] = "バルコニー";
                    break;
                case "17";
                    $dataType["id"] = "031";
                    $dataType["name"] = "エントランス";
                    break;
                case "18";
                    $dataType["id"] = "032";
                    $dataType["name"] = "ロビー";
                    break;
                case "19";
                    $dataType["id"] = "033";
                    $dataType["name"] = "駐車場";
                    break;
                case "20";
                    $dataType["id"] = "039";
                    $dataType["name"] = "その他共用部";
                    break;
                case "21";
                    $dataType["id"] = "198";
                    $dataType["name"] = "駅";
                    break;
                case "22";
                    $dataType["id"] = "196";
                    $dataType["name"] = "公園";
                    break;
                case "23";
                    $dataType["id"] = "186";
                    $dataType["name"] = "高校・高専";
                    break;
                case "24";
                    $dataType["id"] = "187";
                    $dataType["name"] = "中学校";
                    break;
                case "25";
                    $dataType["id"] = "188";
                    $dataType["name"] = "小学校";
                    break;
                case "26";
                    $dataType["id"] = "189";
                    $dataType["name"] = "幼稚園・保育園";
                    break;
                case "27";
                    $dataType["id"] = "182";
                    $dataType["name"] = "スーパー";
                    break;
                case "28";
                    $dataType["id"] = "197";
                    $dataType["name"] = "周辺の街並み";
                    break;
                case "29";
                    $dataType["id"] = "181";
                    $dataType["name"] = "ショッピングセンター";
                    break;
                case "30";
                    $dataType["id"] = "183";
                    $dataType["name"] = "コンビニ";
                    break;
                case "31";
                    $dataType["id"] = "184";
                    $dataType["name"] = "ドラッグストア";
                    break;
                case "32";
                    $dataType["id"] = "185";
                    $dataType["name"] = "ホームセンター";
                    break;
                case "33";
                    $dataType["id"] = "190";
                    $dataType["name"] = "病院";
                    break;
                case "34";
                    $dataType["id"] = "191";
                    $dataType["name"] = "郵便局";
                    break;
                case "35";
                    $dataType["id"] = "192";
                    $dataType["name"] = "役所";
                    break;
                case "36";
                    $dataType["id"] = "193";
                    $dataType["name"] = "図書館";
                    break;
                case "37";
                    $dataType["id"] = "194";
                    $dataType["name"] = "銀行";
                    break;
                case "38";
                    $dataType["id"] = "195";
                    $dataType["name"] = "警察署・交番";
                    break;
                case "39";
                    $dataType["id"] = "209";
                    $dataType["name"] = "その他環境写真";
                    break;
                case "40";
                    $dataType["id"] = "171";
                    $dataType["name"] = "発電・温水設備";
                    break;
                case "41";
                    $dataType["id"] = "172";
                    $dataType["name"] = "冷暖房・空調設備";
                    break;
                case "42";
                    $dataType["id"] = "173";
                    $dataType["name"] = "防犯設備";
                    break;
                case "43";
                    $dataType["id"] = "179";
                    $dataType["name"] = "その他設備";
                    break;
                case "44";
                    $dataType["id"] = "161";
                    $dataType["name"] = "構造・工法・仕様";
                    break;
                case "45";
                    $dataType["id"] = "991";
                    $dataType["name"] = "その他";
                    break;
            }
        } elseif ($property < 4) {
            $dataType = [
                "id" => "991",
                "name" => "その他"
            ];
            switch ($type) {
                case "1";
                    $dataType["id"] = "012";
                    $dataType["name"] = "現地土地写真";
                    break;
                case "2";
                    $dataType["id"] = "017";
                    $dataType["name"] = "前面道路含む現地写真";
                    break;

                case "3";
                    $dataType["id"] = "091";
                    $dataType["name"] = "航空写真";
                    break;
                case "4";
                    $dataType["id"] = "101";
                    $dataType["name"] = "高台写真";
                    break;
                case "5";
                    $dataType["id"] = "019";
                    $dataType["name"] = "その他現地";
                    break;
                case "6";
                    $dataType["id"] = "082";
                    $dataType["name"] = "現地からの眺望写真";
                    break;
                case "7";
                    $dataType["id"] = "198";
                    $dataType["name"] = "駅";
                    break;
                case "8";
                    $dataType["id"] = "196";
                    $dataType["name"] = "公園";
                    break;
                case "9";
                    $dataType["id"] = "186";
                    $dataType["name"] = "高校・高専";
                    break;
                case "10";
                    $dataType["id"] = "187";
                    $dataType["name"] = "中学校";
                    break;
                case "11";
                    $dataType["id"] = "188";
                    $dataType["name"] = "小学校";
                    break;
                case "12";
                    $dataType["id"] = "189";
                    $dataType["name"] = "幼稚園・保育園";
                    break;
                case "13";
                    $dataType["id"] = "182";
                    $dataType["name"] = "スーパー";
                    break;
                case "14";
                    $dataType["id"] = "197";
                    $dataType["name"] = "周辺の街並み";
                    break;
                case "15";
                    $dataType["id"] = "181";
                    $dataType["name"] = "ショッピングセンター";
                    break;
                case "16";
                    $dataType["id"] = "183";
                    $dataType["name"] = "コンビニ";
                    break;
                case "17";
                    $dataType["id"] = "184";
                    $dataType["name"] = "ドラッグストア";
                    break;
                case "18";
                    $dataType["id"] = "185";
                    $dataType["name"] = "ホームセンター";
                    break;
                case "19";
                    $dataType["id"] = "190";
                    $dataType["name"] = "病院";
                    break;
                case "20";
                    $dataType["id"] = "191";
                    $dataType["name"] = "郵便局";
                    break;
                case "21";
                    $dataType["id"] = "192";
                    $dataType["name"] = "役所";
                    break;
                case "22";
                    $dataType["id"] = "193";
                    $dataType["name"] = "図書館";
                    break;
                case "23";
                    $dataType["id"] = "194";
                    $dataType["name"] = "銀行";
                    break;
                case "24";
                    $dataType["id"] = "195";
                    $dataType["name"] = "警察署・交番";
                    break;
                case "25";
                    $dataType["id"] = "209";
                    $dataType["name"] = "その他環境写真";
                    break;
                case "26";
                    $dataType["id"] = "991";
                    $dataType["name"] = "その他";
                    break;
            }
        } elseif ($property < 6) {
            $dataType = [
                "id" => "991",
                "name" => "その他"
            ];
            switch ($type) {
                case "1";
                    $dataType["id"] = "011";
                    $dataType["name"] = "現地外観写真";
                    break;
                case "2";
                    $dataType["id"] = "017";
                    $dataType["name"] = "前面道路含む現地写真";
                    break;

                case "3";
                    $dataType["id"] = "091";
                    $dataType["name"] = "航空写真";
                    break;
                case "4";
                    $dataType["id"] = "101";
                    $dataType["name"] = "高台写真";
                    break;
                case "5";
                    $dataType["id"] = "019";
                    $dataType["name"] = "その他現地";
                    break;
                case "6";
                    $dataType["id"] = "021";
                    $dataType["name"] = "リビング";
                    break;
                case "7";
                    $dataType["id"] = "022";
                    $dataType["name"] = "浴室";
                    break;
                case "8";
                    $dataType["id"] = "023";
                    $dataType["name"] = "キッチン";
                    break;
                case "9";
                    $dataType["id"] = "024";
                    $dataType["name"] = "リビング以外の居室";
                    break;
                case "10";
                    $dataType["id"] = "025";
                    $dataType["name"] = "トイレ";
                    break;
                case "11";
                    $dataType["id"] = "026";
                    $dataType["name"] = "洗面台・洗面所";
                    break;
                case "12";
                    $dataType["id"] = "027";
                    $dataType["name"] = "収納";
                    break;
                case "13";
                    $dataType["id"] = "029";
                    $dataType["name"] = "その他内観";
                    break;
                case "14";
                    $dataType["id"] = "081";
                    $dataType["name"] = "住戸からの眺望写真";
                    break;
                case "15";
                    $dataType["id"] = "013";
                    $dataType["name"] = "庭";
                    break;
                case "16";
                    $dataType["id"] = "014";
                    $dataType["name"] = "玄関";
                    break;
                case "17";
                    $dataType["id"] = "015";
                    $dataType["name"] = "バルコニー";
                    break;
                case "18";
                    $dataType["id"] = "033";
                    $dataType["name"] = "駐車場";
                    break;
                case "19";
                    $dataType["id"] = "198";
                    $dataType["name"] = "駅";
                    break;
                case "20";
                    $dataType["id"] = "196";
                    $dataType["name"] = "公園";
                    break;
                case "21";
                    $dataType["id"] = "186";
                    $dataType["name"] = "高校・高専";
                    break;
                case "22";
                    $dataType["id"] = "187";
                    $dataType["name"] = "中学校";
                    break;
                case "23";
                    $dataType["id"] = "188";
                    $dataType["name"] = "小学校";
                    break;
                case "24";
                    $dataType["id"] = "189";
                    $dataType["name"] = "幼稚園・保育園";
                    break;
                case "25";
                    $dataType["id"] = "182";
                    $dataType["name"] = "スーパー";
                    break;
                case "26";
                    $dataType["id"] = "197";
                    $dataType["name"] = "周辺の街並み";
                    break;
                case "27";
                    $dataType["id"] = "181";
                    $dataType["name"] = "ショッピングセンター";
                    break;
                case "28";
                    $dataType["id"] = "183";
                    $dataType["name"] = "コンビニ";
                    break;
                case "29";
                    $dataType["id"] = "184";
                    $dataType["name"] = "ドラッグストア";
                    break;
                case "30";
                    $dataType["id"] = "185";
                    $dataType["name"] = "ホームセンター";
                    break;
                case "31";
                    $dataType["id"] = "190";
                    $dataType["name"] = "病院";
                    break;
                case "32";
                    $dataType["id"] = "191";
                    $dataType["name"] = "郵便局";
                    break;
                case "33";
                    $dataType["id"] = "192";
                    $dataType["name"] = "役所";
                    break;
                case "34";
                    $dataType["id"] = "193";
                    $dataType["name"] = "図書館";
                    break;
                case "35";
                    $dataType["id"] = "194";
                    $dataType["name"] = "銀行";
                    break;
                case "36";
                    $dataType["id"] = "195";
                    $dataType["name"] = "警察署・交番";
                    break;
                case "37";
                    $dataType["id"] = "209";
                    $dataType["name"] = "その他環境写真";
                    break;
                case "38";
                    $dataType["id"] = "171";
                    $dataType["name"] = "発電・温水設備";
                    break;
                case "39";
                    $dataType["id"] = "172";
                    $dataType["name"] = "冷暖房・空調設備";
                    break;
                case "40";
                    $dataType["id"] = "173";
                    $dataType["name"] = "防犯設備";
                    break;
                case "41";
                    $dataType["id"] = "179";
                    $dataType["name"] = "その他設備";
                    break;
                case "42";
                    $dataType["id"] = "161";
                    $dataType["name"] = "構造・工法・仕様";
                    break;
                case "43";
                    $dataType["id"] = "991";
                    $dataType["name"] = "その他";
                    break;
            }
        }

        return $dataType;
    }

    private function getTypeDataFacility($type)
    {
        $dataType = [
            "id" => "060218",
            "name" => "駅"
        ];
        switch ($type) {
            case "1";
                $dataType["id"] = "060218";
                $dataType["name"] = "駅";
                break;
            case "2";
                $dataType["id"] = "060201";
                $dataType["name"] = "ショッピングセンター";
                break;

            case "3";
                $dataType["id"] = "060202";
                $dataType["name"] = "スーパー";
                break;
            case "4";
                $dataType["id"] = "060203";
                $dataType["name"] = "コンビニ";
                break;
            case "5";
                $dataType["id"] = "060204";
                $dataType["name"] = "ドラッグストア";
                break;
            case "6";
                $dataType["id"] = "060205";
                $dataType["name"] = "ホームセンター";
                break;
            case "7";
                $dataType["id"] = "060206";
                $dataType["name"] = "高校,高專";
                break;
            case "8";
                $dataType["id"] = "060207";
                $dataType["name"] = "中学校";
                break;
            case "9";
                $dataType["id"] = "060208";
                $dataType["name"] = "小学校";
                break;
            case "10";
                $dataType["id"] = "060209";
                $dataType["name"] = "幼稚園,保育園";
                break;
            case "11";
                $dataType["id"] = "060210";
                $dataType["name"] = "病院";
                break;
            case "12";
                $dataType["id"] = "060211";
                $dataType["name"] = "郵便局";
                break;
            case "13";
                $dataType["id"] = "060212";
                $dataType["name"] = "役所";
                break;
            case "14";
                $dataType["id"] = "060213";
                $dataType["name"] = "図書館";
                break;
            case "15";
                $dataType["id"] = "060214";
                $dataType["name"] = "銀行";
                break;
            case "16";
                $dataType["id"] = "060215";
                $dataType["name"] = "警察署,交番";
                break;
            case "17";
                $dataType["id"] = "060216";
                $dataType["name"] = "公園";
                break;
            case "18";
                $dataType["id"] = "060217";
                $dataType["name"] = "周辺の街並み";
                break;
            case "19";
                $dataType["id"] = "060999";
                $dataType["name"] = "その他環境写真";
                break;
        }

        return $dataType;
    }

    private function getTypeDataSpec($type)
    {
        $dataType = [
            "id" => "",
            "name" => ""
        ];
        switch ($type) {
            case "1";
                $dataType["id"] = "171";
                $dataType["name"] = "発電・温水設備";
                break;
            case "2";
                $dataType["id"] = "172";
                $dataType["name"] = "冷暖房・空調設備";
                break;

            case "3";
                $dataType["id"] = "173";
                $dataType["name"] = "防犯設備";
                break;
            case "4";
                $dataType["id"] = "179";
                $dataType["name"] = "その他設備";
                break;
            case "5";
                $dataType["id"] = "174";
                $dataType["name"] = "省エネ性能ラベル";
                break;
        }

        return $dataType;
    }
}
