/** * @return bool */ public function requiresDelayedAutoBill() { return $this->payment_type_id == PAYMENT_TYPE_ACH; } /** * @return mixed */ public function gatewayType() { if ($this->payment_type_id == PAYMENT_TYPE_ACH) { return GATEWAY_TYPE_BANK_TRANSFER; } elseif ($this->payment_type_id == PAYMENT_TYPE_PAYPAL) { return GATEWAY_TYPE_PAYPAL; } else { return GATEWAY_TYPE_TOKEN; } } } PaymentMethod::deleting(function ($paymentMethod) { $accountGatewayToken = $paymentMethod->account_gateway_token; if ($accountGatewayToken->default_payment_method_id == $paymentMethod->id) { $newDefault = $accountGatewayToken->payment_methods->first(function ($i, $paymentMethdod) use($accountGatewayToken) { return $paymentMethdod->id != $accountGatewayToken->default_payment_method_id; }); $accountGatewayToken->default_payment_method_id = $newDefault ? $newDefault->id : null; $accountGatewayToken->save(); } });