<?php

namespace App\Console\Commands\Converters;

use Carbon\Carbon;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use App\Models\Article;
use App\Models\MstCity;
use App\Models\MstPrefecture;
use App\Models\MstTown;
use App\Models\RelationInterior;
use App\Models\RelationVendorArticle;

class AtHomeMansionConverter
{
    const KANRININ_JOUCHU = 1;
    const KANRININ_NIKKIN = 2;
    const KANRININ_JUNKAI = 3;
    const KANRININ_NONE = 5;
    const KANRIKEITAI_JISHU = 1;
    const KANRIKEITAI_ICHIBU_ITAKU = 2;
    const KANRIKEITAI_ZENBU_ITAKU = 3;

    public static function convert($article)
    {
        $data = [];
        $mansion = Article::getParentMansion($article->mansion_id);

        // 物件種目
        if($mansion->property == 6) {
            $data['bukkenShumokuCode'] = '0301';
        } else if($mansion->property == 7) {
            $data['bukkenShumokuCode'] = '0304';
        }

        // 建物名
        //$data['tatemonoName'] = Str::limit($article->name_portal, 35, '');
        $data['tatemonoName'] = $article->name_portal;
        $data['tatemonoNameFurigana'] = '';

        // 部屋番号
        $data['heyaNumber'] = $article->room_num;

        if($article->room_num_disp == 1){
            $data['kaiinmukeHeyaHihyojiFlag'] = 1;
            $data['heyaHihyojiFlag'] = 1;
        }else{
            $data['kaiinmukeHeyaHihyojiFlag'] = 0;
            $data['heyaHihyojiFlag'] = 0;
        }
        $data['tatemonoHihyojiFlag'] = 1;
        // 所在地
        $zipParts = explode('-', $mansion->zip);
        $data['shinYubinNumber1'] = Arr::get($zipParts, 0);
        $data['shinYubinNumber2'] = Arr::get($zipParts, 1);

        $prefecture = MstPrefecture::getName($mansion->address1);
        $city = MstCity::getName($mansion->address1, $mansion->address2);
        $town = MstTown::getName($mansion->address1, $mansion->address2, $mansion->address3);

        $prefectureName = optional($prefecture)->name;
        $cityName = optional($city)->name;
        $townName = optional($town)->name;

        $prefectureCode = AtHomeConverter::getPrefectureCode($prefectureName);
        $cityCode = AtHomeConverter::getCityCode($prefectureCode, $cityName);
        $townCode = AtHomeConverter::getTownCode($prefectureCode, $cityCode, $townName, $article->address4);

        $data['todofukenName'] = $prefectureName;

        $data['shozaichiCode1'] = $cityCode ?? '';
        $data['shikugunName'] = $cityName;

        if($townCode) {
            $data['shozaichiCode2'] = $townCode->town_id;
            $data['chosonName'] = $townCode->town_name;
        } else {
            $data['shozaichiCode2'] = '';
            $data['chosonName'] = $townName;
        }
        $replaceArr  = ['−' => '' , '　' => '', ' ' => '' ];
        $address4 = str_replace('−', '', $mansion->address4 ?? $mansion->address4);
        $address4 = strtr($address4, $replaceArr);
        $data['banchi'] = Str::limit($address4, 30, '');
        if (empty($data["banchi"])) {
            $data["banchi"] = "未選択";
        }
        if(strpos($data['banchi'], '丁目')){
            $explodesAdrr4 = explode('丁目', $address4);
            $data['banchi'] = $explodesAdrr4[1] ?? '';
        }
        if(is_numeric($mansion->lat) && is_numeric($mansion->lng)) {
            $data['chizuIchiKakuninZumiFlag'] = 'true';
            $data['matchingLevel'] = 'E';
            $data['idoDaihyoIchi'] = 0;
            $data['keidoDaihyoIchi'] = 0;
            $data['idoGeocoder'] = $mansion->lat;
            $data['keidoGeocoder'] = $mansion->lng;
            $data['idoChizu'] = $mansion->lat;
            $data['keidoChizu'] = $mansion->lng;
        } else {
            $data['chizuKensakuHikokaiFlag'] = 'true';
        }

        // 建物構造
        $CONSTRUCTION_OPTIONS = [
            1 => '01', 2 => '02', 3 => '03', 4 => '04', 5 => '05',
            6 => '06', 7 => '07', 8 => '08', 9 => '09'
        ];
        $construction = Arr::get($CONSTRUCTION_OPTIONS, $mansion->construction ?? '');
        $data['tatemonoKozoCode'] = $construction;

        if($mansion->construction == 11){
            $data['tatemonoKozoSonota'] = 'RCB造';
            $data['tatemonoKozoCode'] = '10';
        }
        if($mansion->construction == 10){
            $data['tatemonoKozoSonota'] = 'WRC造';
            $data['tatemonoKozoCode'] = '10';
        }
        $floor = $mansion->floor;
        $data['chijoKaiso'] = is_numeric($floor) && $floor > 0 ? $floor : null;

        $underground = $mansion->underground;
        $data['chikaKaiso'] = is_numeric($underground) && $underground > 0 ? $underground : null;

        // 建物構造（所在階）
        $data['shozaiKai'] = is_numeric($article->whereabouts) ? $article->whereabouts : 1;

        if (is_numeric($mansion->floor) && $mansion->floor < $article->whereabouts) {
            $data['shozaiKai'] = $mansion->floor;
        }
        $data['mezonetUmuFlag'] = '';
        $data['mezonetKaiFrom'] = '';
        $data['mezonetKaiTo'] = '';
        if($article->maisonette == 1) {
            $data['mezonetUmuFlag'] = 'true';
            $data['shozaiKai'] = '';
            $data['mezonetKaiFrom'] = $article->maisonette_from;
            $data['mezonetKaiTo'] = $article->maisonette_to;
        }

        // 築年月
        $ageYear = $mansion->age_year;
        $ageMonth = $mansion->age_month;

        $data['chikuNengetsuYyyy'] = is_numeric($ageYear) ? $ageYear : 1900;

        if($ageYear > 9999) {
            $ageYearDate = Carbon::create(1900, 1, 1)
                ->addDays($ageYear);

            $data['chikuNengetsuYyyy'] = $ageYearDate->year;
        }

        $data['chikuNengetsuMm'] = is_numeric($ageMonth) && $ageMonth <= 12 ? $ageMonth : 1;
        $data['chikugoMinyukyoFlag'] = '';
        $data['shinchikuChukoKubun'] = '';
        if(is_numeric($data['chikuNengetsuYyyy'])) {
            $nowDate = Carbon::now();
            $nowDate1 = Carbon::now();
            $lastDate = $nowDate1->subYear();

            $ageDate = Carbon::create($data['chikuNengetsuYyyy'], $data['chikuNengetsuMm']);

            if($ageDate->gt($lastDate) && $mansion->property_sub == 1) {
                $data['shinchikuChukoKubun'] = 'true';
                $data['chikugoMinyukyoFlag'] = '';
            }


            //if(($ageDate->gt($lastDate) && $ageDate->lt($nowDate)) && $article->property_sub == 2 && $article->occupied == 1) {
            if($nowDate->diffInDays($ageDate) > 365 && $mansion->property_sub == 2 && $article->occupied == 1) {
                $data['chikugoMinyukyoFlag'] = 'true';
                $data['shinchikuChukoKubun'] = '';
            }
        }
        // 管理形態（形態・方式）
        $data['kanriJohoKanriKeitaiKubun'] = self::setManagementForm($mansion->management_form)['managementForm'];
        $data['kanriJohoKanriHoshikiKubun'] = self::setManagementForm($mansion->management_form)['manager'];
        // 管理会社
        $data['kanriJohoKanriGaisha'] = $mansion->management_company;
        // 交通
        if ($mansion->main_traffic == 1 &&
            !empty($mansion->main_traffic_line) &&
            !empty($mansion->main_traffic_station) &&
            is_numeric($mansion->main_traffic_time)) {
//            $trafficLineName = $mansion->main_traffic_line;
//            $trafficStationName = $mansion->main_traffic_station;
//
//            $trafficStationName = str_replace('JR', 'ＪＲ', $trafficStationName);
//            if($trafficStationName == '瓦ケ浜'){
//                $trafficStationName = '瓦ヶ浜';
//            }
//            if($trafficStationName == '石破'){
//                $trafficStationName = '石場';
//            }

            $trafficLine = AtHomeConverter::getTrafficLineCode($mansion->main_traffic_line, $mansion->main_traffic_station);
//            $trafficLineCode = '';
//            $trafficStationCode = '';
//            if(!empty($trafficLine)){
//                $trafficLineCode = $trafficLine[0]->line_id;
//                $trafficLineName = $trafficLine[0]->line_name;
//                foreach ($trafficLine as $trafficStation){
//                    if(strpos($trafficStationName, $trafficStation->station_name) !== false){
//                        $trafficStationCode = $trafficStation->station_id;
//                        break;
//                    }
//                }
//            }

            $data['denshaRiyoEnsenName'] = $trafficLine->line_name ?? '';
            $data['denshaRiyoEnsenCode'] = $trafficLine->line_id ?? '';
            $data['denshaRiyoEkiName'] = $trafficLine->station_name ?? '';
            $data['denshaRiyoEkiCode'] = $trafficLine->station_id ?? '';

            $data['denshaRiyoEkiToho'] = $mansion->main_traffic_time;
        }

        $data['kokudohoCode']  =  '';
        if($mansion->kokudoho == 1){
            $data['kokudohoCode'] = 11;
        }
        if($mansion->kokudoho == 2){
            $data['kokudohoCode'] = 12;
        }

        if(empty($data['denshaRiyoEnsenCode']) || empty($data['denshaRiyoEkiCode'])) {
            $data['denshaRiyoEnsenName'] = '';
            $data['denshaRiyoEkiName'] = '';
            $data['denshaRiyoEnsenCode'] = '';
            $data['denshaRiyoEkiCode'] = '';
            $data['denshaRiyoEkiToho'] = 10;
        }

        if ($mansion->main_traffic == 2 &&
            !empty($mansion->main_traffic_bus_time) &&
            !empty($mansion->main_traffic_bus) &&
            is_numeric($mansion->main_traffic_bus_walk)) {

//            $trafficLineName = $mansion->main_traffic_line;
//            $trafficStationName = $mansion->main_traffic_station;
//
//            $trafficStationName = str_replace('JR', 'ＪＲ', $trafficStationName);
//            if($trafficStationName == '瓦ケ浜'){
//                $trafficStationName = '瓦ヶ浜';
//            }
//            if($trafficStationName == '石破'){
//                $trafficStationName = '石場';
//            }

            $trafficLine = AtHomeConverter::getTrafficLineCode($mansion->main_traffic_line, $mansion->main_traffic_station);
//            $trafficLineCode = '';
//            $trafficStationCode = '';
//            if(!empty($trafficLine)){
//                $trafficLineCode = $trafficLine[0]->line_id;
//                $trafficLineName = $trafficLine[0]->line_name;
//                foreach ($trafficLine as $trafficStation){
//                    if(strpos($trafficStationName, $trafficStation->station_name) !== false){
//                        $trafficStationCode = $trafficStation->station_id;
//                        break;
//                    }
//                }
//            }

            $data['denshaRiyoEnsenName'] = $trafficLine->line_name ?? '';
            $data['denshaRiyoEnsenCode'] = $trafficLine->line_id ?? '';
            $data['denshaRiyoEkiName'] = $trafficLine->station_name ?? '';
            $data['denshaRiyoEkiCode'] = $trafficLine->station_id ?? '';

            $data['busRiyoBusJosha'] = $mansion->main_traffic_bus_time;
            $data['busRiyoBusteiName'] = $mansion->main_traffic_bus;
            $data['busRiyoBusteiTohoFun'] = $mansion->main_traffic_bus_walk;
        }

        // 利用駅１
        if ($mansion->sub_traffic1 == 1 &&
            !empty($mansion->sub_traffic1_line) &&
            !empty($mansion->sub_traffic1_station) &&
            is_numeric($mansion->sub_traffic1_time)) {

//            $trafficLineName = $mansion->sub_traffic1_line;
//            $trafficStationName = $mansion->sub_traffic1_station;
//
//            $trafficStationName = str_replace('JR', 'ＪＲ', $trafficStationName);
//            if($trafficStationName == '瓦ケ浜'){
//                $trafficStationName = '瓦ヶ浜';
//            }
//            if($trafficStationName == '石破'){
//                $trafficStationName = '石場';
//            }

            $trafficLine = AtHomeConverter::getTrafficLineCode($mansion->sub_traffic1_line, $mansion->sub_traffic1_station);
//            $trafficLineCode = '';
//            $trafficStationCode = '';
//            if(!empty($trafficLine)){
//                $trafficLineCode = $trafficLine[0]->line_id;
//                $trafficLineName = $trafficLine[0]->line_name;
//                foreach ($trafficLine as $trafficStation){
//                    if(strpos($trafficStationName, $trafficStation->station_name) !== false){
//                        $trafficStationCode = $trafficStation->station_id;
//                        break;
//                    }
//                }
//            }

            $data['riyoEki1EnsenName'] = $trafficLine->line_name == 'ＪＲ東海道本線(米原～神戸)' ? 'ＪＲ東海道本線' : ($trafficLine->line_name ?? '');
            $data['riyoEki1EnsenCode'] = $trafficLine->line_id ?? '';
            $data['riyoEki1EkiName'] =$trafficLine->station_name ?? '';
            $data['riyoEki1EkiCode'] = $trafficLine->station_id ?? '';
            $data['riyoEki1EkiToho'] = $mansion->sub_traffic1_time;

//            if(empty($trafficLineCode) || empty($trafficStationCode)) {
//                $data['riyoEki1EnsenCode'] = '';
//                $data['riyoEki1EkiCode'] = '';
//            }
        }

        if ($mansion->sub_traffic1 == 2 &&
            !empty($mansion->sub_traffic1_bus_time) &&
            !empty($mansion->sub_traffic1_bus) &&
            is_numeric($mansion->sub_traffic1_bus_walk)) {

//            $trafficLineName = $mansion->sub_traffic1_line;
//            $trafficStationName = $mansion->sub_traffic1_station;
//
//            $trafficStationName = str_replace('JR', 'ＪＲ', $trafficStationName);
//            if($trafficStationName == '瓦ケ浜'){
//                $trafficStationName = '瓦ヶ浜';
//            }
//            if($trafficStationName == '石破'){
//                $trafficStationName = '石場';
//            }

            $trafficLine = AtHomeConverter::getTrafficLineCode($mansion->sub_traffic1_line, $mansion->sub_traffic1_station);
//            $trafficLineCode = '';
//            $trafficStationCode = '';
//            if(!empty($trafficLine)){
//                $trafficLineCode = $trafficLine[0]->line_id;
//                $trafficLineName = $trafficLine[0]->line_name;
//                foreach ($trafficLine as $trafficStation){
//                    if(strpos($trafficStationName, $trafficStation->station_name) !== false){
//                        $trafficStationCode = $trafficStation->station_id;
//                        break;
//                    }
//                }
//            }

            $data['riyoEki1EnsenName'] = $trafficLine->line_name == 'ＪＲ東海道本線(米原～神戸)' ? 'ＪＲ東海道本線' : ($trafficLine->line_name ?? '');
            $data['riyoEki1EnsenCode'] = $trafficLine->line_id ?? '';
            $data['riyoEki1EkiName'] = $trafficLine->station_name ?? '';
            $data['riyoEki1EkiCode'] = $trafficLine->station_id ?? '';

            $data['busRiyo1BusJosha'] = $mansion->sub_traffic1_bus_time;
            $data['busRiyo1BusteiName'] = $mansion->sub_traffic1_bus;
            $data['busRiyo1BusteiTohoFun'] = $mansion->sub_traffic1_bus_walk;
        }

        // 利用駅２
        if ($mansion->sub_traffic2 == 1 &&
            !empty($mansion->sub_traffic2_line) &&
            !empty($mansion->sub_traffic2_station) &&
            is_numeric($mansion->sub_traffic2_time)) {
//            $trafficLineName = $mansion->sub_traffic2_line;
//            $trafficStationName = $mansion->sub_traffic2_station;
//
//            $trafficStationName = str_replace('JR', 'ＪＲ', $trafficStationName);
//            if($trafficStationName == '瓦ケ浜'){
//                $trafficStationName = '瓦ヶ浜';
//            }
//            if($trafficStationName == '石破'){
//                $trafficStationName = '石場';
//            }

            $trafficLine = AtHomeConverter::getTrafficLineCode($mansion->sub_traffic2_line, $mansion->sub_traffic2_station);
//            $trafficLineCode = '';
//            $trafficStationCode = '';
//            if(!empty($trafficLine)){
//                $trafficLineCode = $trafficLine[0]->line_id;
//                $trafficLineName = $trafficLine[0]->line_name;
//                foreach ($trafficLine as $trafficStation){
//                    if(strpos($trafficStationName, $trafficStation->station_name) !== false){
//                        $trafficStationCode = $trafficStation->station_id;
//                        break;
//                    }
//                }
//            }

            $data['riyoEki2EnsenName'] = $trafficLine->line_name ?? '';
            $data['riyoEki2EnsenCode'] = $trafficLine->line_id ?? '';
            $data['riyoEki2EkiName'] = $trafficLine->station_name ?? '';
            $data['riyoEki2EkiCode'] = $trafficLine->station_id ?? '';
            $data['riyoEki2EkiToho'] = $mansion->sub_traffic2_time;

//            if(empty($trafficLineCode) || empty($trafficStationCode)) {
//                $data['riyoEki2EnsenCode'] = '';
//                $data['riyoEki2EkiCode'] = '';
//            }
        }

        if ($mansion->sub_traffic2 == 2 &&
            !empty($mansion->sub_traffic2_bus_time) &&
            !empty($mansion->sub_traffic2_bus) &&
            is_numeric($mansion->sub_traffic2_bus_walk)) {

//            $trafficLineName = $mansion->sub_traffic2_line;
//            $trafficStationName = $mansion->sub_traffic2_station;
//
//            $trafficStationName = str_replace('JR', 'ＪＲ', $trafficStationName);
//            if($trafficStationName == '瓦ケ浜'){
//                $trafficStationName = '瓦ヶ浜';
//            }
//            if($trafficStationName == '石破'){
//                $trafficStationName = '石場';
//            }

            $trafficLine = AtHomeConverter::getTrafficLineCode($mansion->sub_traffic2_line ,$mansion->sub_traffic2_station);
//            $trafficLineCode = '';
//            $trafficStationCode = '';
//            if(!empty($trafficLine)){
//                $trafficLineCode = $trafficLine[0]->line_id;
//                $trafficLineName = $trafficLine[0]->line_name;
//                foreach ($trafficLine as $trafficStation){
//                    if(strpos($trafficStationName, $trafficStation->station_name) !== false){
//                        $trafficStationCode = $trafficStation->station_id;
//                        break;
//                    }
//                }
//            }

            $data['riyoEki2EnsenName'] =  $trafficLine->line_name ?? '';
            $data['riyoEki2EnsenCode'] =  $trafficLine->line_id ?? '';
            $data['riyoEki2EkiName'] =  $trafficLine->station_name ?? '';
            $data['riyoEki2EkiCode'] = $trafficLine->station_id ?? '';

            $data['busRiyo2BusJosha'] = $mansion->sub_traffic2_bus_time;
            $data['busRiyo2BusteiName'] = $mansion->sub_traffic2_bus;
            $data['busRiyo2BusteiTohoFun'] = $mansion->sub_traffic2_bus_walk;
        }

        // 施工会社
        $data['sekoGaisha'] = $article->construction_company;

        // リフォーム（水回り）
//        if($article->interior == 1){
////            $article->reform_interior_place1 = "";
////        }
        $data['reformNaisoSonota'] = '';

        $data['reformMizumawariKubun'] = '';
        $data['reformMizumawariYyyy'] = '';
        $data['reformMizumawariMm'] = '';

        $data['reformNaisoKubun'] = '';
        $data['reformNaisoYyyy'] = '';
        $data['reformNaisoMm'] = '';
        if($article->interior != 1) {

            $interior_place = RelationInterior::where('article_id', $article->building_id)->get();

            if ($interior_place) {
                foreach ($interior_place as $v) {
                    if($v->item_id==6) {
                        $data['reformNaisoCode'][] = 3;
                    }
                    if($v->item_id==5) {
                        $data['reformNaisoCode'][] = 4;
                    }
                    if($v->item_id == 7){
                        $data['reformNaisoSonota'] = $article->interior_place;
                    }
                    if($v->item_id == 4 || $v->item_id == 5 || $v->item_id == 6 || $v->item_id == 7){
                        if($article->interior == 3) {
                            $data['reformNaisoKubun'] = 2;
                        }else{
                            $data['reformNaisoKubun'] = 1;
                        }
                        if($v->item_id == 4){
                            $data['reformNaisoCode'][] = 5;
                        }
                        $data['reformNaisoYyyy'] = $article->interior_year;
                        $data['reformNaisoMm'] = $article->interior_month;
                    }
                    if($v->item_id == 1 || $v->item_id == 2 || $v->item_id == 3){
                        if($article->interior == 3) {
                            $data['reformMizumawariKubun'] = 2;
                        }else{
                            $data['reformMizumawariKubun'] = 1;
                        }
                        $data['reformMizumawariYyyy'] = $article->interior_year;
                        $data['reformMizumawariMm'] = $article->interior_month;
                    }
                }
                if(!isset($data['reformNaisoCode'])){
                    $data['reformNaisoCode'][] = "";
                }
            }else{
                $data['reformNaisoCode'][] = "";
            }
        }

        $interiorPlaces = RelationInterior::where('article_id', $article->building_id)
            ->pluck('item_id');

        if(!$interiorPlaces->isEmpty()) {
            $data['reformMizumawariCode'] = [];

            foreach($interiorPlaces as $interiorPlace) {
                if($interiorPlace < 4) {
                    $data['reformMizumawariCode'][] = $interiorPlace + 1;
                }
            }
        }
        $data['reformMizumawariSonota'] = '';
        // リフォーム（内装）
        if($article->interior == 2 || $article->interior == 3){
            $data['reformMizumawariSonota'] = Str::limit($article->interior_text, 200, '');
            $data['reformNaisoSonota'] = $data['reformMizumawariSonota'];
        }

        // 価格
        //$data['bukkenKakaku'] = $article->price;
        //$data['shohizeiGaku'] = $article->price * 0.1;
        if($article->tax == 1){
            $data['bukkenKakaku'] = $article->price;
            $data['shohizeiGaku'] = '';
        }else{
            //$price_tax = $article->price;
            //$price = $article->price - $article->price/110;
            $tax = $article->price/11;
            $data['bukkenKakaku'] = $article->price;
            $data['shohizeiGaku'] = round($tax, 1);
        }

        // 管理費
        if($article->management == 0 || $article->management == 2 || $article->management_cost == 0) {
            $data['kanrihiRunningShubetsu'] = 'true';
        } else {
            if($article->management_cost_unit == 2) {
//                $data['kanrihiRunningGetsugaku'] = intval($article->management_cost / 12);
                $data['kanrihiRunningShubetsu'] = 'true';
            } else {
                $data['kanrihiRunningGetsugaku'] = $article->management_cost;
                $data['kanrihiRunningShubetsu'] = '';
            }
        }

        // 積立金
        if($article->repair == 0 || $article->repair == 2 || $article->repair_cost_unit == 0) {
            $data['tsumitatekinRunningShubetsu'] = 'true';
        } else {
            if($article->repair_cost_unit == 2) {
//                $data['tsumitatekinRunningGetsugaku'] = intval($article->repair_cost / 12);
                $data['tsumitatekinRunningShubetsu'] = 'true';
            } else {
                $data['tsumitatekinRunningGetsugaku'] = $article->repair_cost;
                $data['tsumitatekinRunningShubetsu'] = '';
            }
        }

        // 土地権利
        $LEASEHOLD_KIND_OPTIONS = [
            1 => '03', 2 => '06', 3 => '07', 4 => '07',
            5 => '02', 6 => '04', 7 => '05', 8 => '05'
        ];

        if(in_array($mansion->land_right, [2, 3])) {
            $leaseholdKind = Arr::get($LEASEHOLD_KIND_OPTIONS, $mansion->leasehold_kind ?? '');
            $data['tochiKenriCode'] = $leaseholdKind;

            if($article->land_rent == 1) {
                $data['shakuchiryo'] = '';
                if($article->land_rent_unit == 1 || $article->land_rent_unit == 2){
                    $data['shakuchiryo'] = $article->land_rent_val;
                }

            } else {
                $data['shakuchiryoNashiFlag'] = 'true';
            }
            if($mansion->leasehold_period == 2 || $mansion->leasehold_period == 1) {
                $data['tochiKenriShakuchiKikanYyyy'] = $mansion->leasehold_period_year;
                $data['tochiKenriShakuchiKikanMm'] = $mansion->leasehold_period_month;
            }else{
                $data['tochiKenriShakuchiKikanYyyy'] = '';
                $data['tochiKenriShakuchiKikanMm'] = '';
            }
            if($mansion->deposit_cost == 1) {
                $data['tochiKenriHoshokin'] = $mansion->deposit_cost_val;
            }

            if($mansion->right_cost == 1) {
                $data['tochiKenriKenrikin'] = $mansion->right_cost_val;
            }
        } else {
            $data['tochiKenriCode'] = '01';
        }

        // ペット相談
        $data['petSodanUmuFlag'] = '';
        $data['petSodanNaiyo'] = $mansion->pet_count;
        if($mansion->pet == 2) {
            $data['petKogatakenKaFlag'] = '';
            $data['petOhgatakenKaFlag'] = '';
            $data['petNekoKaFlag'] = '';
            $data['petSodanUmuFlag'] = 1;
            $data['petSodanNaiyo'] = '';
        }

        // 駐車場
        $PARKING_OPTIONS = [
            1 => '01', 2 => '02', 3 => '03', 4 => '',
            5 => '', 6 => '03', 0 => ''
        ];

        $parking = Arr::get($PARKING_OPTIONS, $article->parking ?? '');
        $data['chushajoCode'] = $parking;

        $data['chushajoMuryoFlag'] = 'true';

       if ($article->parking == 3 && $article->parking_yes == 1 && !empty($article->parking_yes_cost_from)) {
           $data['chushajoRyokin'] = $article->parking_yes_cost_from;
           $data['chushajoMuryoFlag'] = '';
       }

        if ($article->parking == 6 && $article->parking_designated == 1 && !empty($article->parking_designated_cost)) {
            $data['chushajoRyokin'] = $article->parking_designated_cost;
            $data['chushajoMuryoFlag'] = '';
        }

        // その他一時金
        $costIndex = 0;
        if($article->broadcasting == 1) {
            if($article->broadcasting_presence == 1) {
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinName'] = '有線放送に係る費用（初期費用）';
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinKingaku'] = $article->broadcasting_cost;
                $costIndex++;
            }

            if($article->broadcasting_fixed_presence == 1) {
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinName'] = '有線放送に係る費用（初期費用）';
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinKingaku'] = $article->broadcasting_fixed_cost;
                $costIndex++;
            }
        }

        if($article->internet == 1) {
            if($article->internet_presence == 1) {
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinName'] = 'インターネットに係る費用（初期費用）';
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinKingaku'] = $article->internet_cost;
                $costIndex++;
            }

            if($article->internet_fixed_presence == 1) {
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinName'] = 'インターネットに係る費用（初期費用）';
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinKingaku'] = $article->internet_fixed_cost;
                $costIndex++;
            }
        }

        if($article->catv == 1) {
            if($article->catv_presence == 1) {
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinName'] = 'CATVに係る費用（初期費用）';
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinKingaku'] = $article->catv_cost;
                $costIndex++;
            }

            if($article->catv_fixed_presence == 1) {
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinName'] = 'CATVに係る費用（初期費用）';
                $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinKingaku'] = $article->catv_fixed_cost;
                $costIndex++;
            }
        }

        $COUNCIL_NAMES = [
            1 => '町会費', 2 => '町内会費', 3 => '自治会費'
        ];

        if($article->council > 0 &&
            $article->council_presence == 1) {
            $councilName = Arr::get($COUNCIL_NAMES, $article->council ?? '');

            $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinName'] = '町会費など'.(!empty($councilName) ? '（'.$councilName.'）' : '');
            $data['sonotaIchijikinIchiranElement['.$costIndex.'].ichijikinKingaku'] = $article->council_cost;
            $costIndex++;
        }

        //$data['sonotaIchijikinUmuFlag'] = $costIndex > 0 ? 0 : 1;
        $data['sonotaIchijikinUmuFlag'] = '';

        // ランニングコスト
        $ANOTHER_COST_UNIT_OPTIONS = [
            1 => 1, 2 => 2, 3 => 2
        ];

//        if (!empty($article->another_cost_name1) &&
//            is_numeric($article->another_cost1) &&
//            is_numeric($article->another_cost_unit1)) {
//            $data['sonotaRunningIchiranElement[0].sonotaRunningName'] = $article->another_cost_name1;
//            $data['sonotaRunningIchiranElement[0].sonotaRunningGetsugaku'] = $article->another_cost1;
//
//            $anotherCodeUnit1 = Arr::get($ANOTHER_COST_UNIT_OPTIONS, $article->another_cost_unit1 ?? '');
//            $data['sonotaRunningIchiranElement[0].sonotaRunningShiharaiTani'] = $anotherCodeUnit1;
//        }
//
//        if (!empty($article->another_cost_name2) &&
//            is_numeric($article->another_cost2) &&
//            is_numeric($article->another_cost_unit2)) {
//            $data['sonotaRunningIchiranElement[1].sonotaRunningName'] = $article->another_cost_name2;
//            $data['sonotaRunningIchiranElement[1].sonotaRunningGetsugaku'] = $article->another_cost2;
//
//            $anotherCodeUnit2 = Arr::get($ANOTHER_COST_UNIT_OPTIONS, $article->another_cost_unit2 ?? '');
//            $data['sonotaRunningIchiranElement[1].sonotaRunningShiharaiTani'] = $anotherCodeUnit2;
//        }

        // 温泉
        if(in_array($article->spring, [1, 2])) {
            $data['onsenHikikomiJokyoCode'] = [1, 2, 3];
            $data['onsenHikikomiZumiCode'] = [1, 2];
            $data['onsenRiyoKeitaiCode'] = [1, 2, 3, 4, 5];

            if($article->spring_presence == 1) {
                $data['onsenHiyoTo'] = $article->spring_cost;
            }
        }

        // 敷地面積
        $data['shikichiMenseki'] = $mansion->land_area_val;

        // 用途地域
        $USE_AREA_OPTIONS = [
            1 => '11', 10 => '12', 11 => '13', 2 => '14', 12 => '15',
            3 => '16', 13 => '17', 4 => '04', 5 => '05', 6 => '06',
            7 => '07', 8 => '08', 14 => '18', 99 => '09',
        ];

        $useArea = Arr::get($USE_AREA_OPTIONS, $mansion->use_area ?? '');
        $data['yotoChikiCode'] = $useArea;
        if ($article->use_area != $article->land_use) {
            $data['yotoChikiCode2'] = Arr::get($USE_AREA_OPTIONS, $article->land_use ?? '');
        }
        /*
        if($mansion->use_area != $mansion->land_use) {
            $landUse = Arr::get($USE_AREA_OPTIONS, $mansion->land_use ?? '');
            $data['yotoChikiCode'] = $landUse;
        }*/

        // 間取り
        $data['madoriHeyasu'] = is_numeric($article->floor_plan) ? $article->floor_plan : 1;

        $FLOOR_PLAN_TYPE_OPTIONS = [
            1 => '03', 2 => '05', 4 => '02', 5 => '06',
            6 => '07', 7 => '04', 8 => '08', 9 => '09',
        ];

        $floorPlanType = Arr::get($FLOOR_PLAN_TYPE_OPTIONS, $article->floor_plan_type ?? '', '01');
        $data['madoriCode'] = $floorPlanType;

        // 専有面積
        $data['mensekiKeisokuHoshiki'] = "";
        if($article->total_area != 0) {
            if($article->total_area == 1){
                $data['mensekiKeisokuHoshiki'] = 2;
            }else{
                $data['mensekiKeisokuHoshiki'] = 1;
            }
        }

        $data['senyuMenseki'] = $article->total_area_val;



        // バルコニー
        $data['balconyUmuFlag'] = $article->balcony_area;
        $data['balconyMenseki'] = $article->balcony_area_val;

        //主要採光面
        if($article->balcony_area == 1){
            switch ($article->balcony_direction){
                case 1:
                    $data['shuyoSaikomenHokoCode'] = "01";
                    break;
                case 2:
                    $data['shuyoSaikomenHokoCode'] = "02";
                    break;
                case 3:
                    $data['shuyoSaikomenHokoCode'] = "03";
                    break;
                case 4:
                    $data['shuyoSaikomenHokoCode'] = "04";
                    break;
                case 5:
                    $data['shuyoSaikomenHokoCode'] = "05";
                    break;
                case 6:
                    $data['shuyoSaikomenHokoCode'] = "06";
                    break;
                case 7:
                    $data['shuyoSaikomenHokoCode'] = "07";
                    break;
                case 8:
                    $data['shuyoSaikomenHokoCode'] = "08";
                    break;
                default:
                    $data['shuyoSaikomenHokoCode'] = "";
                    break;
            }
        }
        //設備・機能
        $data['setsubiTokkiKubunJikoCode'] = [];

        // 現況
        $CURRENT_STATUS_OPTIONS = [
            10 => '02', 11 => '05', 12 => '07', 13 => '08'
        ];

        $currentStatus = Arr::get($CURRENT_STATUS_OPTIONS, $article->current_status ?? '');
        $data['genkyoCode'] = $currentStatus;
        if($currentStatus == '09' || $currentStatus == '11'){
            $data['kenchikuKakuninNumber'] = $article->architecture_no;
        }
        // 引渡し
        $MOVE_IN_OPTION = [
            1 => '01', 2 => '02', 3 => '04'
        ];

        $moveIn = Arr::get($MOVE_IN_OPTION, $article->move_in ?? '');
        $data['hikiwatashiCode'] = $moveIn;

        $data['hikiwatashiYyyy'] = '';
        $data['hikiwatashiMm'] = '';
        $data['hikiwatashiDd'] = '';
        $data['hikiwatashiJikiKubun'] = '';
        if($article->move_in == 3) {
            $data['hikiwatashiYyyy'] = $article->move_in_year;
            $data['hikiwatashiMm'] = $article->move_in_month;
//            $data['hikiwatashiDd'] = 30;
        }

        // 取引態様
        $COMPANY_MANNER_OPTIONS = [
            1 => '01', 2 => '01', 3 => '05', 4 => '04',
            5 => '06', 6 => '03', 7 => '08', 9 => '08'
        ];

        $companyManner = Arr::get($COMPANY_MANNER_OPTIONS, $article->company_manner ?? '');
        $data['torihikitaiyoCode'] = $companyManner;
        $data['sakimonoKubun'] = '';
        $data['sakimonoYyyy'] = '';
        $data['sakimonoMm'] = '';
        $data['sakimonoDd'] = '';
        $data['sakimonoMotozukeShogo'] = '';
        $data['sakimonoMotozukeTantosha'] = '';
        $data['sakimonoMotozukeTel'] = '';
        $data['kyakuzukeHoshuNashiFlag'] = 'true';
        if($article->company_manner == 9){
            $data['sakimonoKubun'] = 'true';

            $vendor = RelationVendorArticle::getVendorDataByRainsNo($article->building_id)->first();

            $data['sakimonoMotozukeShogo'] = $vendor->name;
            $data['sakimonoMotozukeTantosha'] = $vendor->charge;
            $data['sakimonoMotozukeTel'] = $vendor->vendor_tel1;
            $data['sakimonoYyyy'] = '';
            $data['sakimonoMm'] = '';
            $data['sakimonoDd'] = '';
            if($article->conf_day!=''){
                $ad_day = explode('-', $article->conf_day);
                $data['sakimonoYyyy'] = $ad_day[0];
                $data['sakimonoMm'] = $ad_day[1];
                $data['sakimonoDd'] = $ad_day[2];
            }

            $data['kyakuzukeHoshuNashiFlag'] = '';
        }

        // 備考

        $data['athomeBiko'] = '';
        // おすすめコメント
        $comment = mb_substr($article->athome_comment, 0, 100);
        $comment = trim(preg_replace('/\s+/', ' ', $comment));
        $data['staffComment'] = $comment;

        // エンド向けアピール
        $data['baibaiSenyoCatchcopy'] = mb_substr($article->athome_appeal, 0, 500);

        // 総戸数
        $data['soKosu'] = $mansion->total_unit;

        // オープンルーム/モデルルーム
        // 画像１
        // 種別
        // キャプション
        // 画像２～
        // 種別
        // キャプション
        // 周辺環境１
        $data['openHouseUmuFlag'] = '';
        $data['openHouseKikanFromYyyy'] = '';
        $data['openHouseKikanFromMm'] = '';
        $data['openHouseKikanFromDd'] = '';
        $data['openHouseKikanToYyyy'] = '';
        $data['openHouseKikanToMm'] = '';
        $data['openHouseKikanToDd'] = '';
        if($article->event_category == 1 || $article->event_category == 2 || $article->event_category == 3 || $article->event_category == 4 || $article->event_category == 5 || $article->event_schedule == 3 || $article->event_schedule == 4) {
            $data['openHouseUmuFlag'] = 1;
        }
        if($article->event_schedule == 3){
            $eventDays = explode(',', $article->event_day);
            $eventDays[0] = str_replace('/', '-', $eventDays[0]);
            $eventDay = explode('-', $eventDays[0]);
            $data['openHouseKikanFromYyyy'] = $eventDay[0];
            $data['openHouseKikanFromMm'] = $eventDay[1];
            $data['openHouseKikanFromDd'] = $eventDay[2];
        }
        if($article->event_schedule == 4){
            if($article->from_event != null){
                $article->from_event = str_replace('/', '-', $article->from_event);
                $eventDay = explode('-', $article->from_event);
                $data['openHouseKikanFromYyyy'] = $eventDay[0];
                $data['openHouseKikanFromMm'] = $eventDay[1];
                $data['openHouseKikanFromDd'] = $eventDay[2];
            }
            if($article->to_event != null){
                $article->to_event = str_replace('/', '-', $article->to_event);
                $eventDayTo = explode('-', $article->to_event);
                $data['openHouseKikanToYyyy'] = $eventDayTo[0];
                $data['openHouseKikanToMm'] = $eventDayTo[1];
                $data['openHouseKikanToDd'] = $eventDayTo[2];
            }

        }
        $data['openHouseTimeFromHh'] = '';
        $data['openHouseTimeFromMm'] = '';
        $data['openHouseTimeToHh'] = '';
        $data['openHouseTimeToMm'] = '';
        if($article->from_hour != null && $article->to_hour != null){
            $data['openHouseTimeFromHh'] = $article->from_hour;
            $data['openHouseTimeFromMm'] = $article->from_minute;
            $data['openHouseTimeToHh'] = $article->to_hour;
            $data['openHouseTimeToMm'] = $article->to_minute;
        }
        $cmt = '';
        if($article->reservation == 1){
            $cmt .= '予約制';
        }
        if($article->event_comment!= ''){
            $cmt .= ','.$article->event_comment;
        }
        $data['openHouseNaiyo'] = Str::limit($cmt, 30, '');
        //管理番号
        $data['jishaKanriNumber'] = $article->building_id;

        // 客付手数料
        $data['ekiJidoshaFun'] = "";
        $data['sonotaKotsuShudan'] = "";
        //$data['kyakuzukeHoshuNashiFlag'] = "";

        return $data;
    }

