<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Prunable;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;

class ClassCharacteristic extends Model
{
    use Prunable;
    use SoftDeletes;

    protected $fillable = [
        'plant_id',
        'machine_id',
        'item_id',
        'aufnr',
        'class',
        'arbid',
        'gamng',
        'lmnga',
        'gernr',
        'zz1_cn_bill_ord',
        'zmm_amps',
        'zmm_brand',
        'zmm_degreeofprotection',
        'zmm_delivery',
        'zmm_dir_rot',
        'zmm_discharge',
        'zmm_discharge_max',
        'zmm_discharge_min',
        'zmm_duty',
        'zmm_eff_motor',
        'zmm_eff_pump',
        'zmm_frequency',
        'zmm_head',
        'zmm_heading',
        'zmm_head_max',
        'zmm_head_minimum',
        'zmm_idx_eff_mtr',
        'zmm_idx_eff_pump',
        'zmm_kvacode',
        'zmm_maxambtemp',
        'zmm_mincoolingflow',
        'zmm_motorseries',
        'zmm_motor_model',
        'zmm_outlet',
        'zmm_phase',
        'zmm_pressure',
        'zmm_pumpflowtype',
        'zmm_pumpseries',
        'zmm_pump_model',
        'zmm_ratedpower',
        'zmm_region',
        'zmm_servicefactor',
        'zmm_servicefactormaximumamps',
        'zmm_speed',
        'zmm_suction',
        'zmm_suctionxdelivery',
        'zmm_supplysource',
        'zmm_temperature',
        'zmm_thrustload',
        'zmm_volts',
        'zmm_wire',
        'zmm_package',
        'zmm_pvarrayrating',
        'zmm_isi',
        'zmm_isimotor',
        'zmm_isipump',
        'zmm_isipumpset',
        'zmm_pumpset_model',
        'zmm_stages',
        'zmm_headrange',
        'zmm_overall_efficiency',
        'zmm_connection',
        'zmm_min_bore_size',
        'zmm_isireference',
        'zmm_category',
        'zmm_submergence',
        'zmm_capacitorstart',
        'zmm_capacitorrun',
        'zmm_inch',
        'zmm_motor_type',
        'zmm_dismantle_direction',
        'zmm_eff_ovrall',
        'zmm_bodymoc',
        'zmm_rotormoc',
        'zmm_dlwl',
        'zmm_inputpower',
        'zmm_imp_od',
        'zmm_ambtemp',
        'zmm_de',
        'zmm_dischargerange',
        'zmm_efficiency_class',
        'zmm_framesize',
        'zmm_impellerdiameter',
        'zmm_insulationclass',
        'zmm_maxflow',
        'zmm_minhead',
        'zmm_mtrlofconst',
        'zmm_nde',
        'zmm_powerfactor',
        'zmm_tagno',
        'zmm_year',
        'zmm_laser_name',
        'zmm_logo_cp',
        'zmm_logo_ce',
        'zmm_logo_nsf',
        'zmm_logo_eac',
        'zmm_beenote',
        'zmm_beenumber',
        'zmm_beestar',
        'zmm_codeclass',
        'zmm_colour',
        'zmm_grade',
        'zmm_grwt_pset',
        'zmm_grwt_cable',
        'zmm_grwt_motor',
        'zmm_grwt_pf',
        'zmm_grwt_pump',
        'zmm_isivalve',
        'zmm_isi_wc',
        'zmm_labelperiod',
        'zmm_length',
        'zmm_license_cml_no',
        'zmm_mfgmonyr',
        'zmm_modelyear',
        'zmm_motoridentification',
        'zmm_newt_pset',
        'zmm_newt_cable',
        'zmm_newt_motor',
        'zmm_newt_pf',
        'zmm_newt_pump',
        'zmm_packtype',
        'zmm_panel',
        'zmm_performance_factor',
        'zmm_pumpidentification',
        'zmm_psettype',
        'zmm_size',
        'zmm_eff_ttl',
        'zmm_type',
        'zmm_usp',
        'zmm_operating_range',
        'zmm_intake_air',
        'zmm_oxygen_transfer_rate',
        'zmm_air_inlet_pipesize',
        'zmm_sump_depth',
        'zmm_poles',
        'zmm_motor_heading',
        'zmm_motor_speed',
        'zqmm_qty',
        'zmm_operating_temperature',
        'zmm_axial_force',
        'mark_status',
        'marked_datetime',
        'marked_physical_count',
        'marked_expected_time',
        'marked_by',
        'man_marked_status',
        'man_marked_datetime',
        'man_marked_by',
        'motor_marked_status',
        'motor_marked_physical_count',
        'motor_expected_time',
        'motor_marked_by',
        'pump_marked_status',
        'pump_marked_physical_count',
        'pump_expected_time',
        'pump_marked_by',
        'name_plate_marked_status',
        'name_plate_expected_time',
        'name_plate_marked_by',
        'motor_pump_pumpset_status',
        'winded_serial_number',
        'motor_machine_name',
        'pump_machine_name',
        'name_plate_machine_name',
        'part_validation_1',
        'part_validation_2',
        'samlight_logged_name',
        'pending_released_status',
        'has_work_flow_id',
        'created_at',
        'updated_at',
        'created_by',
        'updated_by',
    ];

    public function plant(): BelongsTo
    {
        return $this->belongsTo(Plant::class);
    }

    public function item(): BelongsTo
    {
        return $this->belongsTo(Item::class);
    }

    public function machine(): BelongsTo
    {
        return $this->belongsTo(Machine::class);
    }

    public function prunable(): Builder
    {
        return static::where('created_at', '<=', now()->subMonthsNoOverflow(6));
    }
}
