diff --git a/app/Http/Requests/Expense/StoreExpenseRequest.php b/app/Http/Requests/Expense/StoreExpenseRequest.php index 90b0734a41c6..b08ee31f5de8 100644 --- a/app/Http/Requests/Expense/StoreExpenseRequest.php +++ b/app/Http/Requests/Expense/StoreExpenseRequest.php @@ -14,6 +14,7 @@ namespace App\Http\Requests\Expense; use App\Http\Requests\Request; use App\Http\ValidationRules\Expense\UniqueExpenseNumberRule; use App\Models\Expense; +use App\Models\Project; use App\Models\PurchaseOrder; use App\Utils\Traits\MakesHash; use Illuminate\Validation\Rule; @@ -65,13 +66,29 @@ class StoreExpenseRequest extends Request $input['color'] = ''; } + + /* Ensure the project is related */ + if (array_key_exists('project_id', $input) && isset($input['project_id'])) { + $project = Project::withTrashed()->find($input['project_id'])->company()->first(); + + if($project){ + $input['client_id'] = $project->client_id; + } + else + { + unset($input['project_id']); + } + + } + + $this->replace($input); } public function messages() { return [ - 'unique' => ctrans('validation.unique', ['attribute' => 'email']), + // 'unique' => ctrans('validation.unique', ['attribute' => 'number']), ]; } } diff --git a/app/Http/Requests/Expense/UpdateExpenseRequest.php b/app/Http/Requests/Expense/UpdateExpenseRequest.php index e1e0ad094470..aabe07f6593c 100644 --- a/app/Http/Requests/Expense/UpdateExpenseRequest.php +++ b/app/Http/Requests/Expense/UpdateExpenseRequest.php @@ -12,6 +12,7 @@ namespace App\Http\Requests\Expense; use App\Http\Requests\Request; +use App\Models\Project; use App\Utils\Traits\ChecksEntityStatus; use App\Utils\Traits\MakesHash; use Illuminate\Validation\Rule; @@ -35,10 +36,7 @@ class UpdateExpenseRequest extends Request { /* Ensure we have a client name, and that all emails are unique*/ $rules = []; - // $rules['country_id'] = 'integer|nullable'; - - // $rules['contacts.*.email'] = 'nullable|distinct'; - + if (isset($this->number)) { $rules['number'] = Rule::unique('expenses')->where('company_id', auth()->user()->company()->id)->ignore($this->expense->id); } @@ -46,16 +44,6 @@ class UpdateExpenseRequest extends Request return $this->globalRules($rules); } - public function messages() - { - return [ - 'unique' => ctrans('validation.unique', ['attribute' => 'email']), - 'email' => ctrans('validation.email', ['attribute' => 'email']), - 'name.required' => ctrans('validation.required', ['attribute' => 'name']), - 'required' => ctrans('validation.required', ['attribute' => 'email']), - ]; - } - public function prepareForValidation() { $input = $this->all(); @@ -74,6 +62,20 @@ class UpdateExpenseRequest extends Request $input['currency_id'] = (string) auth()->user()->company()->settings->currency_id; } + /* Ensure the project is related */ + if (array_key_exists('project_id', $input) && isset($input['project_id'])) { + $project = Project::withTrashed()->find($input['project_id'])->company()->first(); + + if($project){ + $input['client_id'] = $project->client_id; + } + else + { + unset($input['project_id']); + } + + } + $this->replace($input); } } diff --git a/app/Notifications/Ninja/UserQualityNotification.php b/app/Notifications/Ninja/UserQualityNotification.php new file mode 100644 index 000000000000..a90ce15e9b49 --- /dev/null +++ b/app/Notifications/Ninja/UserQualityNotification.php @@ -0,0 +1,89 @@ +user = $user; + $this->account_key = $account_key; + } + + /** + * Get the notification's delivery channels. + * + * @param mixed $notifiable + * @return array + */ + public function via($notifiable) + { + return ['slack']; + } + + /** + * Get the mail representation of the notification. + * + * @param mixed $notifiable + * @return MailMessage + */ + public function toMail($notifiable) + { + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + // + ]; + } + + public function toSlack($notifiable) + { + + $content = "User Quality notification {$this->user->present()->name()} \n"; + $content .= "Account: {$this->account_key }\n"; + + return (new SlackMessage) + ->success() + ->from(ctrans('texts.notification_bot')) + ->image('https://app.invoiceninja.com/favicon.png') + ->content($content); + } +} diff --git a/app/Observers/UserObserver.php b/app/Observers/UserObserver.php index 115cd66f0a67..c6bdf94d4276 100644 --- a/app/Observers/UserObserver.php +++ b/app/Observers/UserObserver.php @@ -23,7 +23,8 @@ class UserObserver */ public function created(User $user) { - // + if(class_exists(\Modules\Admin\Jobs\Account\UserQuality::class)) + (new \Modules\Admin\Jobs\Account\UserQuality($user, $user->account->key))->run(); } /** @@ -34,6 +35,9 @@ class UserObserver */ public function updated(User $user) { + + if(class_exists(\Modules\Admin\Jobs\Account\UserQuality::class)) + (new \Modules\Admin\Jobs\Account\UserQuality($user, $user->account->key))->run(); } /**