    //管理人・管理形態変換
    private static function setManagementForm($managementForm = null)
    {
        switch ($managementForm) {
            case 1:
                $manager = self::KANRININ_JOUCHU;
                $form = self::KANRIKEITAI_ZENBU_ITAKU;
                break;
            case 2:
            case 6:
                $manager = self::KANRININ_NIKKIN;
                $form = self::KANRIKEITAI_ZENBU_ITAKU;
                break;
            case 3:
                $manager = self::KANRININ_JUNKAI;
                $form = self::KANRIKEITAI_ZENBU_ITAKU;
                break;
            case 4:
                $manager = self::KANRININ_NONE;
                $form = self::KANRIKEITAI_ZENBU_ITAKU;
                break;
            case 7:
            case 11:
                $manager = self::KANRININ_NIKKIN;
                $form = self::KANRIKEITAI_ICHIBU_ITAKU;
                break;
            case 8:
                $manager = self::KANRININ_JOUCHU;
                $form = self::KANRIKEITAI_ICHIBU_ITAKU;
                break;
            case 9:
                $manager = self::KANRININ_JUNKAI;
                $form = self::KANRIKEITAI_ICHIBU_ITAKU;
                break;
            case 10:
                $manager = self::KANRININ_NONE;
                $form = self::KANRIKEITAI_ICHIBU_ITAKU;
                break;
            case 12:
                $manager = self::KANRININ_JOUCHU;
                $form = self::KANRIKEITAI_JISHU;
                break;
            case 13:
                $manager = self::KANRININ_NIKKIN;
                $form = self::KANRIKEITAI_JISHU;
                break;
            case 14:
                $manager = self::KANRININ_JUNKAI;
                $form = self::KANRIKEITAI_JISHU;
                break;
            case 5:
            case 15:
            case 16:
                $manager = self::KANRININ_NONE;
                $form = self::KANRIKEITAI_JISHU;
                break;
            default:
                $manager = self::KANRININ_JOUCHU;
                $form = '';
        }
        return [
            'manager' => $manager,
            'managementForm' => $form,
        ];
    }
}
