Prevent duplicate payment terms

This commit is contained in:
Hillel Coren 2018-03-15 22:57:46 +02:00
parent 2c41361cae
commit 552b72a4bc
4 changed files with 36 additions and 8 deletions

View File

@ -2,7 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Http\Requests\CreatePaymentTermAPIRequest; use App\Http\Requests\CreatePaymentTermRequest;
use App\Http\Requests\PaymentTermRequest; use App\Http\Requests\PaymentTermRequest;
use App\Http\Requests\UpdatePaymentTermRequest; use App\Http\Requests\UpdatePaymentTermRequest;
use App\Libraries\Utils; use App\Libraries\Utils;
@ -110,7 +110,7 @@ class PaymentTermApiController extends BaseAPIController
* ) * )
* ) * )
*/ */
public function store(CreatePaymentTermAPIRequest $request) public function store(CreatePaymentTermRequest $request)
{ {
$paymentTerm = PaymentTerm::createNew(); $paymentTerm = PaymentTerm::createNew();

View File

@ -2,6 +2,8 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Http\Requests\CreatePaymentTermRequest;
use App\Http\Requests\UpdatePaymentTermRequest;
use App\Models\PaymentTerm; use App\Models\PaymentTerm;
use App\Services\PaymentTermService; use App\Services\PaymentTermService;
use Auth; use Auth;
@ -84,7 +86,7 @@ class PaymentTermController extends BaseController
/** /**
* @return \Illuminate\Http\RedirectResponse * @return \Illuminate\Http\RedirectResponse
*/ */
public function store() public function store(CreatePaymentTermRequest $request)
{ {
return $this->save(); return $this->save();
} }
@ -94,7 +96,7 @@ class PaymentTermController extends BaseController
* *
* @return \Illuminate\Http\RedirectResponse * @return \Illuminate\Http\RedirectResponse
*/ */
public function update($publicId) public function update(UpdatePaymentTermRequest $request, $publicId)
{ {
return $this->save($publicId); return $this->save($publicId);
} }

View File

@ -4,7 +4,7 @@ namespace App\Http\Requests;
use App\Models\Invoice; use App\Models\Invoice;
class CreatePaymentTermAPIRequest extends Request class CreatePaymentTermRequest extends PaymentTermRequest
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
@ -27,7 +27,8 @@ class CreatePaymentTermAPIRequest extends Request
{ {
$rules = [ $rules = [
'num_days' => 'required|numeric|unique:payment_terms', 'num_days' => 'required|numeric|unique:payment_terms,num_days,,id,account_id,' . $this->user()->account_id . ',deleted_at,NULL'
. '|unique:payment_terms,num_days,,id,account_id,0,deleted_at,NULL',
]; ];

View File

@ -2,16 +2,41 @@
namespace App\Http\Requests; namespace App\Http\Requests;
class UpdatePaymentTermRequest extends EntityRequest use App\Models\Invoice;
class UpdatePaymentTermRequest extends PaymentTermRequest
{ {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return $this->entity() && $this->user()->can('edit', $this->entity());
}
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array * @return array
*/ */
public function rules() public function rules()
{ {
if (! $this->entity()) {
return []; return [];
} }
$paymentTermId = $this->entity()->id;
$rules = [
'num_days' => 'required|numeric|unique:payment_terms,num_days,' . $paymentTermId . ',id,account_id,' . $this->user()->account_id . ',deleted_at,NULL'
. '|unique:payment_terms,num_days,' . $paymentTermId . ',id,account_id,0,deleted_at,NULL',
];
return $rules;
}
} }