"service_code", "Plan" => "corporate_plan_id", "Customer Plan" => "code", "Plan Type" => "type", "Start Date of Plan" => "start", "End Date of Plan" => "end", "Referral" => "require_referral", "Referral Source" => "referral_source", "Referral Duration" => "referral_duration", "Family Plan" => "family_plan", "Family Sharing Overflow" => "family_plan_share_rules", "Plan Limit" => "limit_rules", "Layer ID" => "layer", "Layer Condition" => "layer_conditions", "Budget Type" => "budget_type", "Budget Code" => "budget_code", "Budget Condition" => "budget_conditions", "Surgery" => "surgery_limit", "Non Surgery" => "non_surgery_limit", "Max/Claim" => "max_claim_limit", "Max Count of Claim" => "max_claim_count", "Area" => "area_limit", "Shared Plan" => "limit_shared_plans", "Shared Plan Type" => "limit_shared_plan_type", "Cashless(%)" => "cashless_percentage", "Reimbursement(%)" => "reimbursement_percentage", "Digital(%)" => "digital_percentage", "CoShareM(%)" => "co_share_m_percentage", "CoShareS(%)" => "co_share_s_percentage", "CoShareC(%)" => "co_share_c_percentage", "Cashless Deductible" => "cashless_deductible", "Reimbursement Deductible" => "reimbursement_deductible", "Digital Deductible" => "digital_deductible", "DeductibleM" => "co_share_m_deductible", "DeductibleS" => "co_share_s_deductible", "DeductibleC" => "co_share_c_deductible", "Co-share & Deductible Condition" => "co_share_deductible_condition", "MSC" => "msc", "Gender" => "genders", "Min Age" => "min_age", "Max Age" => "max_age", "Rule of Excess" => "rule_of_excess", "Max Excess Covered" => "max_excess_covered", "Prorate Type" => "prorate_type", "Prorate Lookup" => "prorate_lookup", "Currency" => "currency", "Reinstatement days for Surgery NonSurgery" => "max_surgery_reinstatement_days", "Max Periode of Surgery Non Surgery" => "max_surgery_periode_days", ]; public function setAreaLimitAttribute($value) { $this->attributes['area_limit'] = empty($value) ? null : $value; } public function setStartAttribute($value) { $this->attributes['start'] = empty($value) ? null : $value; } public function setEndAttribute($value) { $this->attributes['end'] = empty($value) ? null : $value; } public function setMaxClaimCountAttribute($value) { $this->attributes['max_claim_count'] = empty($value) ? null : $value; } public function setMaxSurgeryReinstatementDaysAttribute($value) { $this->attributes['max_surgery_reinstatement_days'] = empty($value) ? null : $value; } public function setMaxSurgeryPeriodeDaysAttribute($value) { $this->attributes['max_surgery_periode_days'] = empty($value) ? null : $value; } public function scopeFilter($query, array $filters) { $query->when($filters['search'] ?? false, function ($query, $search) { return $query ->where('service_code', 'like', "%" . $search . "%") ->orWhere('code', 'like', "%" . $search . "%") ->orWhereHas('corporatePlan', function ($query) use ($search) { $query->where('code', 'like', "%" . $search . "%"); }); }); } public function corporatePlan() { return $this->belongsTo(CorporatePlan::class); } // public function Corporate() // { // return $this->belongsTo(Corporate::class); // } public function benefits() { return $this->belongsToMany(Benefit::class, 'corporate_benefits', 'plan_id', 'benefit_id') ->withTimestamps() ->withPivot([ 'corporate_id', 'plan_id', 'benefit_id', 'corporate_benefit_code', 'budget', 'budget_conditions', 'budget_code', 'primary_benefit_code', 'benefit_mode', 'room_class_coverage', 'max_bed_coverage', 'tolerance_parameter', 'max_room_class', 'limit_amount', 'area_limit', 'shared_benefit', 'shared_benefit_type', 'msc', 'genders', 'min_age', 'max_age', 'max_frequency_period', 'daily_frequency', 'weekly_frequency', 'monthly_frequency', 'yearly_frequency', 'custom_frequency_days', 'custom_duration_value', 'allowed_transaction_types', 'high_plan_factor', 'pre_post_treatment', 'pre_treatment_days', 'post_treatment_days', 'layer_type_1', 'layer_value_1', 'layer_type_2', 'layer_value_2', 'cashless_percentage', 'reimbursement_percentage', 'digital_percentage', 'co_share_m_percentage', 'co_share_s_percentage', 'co_share_c_percentage', 'cashless_deductible', 'reimbursement_deductible', 'digital_deductible', 'co_share_m_deductible', 'co_share_s_deductible', 'co_share_c_deductible', 'prorate_type', 'prorate_lookup', 'max_days_for_disability', 'max_period_for_disability', 'currency', 'show_benefit_item', 'show_benefit_value', 'active' ]); } public function corporateBenefits() { return $this->hasMany(CorporateBenefit::class, 'plan_id', 'id'); } public function service() { return $this->belongsTo(Service::class, 'service_code', 'code'); } }