public function rules()
{
$rules = [];
if ($this->isGatewayType(GATEWAY_TYPE_CREDIT_CARD)) {
$rules = array_merge($rules, ['first_name' => 'required', 'last_name' => 'required']);
// TODO check this is always true
if (!$this->tokenize()) {
$rules = array_merge($rules, ['card_number' => 'required', 'expiration_month' => 'required', 'expiration_year' => 'required', 'cvv' => 'required']);
}
if ($this->accountGateway->show_address) {
$rules = array_merge($rules, ['address1' => 'required', 'city' => 'required', 'state' => 'required', 'postal_code' => 'required', 'country_id' => 'required']);
}
}
return $rules;
}