mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Pad out template actions
This commit is contained in:
parent
5a2d6c1c06
commit
1e845c46fe
@ -11,36 +11,37 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Events\Client\ClientWasCreated;
|
use App\Utils\Ninja;
|
||||||
use App\Events\Client\ClientWasUpdated;
|
|
||||||
use App\Factory\ClientFactory;
|
|
||||||
use App\Filters\ClientFilters;
|
|
||||||
use App\Http\Requests\Client\BulkClientRequest;
|
|
||||||
use App\Http\Requests\Client\CreateClientRequest;
|
|
||||||
use App\Http\Requests\Client\DestroyClientRequest;
|
|
||||||
use App\Http\Requests\Client\EditClientRequest;
|
|
||||||
use App\Http\Requests\Client\PurgeClientRequest;
|
|
||||||
use App\Http\Requests\Client\ReactivateClientEmailRequest;
|
|
||||||
use App\Http\Requests\Client\ShowClientRequest;
|
|
||||||
use App\Http\Requests\Client\StoreClientRequest;
|
|
||||||
use App\Http\Requests\Client\UpdateClientRequest;
|
|
||||||
use App\Http\Requests\Client\UploadClientRequest;
|
|
||||||
use App\Jobs\Client\UpdateTaxData;
|
|
||||||
use App\Jobs\PostMark\ProcessPostmarkWebhook;
|
|
||||||
use App\Models\Account;
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
|
use App\Models\Account;
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\SystemLog;
|
use App\Models\SystemLog;
|
||||||
use App\Repositories\ClientRepository;
|
|
||||||
use App\Transformers\ClientTransformer;
|
|
||||||
use App\Utils\Ninja;
|
|
||||||
use App\Utils\Traits\BulkOptions;
|
|
||||||
use App\Utils\Traits\MakesHash;
|
|
||||||
use App\Utils\Traits\SavesDocuments;
|
|
||||||
use App\Utils\Traits\Uploadable;
|
|
||||||
use Illuminate\Http\Response;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Postmark\PostmarkClient;
|
use Postmark\PostmarkClient;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use App\Factory\ClientFactory;
|
||||||
|
use App\Filters\ClientFilters;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Utils\Traits\Uploadable;
|
||||||
|
use App\Utils\Traits\BulkOptions;
|
||||||
|
use App\Jobs\Client\UpdateTaxData;
|
||||||
|
use App\Utils\Traits\SavesDocuments;
|
||||||
|
use App\Repositories\ClientRepository;
|
||||||
|
use App\Events\Client\ClientWasCreated;
|
||||||
|
use App\Events\Client\ClientWasUpdated;
|
||||||
|
use App\Transformers\ClientTransformer;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use App\Services\Template\TemplateAction;
|
||||||
|
use App\Jobs\PostMark\ProcessPostmarkWebhook;
|
||||||
|
use App\Http\Requests\Client\BulkClientRequest;
|
||||||
|
use App\Http\Requests\Client\EditClientRequest;
|
||||||
|
use App\Http\Requests\Client\ShowClientRequest;
|
||||||
|
use App\Http\Requests\Client\PurgeClientRequest;
|
||||||
|
use App\Http\Requests\Client\StoreClientRequest;
|
||||||
|
use App\Http\Requests\Client\CreateClientRequest;
|
||||||
|
use App\Http\Requests\Client\UpdateClientRequest;
|
||||||
|
use App\Http\Requests\Client\UploadClientRequest;
|
||||||
|
use App\Http\Requests\Client\DestroyClientRequest;
|
||||||
|
use App\Http\Requests\Client\ReactivateClientEmailRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ClientController.
|
* Class ClientController.
|
||||||
@ -217,12 +218,31 @@ class ClientController extends BaseController
|
|||||||
$clients = Client::withTrashed()
|
$clients = Client::withTrashed()
|
||||||
->company()
|
->company()
|
||||||
->whereIn('id', $request->ids)
|
->whereIn('id', $request->ids)
|
||||||
->cursor()
|
->get();
|
||||||
->each(function ($client) use ($action, $user) {
|
|
||||||
if ($user->can('edit', $client)) {
|
if($action == 'template' && $user->can('view', $clients->first())) {
|
||||||
$this->client_repo->{$action}($client);
|
|
||||||
}
|
$hash_or_response = $request->boolean('send_email') ? 'email sent' : \Illuminate\Support\Str::uuid();
|
||||||
});
|
|
||||||
|
TemplateAction::dispatch(
|
||||||
|
$clients->pluck('id')->toArray(),
|
||||||
|
$request->template_id,
|
||||||
|
Client::class,
|
||||||
|
$user->id,
|
||||||
|
$user->company(),
|
||||||
|
$user->company()->db,
|
||||||
|
$hash_or_response,
|
||||||
|
$request->boolean('send_email')
|
||||||
|
);
|
||||||
|
|
||||||
|
return response()->json(['message' => $hash_or_response], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
$clients->each(function ($client) use ($action, $user) {
|
||||||
|
if ($user->can('edit', $client)) {
|
||||||
|
$this->client_repo->{$action}($client);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return $this->listResponse(Client::query()->withTrashed()->company()->whereIn('id', $request->ids));
|
return $this->listResponse(Client::query()->withTrashed()->company()->whereIn('id', $request->ids));
|
||||||
}
|
}
|
||||||
|
@ -523,7 +523,7 @@ class PaymentController extends BaseController
|
|||||||
TemplateAction::dispatch(
|
TemplateAction::dispatch(
|
||||||
$payments->pluck('id')->toArray(),
|
$payments->pluck('id')->toArray(),
|
||||||
$request->template_id,
|
$request->template_id,
|
||||||
PurchaseOrder::class,
|
Payment::class,
|
||||||
$user->id,
|
$user->id,
|
||||||
$user->company(),
|
$user->company(),
|
||||||
$user->company()->db,
|
$user->company()->db,
|
||||||
|
@ -11,23 +11,25 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Models\Project;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
use App\Factory\ProjectFactory;
|
use App\Factory\ProjectFactory;
|
||||||
use App\Filters\ProjectFilters;
|
use App\Filters\ProjectFilters;
|
||||||
use App\Http\Requests\Project\CreateProjectRequest;
|
use App\Utils\Traits\MakesHash;
|
||||||
use App\Http\Requests\Project\DestroyProjectRequest;
|
use App\Utils\Traits\SavesDocuments;
|
||||||
|
use App\Utils\Traits\GeneratesCounter;
|
||||||
|
use App\Repositories\ProjectRepository;
|
||||||
|
use App\Transformers\ProjectTransformer;
|
||||||
|
use App\Services\Template\TemplateAction;
|
||||||
use App\Http\Requests\Project\EditProjectRequest;
|
use App\Http\Requests\Project\EditProjectRequest;
|
||||||
use App\Http\Requests\Project\ShowProjectRequest;
|
use App\Http\Requests\Project\ShowProjectRequest;
|
||||||
use App\Http\Requests\Project\StoreProjectRequest;
|
use App\Http\Requests\Project\StoreProjectRequest;
|
||||||
|
use App\Http\Requests\Project\CreateProjectRequest;
|
||||||
use App\Http\Requests\Project\UpdateProjectRequest;
|
use App\Http\Requests\Project\UpdateProjectRequest;
|
||||||
use App\Http\Requests\Project\UploadProjectRequest;
|
use App\Http\Requests\Project\UploadProjectRequest;
|
||||||
use App\Models\Account;
|
use App\Http\Requests\Project\DestroyProjectRequest;
|
||||||
use App\Models\Project;
|
use App\Http\Requests\PrTaskoject\BulkProjectRequest;
|
||||||
use App\Repositories\ProjectRepository;
|
|
||||||
use App\Transformers\ProjectTransformer;
|
|
||||||
use App\Utils\Traits\GeneratesCounter;
|
|
||||||
use App\Utils\Traits\MakesHash;
|
|
||||||
use App\Utils\Traits\SavesDocuments;
|
|
||||||
use Illuminate\Http\Response;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ProjectController.
|
* Class ProjectController.
|
||||||
@ -490,18 +492,36 @@ class ProjectController extends BaseController
|
|||||||
* ),
|
* ),
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
public function bulk()
|
public function bulk(BulkProjectRequest $request)
|
||||||
{
|
{
|
||||||
/** @var \App\Models\User $user */
|
/** @var \App\Models\User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
|
|
||||||
$action = request()->input('action');
|
$action = $request->input('action');
|
||||||
|
|
||||||
$ids = request()->input('ids');
|
$ids = $request->input('ids');
|
||||||
|
|
||||||
$projects = Project::withTrashed()->find($this->transformKeys($ids));
|
$projects = Project::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get();
|
||||||
|
|
||||||
$projects->each(function ($project, $key) use ($action, $user) {
|
if($action == 'template' && $user->can('view', $projects->first())) {
|
||||||
|
|
||||||
|
$hash_or_response = $request->boolean('send_email') ? 'email sent' : \Illuminate\Support\Str::uuid();
|
||||||
|
|
||||||
|
TemplateAction::dispatch(
|
||||||
|
$projects->pluck('id')->toArray(),
|
||||||
|
$request->template_id,
|
||||||
|
Project::class,
|
||||||
|
$user->id,
|
||||||
|
$user->company(),
|
||||||
|
$user->company()->db,
|
||||||
|
$hash_or_response,
|
||||||
|
$request->boolean('send_email')
|
||||||
|
);
|
||||||
|
|
||||||
|
return response()->json(['message' => $hash_or_response], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
$projects->each(function ($project) use ($action, $user) {
|
||||||
if ($user->can('edit', $project)) {
|
if ($user->can('edit', $project)) {
|
||||||
$this->project_repo->{$action}($project);
|
$this->project_repo->{$action}($project);
|
||||||
}
|
}
|
||||||
|
@ -11,29 +11,31 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Events\Task\TaskWasCreated;
|
use App\Models\Task;
|
||||||
use App\Events\Task\TaskWasUpdated;
|
use App\Utils\Ninja;
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Models\TaskStatus;
|
||||||
use App\Factory\TaskFactory;
|
use App\Factory\TaskFactory;
|
||||||
use App\Filters\TaskFilters;
|
use App\Filters\TaskFilters;
|
||||||
use App\Http\Requests\Task\CreateTaskRequest;
|
use Illuminate\Http\Response;
|
||||||
use App\Http\Requests\Task\DestroyTaskRequest;
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Utils\Traits\Uploadable;
|
||||||
|
use App\Utils\Traits\BulkOptions;
|
||||||
|
use App\Events\Task\TaskWasCreated;
|
||||||
|
use App\Events\Task\TaskWasUpdated;
|
||||||
|
use App\Repositories\TaskRepository;
|
||||||
|
use App\Utils\Traits\SavesDocuments;
|
||||||
|
use App\Transformers\TaskTransformer;
|
||||||
|
use App\Services\Template\TemplateAction;
|
||||||
|
use App\Http\Requests\Task\BulkTaskRequest;
|
||||||
use App\Http\Requests\Task\EditTaskRequest;
|
use App\Http\Requests\Task\EditTaskRequest;
|
||||||
use App\Http\Requests\Task\ShowTaskRequest;
|
use App\Http\Requests\Task\ShowTaskRequest;
|
||||||
use App\Http\Requests\Task\SortTaskRequest;
|
use App\Http\Requests\Task\SortTaskRequest;
|
||||||
use App\Http\Requests\Task\StoreTaskRequest;
|
use App\Http\Requests\Task\StoreTaskRequest;
|
||||||
|
use App\Http\Requests\Task\CreateTaskRequest;
|
||||||
use App\Http\Requests\Task\UpdateTaskRequest;
|
use App\Http\Requests\Task\UpdateTaskRequest;
|
||||||
use App\Http\Requests\Task\UploadTaskRequest;
|
use App\Http\Requests\Task\UploadTaskRequest;
|
||||||
use App\Models\Account;
|
use App\Http\Requests\Task\DestroyTaskRequest;
|
||||||
use App\Models\Task;
|
|
||||||
use App\Models\TaskStatus;
|
|
||||||
use App\Repositories\TaskRepository;
|
|
||||||
use App\Transformers\TaskTransformer;
|
|
||||||
use App\Utils\Ninja;
|
|
||||||
use App\Utils\Traits\BulkOptions;
|
|
||||||
use App\Utils\Traits\MakesHash;
|
|
||||||
use App\Utils\Traits\SavesDocuments;
|
|
||||||
use App\Utils\Traits\Uploadable;
|
|
||||||
use Illuminate\Http\Response;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TaskController.
|
* Class TaskController.
|
||||||
@ -497,16 +499,36 @@ class TaskController extends BaseController
|
|||||||
* ),
|
* ),
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
public function bulk()
|
public function bulk(BulkTaskRequest $request)
|
||||||
{
|
{
|
||||||
$action = request()->input('action');
|
/** @var \App\Models\User $user */
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
$ids = request()->input('ids');
|
$action = $request->input('action');
|
||||||
$tasks = Task::withTrashed()->find($this->transformKeys($ids));
|
|
||||||
|
|
||||||
$tasks->each(function ($task, $key) use ($action) {
|
$ids = $request->input('ids');
|
||||||
/** @var \App\Models\User $user */
|
|
||||||
$user = auth()->user();
|
$tasks = Task::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get();
|
||||||
|
|
||||||
|
if($action == 'template' && $user->can('view', $tasks->first())) {
|
||||||
|
|
||||||
|
$hash_or_response = request()->boolean('send_email') ? 'email sent' : \Illuminate\Support\Str::uuid();
|
||||||
|
|
||||||
|
TemplateAction::dispatch(
|
||||||
|
$tasks->pluck('id')->toArray(),
|
||||||
|
$request->template_id,
|
||||||
|
Task::class,
|
||||||
|
$user->id,
|
||||||
|
$user->company(),
|
||||||
|
$user->company()->db,
|
||||||
|
$hash_or_response,
|
||||||
|
$request->boolean('send_email')
|
||||||
|
);
|
||||||
|
|
||||||
|
return response()->json(['message' => $hash_or_response], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
$tasks->each(function ($task, $key) use ($action, $user) {
|
||||||
if ($user->can('edit', $task)) {
|
if ($user->can('edit', $task)) {
|
||||||
$this->task_repo->{$action}($task);
|
$this->task_repo->{$action}($task);
|
||||||
}
|
}
|
||||||
|
@ -35,9 +35,13 @@ class BulkClientRequest extends Request
|
|||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
'action' => 'required|string|in:archive,restore,delete,template',
|
||||||
'ids' => ['required','bail','array',Rule::exists('clients', 'id')->where('company_id', $user->company()->id)],
|
'ids' => ['required','bail','array',Rule::exists('clients', 'id')->where('company_id', $user->company()->id)],
|
||||||
'action' => 'in:archive,restore,delete'
|
'template' => 'sometimes|string',
|
||||||
|
'template_id' => 'sometimes|string',
|
||||||
|
'send_email' => 'sometimes|bool'
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function prepareForValidation()
|
public function prepareForValidation()
|
||||||
|
45
app/Http/Requests/Project/BulkProjectRequest.php
Normal file
45
app/Http/Requests/Project/BulkProjectRequest.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Requests\PrTaskoject;
|
||||||
|
|
||||||
|
use App\Http\Requests\Request;
|
||||||
|
|
||||||
|
class BulkProjectRequest extends Request
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
|
||||||
|
return [
|
||||||
|
'action' => 'required|string',
|
||||||
|
'ids' => 'required|array',
|
||||||
|
'template' => 'sometimes|string',
|
||||||
|
'template_id' => 'sometimes|string',
|
||||||
|
'send_email' => 'sometimes|bool'
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -12,12 +12,9 @@
|
|||||||
namespace App\Http\Requests\Task;
|
namespace App\Http\Requests\Task;
|
||||||
|
|
||||||
use App\Http\Requests\Request;
|
use App\Http\Requests\Request;
|
||||||
use App\Models\Task;
|
|
||||||
use App\Utils\Traits\BulkOptions;
|
|
||||||
|
|
||||||
class BulkTaskRequest extends Request
|
class BulkTaskRequest extends Request
|
||||||
{
|
{
|
||||||
use BulkOptions;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the user is authorized to make this request.
|
* Determine if the user is authorized to make this request.
|
||||||
@ -26,7 +23,7 @@ class BulkTaskRequest extends Request
|
|||||||
*/
|
*/
|
||||||
public function authorize()
|
public function authorize()
|
||||||
{
|
{
|
||||||
return auth()->user()->can(auth()->user()->isAdmin(), Task::class);
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,13 +33,14 @@ class BulkTaskRequest extends Request
|
|||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules()
|
||||||
{
|
{
|
||||||
$rules = $this->getGlobalRules();
|
|
||||||
|
return [
|
||||||
|
'action' => 'required|string',
|
||||||
|
'ids' => 'required|array',
|
||||||
|
'template' => 'sometimes|string',
|
||||||
|
'template_id' => 'sometimes|string',
|
||||||
|
'send_email' => 'sometimes|bool'
|
||||||
|
];
|
||||||
|
|
||||||
/* We don't require IDs on bulk storing. */
|
|
||||||
if ($this->action !== self::$STORE_METHOD) {
|
|
||||||
$rules['ids'] = ['required'];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $rules;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user