diff --git a/app/Http/Controllers/Auth/Users.php b/app/Http/Controllers/Auth/Users.php
index 2207fdde0..b4c759aa9 100644
--- a/app/Http/Controllers/Auth/Users.php
+++ b/app/Http/Controllers/Auth/Users.php
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\User as Request;
+use Illuminate\Http\Request as ARequest;
use App\Models\Auth\User;
use App\Models\Auth\Role;
@@ -226,4 +227,31 @@ class Users extends Controller
// Redirect to items
return redirect('items/items');
}
+
+ public function autocomplete(ARequest $request)
+ {
+ $user = false;
+
+ $column = $request['column'];
+ $value = $request['value'];
+
+ if (!empty($column) && !empty($value)) {
+ switch ($column) {
+ case 'id':
+ $user = User::find();
+ break;
+ case 'email':
+ $user = User::where('email', $value)->first();
+ break;
+ default:
+ $user = User::where($column, $value)->first();
+ }
+ }
+
+ return response()->json([
+ 'errors' => ($user) ? false: true,
+ 'success' => ($user) ? true: false,
+ 'data' => $user
+ ]);
+ }
}
diff --git a/app/Http/Controllers/Incomes/Customers.php b/app/Http/Controllers/Incomes/Customers.php
index 228533a94..66ab45154 100644
--- a/app/Http/Controllers/Incomes/Customers.php
+++ b/app/Http/Controllers/Incomes/Customers.php
@@ -44,10 +44,24 @@ class Customers extends Controller
*/
public function store(Request $request)
{
- $customer = Customer::create($request->all());
+ if (empty($request->input('create_user'))) {
+ Customer::create($request->all());
+ } else {
+ $user = User::where('email', $request['email'])->first();
- if (!empty($request->input('create_user'))) {
- $user = User::create($request->input());
+ if (!empty($user)) {
+ $message = trans('messages.error.customer', ['name' => $user->name]);
+
+ flash($message)->error();
+
+ return redirect()->back()->withInput($request->except('create_user'))->withErrors(
+ ['email' => trans('customer.error.email')]
+ );
+
+ //$user = User::create($request->input());
+ }
+
+ $customer = Customer::create($request->all());
$request['user_id'] = $user->id;
$request['roles'] = array('3');
@@ -93,10 +107,22 @@ class Customers extends Controller
*/
public function update(Customer $customer, Request $request)
{
- $customer->update($request->all());
+ if (empty($request->input('create_user'))) {
+ $customer->update($request->all());
+ } else {
+ $user = User::where('email', $request['email'])->first();
- if (!empty($request->input('create_user'))) {
- $user = User::create($request->input());
+ if (!empty($user)) {
+ $message = trans('messages.error.customer', ['name' => $user->name]);
+
+ flash($message)->error();
+
+ return redirect()->back()->withInput($request->except('create_user'))->withErrors(
+ ['email' => trans('customer.error.email')]
+ );
+
+ //$user = User::create($request->input());
+ }
$request['user_id'] = $user->id;
$request['roles'] = array('3');
diff --git a/app/Http/Controllers/Settings/Modules.php b/app/Http/Controllers/Settings/Modules.php
index 5c9808ac9..709aa56ff 100644
--- a/app/Http/Controllers/Settings/Modules.php
+++ b/app/Http/Controllers/Settings/Modules.php
@@ -58,5 +58,4 @@ class Modules extends Controller
return redirect('settings/apps/' . $alias);
}
-
}
diff --git a/app/Http/Requests/Income/Customer.php b/app/Http/Requests/Income/Customer.php
index 015277b15..861524f9c 100644
--- a/app/Http/Requests/Income/Customer.php
+++ b/app/Http/Requests/Income/Customer.php
@@ -32,7 +32,7 @@ class Customer extends Request
$id = null;
}
- if (!empty($this->request->get('create_user'))) {
+ if (!empty($this->request->get('create_user')) && empty($this->request->get('user_id'))) {
$required = 'required|';
}
diff --git a/resources/lang/en-GB/customer.php b/resources/lang/en-GB/customer.php
index ac2c6b8b0..e0a68b0c5 100644
--- a/resources/lang/en-GB/customer.php
+++ b/resources/lang/en-GB/customer.php
@@ -2,4 +2,8 @@
return [
'all' => 'All Customers',
+
+ 'error' => [
+ 'email' => 'The email has already been taken.'
+ ]
];
diff --git a/resources/lang/en-GB/messages.php b/resources/lang/en-GB/messages.php
index a70ccd9d8..39ba2e00b 100644
--- a/resources/lang/en-GB/messages.php
+++ b/resources/lang/en-GB/messages.php
@@ -9,6 +9,7 @@ return [
],
'error' => [
'not_user_company' => 'Error: You are not allowed to manage this company!',
+ 'customer' => 'Error: You can not created customer! :name use this email address.',
],
'warning' => [
'deleted' => 'Warning: You are not allowed to delete :name because it has :text related.',
diff --git a/resources/views/incomes/customers/create.blade.php b/resources/views/incomes/customers/create.blade.php
index 2feaa4c32..3bc9c5aa8 100644
--- a/resources/views/incomes/customers/create.blade.php
+++ b/resources/views/incomes/customers/create.blade.php
@@ -77,10 +77,32 @@
});
$('#create_user').on('ifClicked', function (event) {
+ $('input[name="user_id"]').remove();
+
if ($(this).prop('checked')) {
$('.col-md-6.password').addClass('hidden');
} else {
- $('.col-md-6.password').removeClass('hidden');
+ $.ajax({
+ url: '{{ url("auth/users/autocomplete") }}',
+ type: 'GET',
+ dataType: 'JSON',
+ data: {column: 'email', value: $('input[name="email"]').val()},
+ beforeSend: function() {
+ $('.box-footer .btn').attr('disabled', true);
+ },
+ complete: function() {
+ $('.box-footer .btn').attr('disabled', false);
+ },
+ success: function(json) {
+ if (json['errors']) {
+ $('.col-md-6.password').removeClass('hidden');
+ }
+
+ if (json['success']) {
+ $('input[name="password_confirmation"]').after('');
+ }
+ }
+ });
}
});
});
diff --git a/resources/views/incomes/customers/edit.blade.php b/resources/views/incomes/customers/edit.blade.php
index 0d99a7e0f..7f9ac8934 100644
--- a/resources/views/incomes/customers/edit.blade.php
+++ b/resources/views/incomes/customers/edit.blade.php
@@ -82,10 +82,32 @@
});
$('#create_user').on('ifClicked', function (event) {
+ $('input[name="user_id"]').remove();
+
if ($(this).prop('checked')) {
$('.col-md-6.password').addClass('hidden');
} else {
- $('.col-md-6.password').removeClass('hidden');
+ $.ajax({
+ url: '{{ url("auth/users/autocomplete") }}',
+ type: 'GET',
+ dataType: 'JSON',
+ data: {column: 'email', value: $('input[name="email"]').val()},
+ beforeSend: function() {
+ $('.box-footer .btn').attr('disabled', true);
+ },
+ complete: function() {
+ $('.box-footer .btn').attr('disabled', false);
+ },
+ success: function(json) {
+ if (json['errors']) {
+ $('.col-md-6.password').removeClass('hidden');
+ }
+
+ if (json['success']) {
+ $('input[name="password_confirmation"]').after('');
+ }
+ }
+ });
}
});
});
diff --git a/routes/web.php b/routes/web.php
index 937301dba..67a0fed8a 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -29,6 +29,7 @@ Route::group(['middleware' => 'language'], function () {
Route::group(['prefix' => 'auth'], function () {
Route::get('logout', 'Auth\Login@destroy')->name('logout');
+ Route::get('users/autocomplete', 'Auth\Users@autocomplete');
Route::get('users/{user}/read-bills', 'Auth\Users@readUpcomingBills');
Route::get('users/{user}/read-invoices', 'Auth\Users@readOverdueInvoices');
Route::get('users/{user}/read-items', 'Auth\Users@readItemsOutOfStock');