<?php

namespace App\Support;

class MansionRoomSyncFields
{
    private const ALLOWED_FIELDS = [
        'zip', 'address1', 'address2', 'address3', 'address4', 'lat', 'lng',
        'main_traffic', 'main_traffic_line', 'main_traffic_line_id', 'main_traffic_station', 'main_traffic_station_id',
        'main_traffic_time', 'main_traffic_bus_time', 'main_traffic_bus', 'main_traffic_bus_walk', 'sub_traffic1',
        'sub_traffic1_line', 'sub_traffic1_line_id', 'sub_traffic1_station', 'sub_traffic1_station_id', 'sub_traffic1_time',
        'sub_traffic1_bus_time', 'sub_traffic1_bus', 'sub_traffic1_bus_walk', 'sub_traffic2', 'sub_traffic2_line',
        'sub_traffic2_line_id', 'sub_traffic2_station', 'sub_traffic2_station_id', 'sub_traffic2_time', 'sub_traffic2_bus_time',
        'sub_traffic2_bus', 'sub_traffic2_bus_walk', 'primary_school_city', 'primary_school_school', 'primary_school_distance',
        'primary_school2_city', 'primary_school2_school', 'primary_school2_distance', 'primary_school3_city', 'primary_school3_school',
        'primary_school3_distance', 'secondary_school_city', 'secondary_school_school', 'secondary_school_distance',
        'secondary_school2_city', 'secondary_school2_school', 'secondary_school2_distance', 'secondary_school3_city',
        'secondary_school3_school', 'secondary_school3_distance', 'total_unit', 'age_year', 'age_month', 'construction',
        'construction_sub', 'floor', 'underground', 'sales_company', 'construction_company', 'management_company',
        'management_form', 'pet', 'land_right', 'use_area', 'land_use', 'land_use2', 'city_plan', 'city_plan_reason',
        'else_traffic', 'else_traffic_line', 'else_traffic_station', 'else_traffic_time', 'else_traffic_bus_time',
        'else_traffic_bus', 'else_traffic_bus_walk', 'other_address', 'other_primary_school_1', 'other_primary_school_2',
        'other_primary_school_3', 'other_secondary_school_1', 'other_secondary_school_2', 'other_secondary_school_3',
        'name_apartment', 'pet_count', 'leasehold_kind', 'leasehold_period', 'leasehold_period_year',
        'leasehold_period_month', 'leasehold_period_year1', 'leasehold_period_month1', 'right_cost', 'right_cost_val',
        'deposit_cost', 'deposit_cost_val', 'security_deposit_cost', 'security_deposit_cost_val', 'other_leasehold',
        'land_area_val', 'kokudoho', 'gas', 'move_in_conditions',
    ];

    public static function fromPayload(array $payload): array
    {
        $fields = [];

        foreach (self::ALLOWED_FIELDS as $field) {
            if (array_key_exists($field, $payload)) {
                $fields[$field] = $payload[$field];
            }
        }

        if (array_key_exists('name', $payload)) {
            $fields['name_apartment'] = $payload['name'];
        }

        return $fields;
    }
}
