diff --git a/app/Models/Contact.php b/app/Models/Contact.php index 9c86c4ce5b84..e0e967dcde77 100644 --- a/app/Models/Contact.php +++ b/app/Models/Contact.php @@ -60,6 +60,15 @@ class Contact extends EntityModel implements AuthenticatableContract, CanResetPa } } + public function getContactKeyAttribute($contact_key) + { + if (empty($contact_key) && $this->id) { + $this->contact_key = $contact_key = str_random(RANDOM_KEY_LENGTH); + static::where('id', $this->id)->update(array('contact_key' => $contact_key)); + } + return $contact_key; + } + public function getFullName() { if ($this->first_name || $this->last_name) { diff --git a/app/Models/Payment.php b/app/Models/Payment.php index 59f1e1e9823e..677c5c0ea0c1 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -180,10 +180,30 @@ class Payment extends EntityModel return PaymentMethod::lookupBankData($this->routing_number); } + public function getBankNameAttribute($bank_name) + { + if ($bank_name) { + return $bank_name; + } + $bankData = $this->bank_data; + + return $bankData?$bankData->name:null; + } + public function getLast4Attribute($value) { return $value ? str_pad($value, 4, '0', STR_PAD_LEFT) : null; } + + public function getIpAddressAttribute($value) + { + return !$value?$value:inet_ntop($value); + } + + public function setIpAddressAttribute($value) + { + $this->attributes['ip_address'] = inet_pton($value); + } } Payment::creating(function ($payment) { diff --git a/app/Models/PaymentMethod.php b/app/Models/PaymentMethod.php index a2f17b722ae6..7110403ab828 100644 --- a/app/Models/PaymentMethod.php +++ b/app/Models/PaymentMethod.php @@ -71,6 +71,16 @@ class PaymentMethod extends EntityModel return static::lookupBankData($this->routing_number); } + public function getBankNameAttribute($bank_name) + { + if ($bank_name) { + return $bank_name; + } + $bankData = $this->bank_data; + + return $bankData?$bankData->name:null; + } + public function getLast4Attribute($value) { return $value ? str_pad($value, 4, '0', STR_PAD_LEFT) : null; @@ -148,6 +158,16 @@ class PaymentMethod extends EntityModel return null; } } + + public function getIpAddressAttribute($value) + { + return !$value?$value:inet_ntop($value); + } + + public function setIpAddressAttribute($value) + { + $this->attributes['ip_address'] = inet_pton($value); + } } PaymentMethod::deleting(function($paymentMethod) { diff --git a/app/Ninja/Repositories/ContactRepository.php b/app/Ninja/Repositories/ContactRepository.php index 49b73e91a664..50d15af2b21e 100644 --- a/app/Ninja/Repositories/ContactRepository.php +++ b/app/Ninja/Repositories/ContactRepository.php @@ -14,6 +14,7 @@ class ContactRepository extends BaseRepository $contact->send_invoice = true; $contact->client_id = $data['client_id']; $contact->is_primary = Contact::scope()->where('client_id', '=', $contact->client_id)->count() == 0; + $contact->contact_key = str_random(RANDOM_KEY_LENGTH); } else { $contact = Contact::scope($publicId)->firstOrFail(); } diff --git a/database/migrations/2016_05_24_164847_wepay_ach.php b/database/migrations/2016_05_24_164847_wepay_ach.php new file mode 100644 index 000000000000..b8e6ca752a0e --- /dev/null +++ b/database/migrations/2016_05_24_164847_wepay_ach.php @@ -0,0 +1,57 @@ +string('contact_key')->index()->default(null); + }); + + Schema::table('payment_methods', function($table) + { + $table->string('bank_name')->nullable(); + }); + + Schema::table('payments', function($table) + { + $table->string('bank_name')->nullable(); + }); + + Schema::table('accounts', function($table) + { + $table->boolean('auto_bill_on_due_date')->default(false); + }); + + DB::statement('ALTER TABLE `payments` ADD `ip_address` VARBINARY(16)'); + DB::statement('ALTER TABLE `payment_methods` ADD `ip_address` VARBINARY(16)'); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('contacts', function(Blueprint $table) { + $table->dropColumn('contact_key'); + }); + + Schema::table('payments', function($table) { + $table->dropColumn('ip_address'); + }); + + Schema::table('payment_methods', function($table) { + $table->dropColumn('ip_address'); + }); + } +}