diff --git a/app/Http/Controllers/EmailHistoryController.php b/app/Http/Controllers/EmailHistoryController.php new file mode 100644 index 000000000000..70d52b28d4d1 --- /dev/null +++ b/app/Http/Controllers/EmailHistoryController.php @@ -0,0 +1,65 @@ +id) + ->where('category_id', SystemLog::CATEGORY_MAIL) + ->orderBy('id','DESC') + ->map(function ($system_log){ + if($system_log->log['history'] ?? false) { + return json_decode($system_log->log['history'], true); + } + }); + + return response()->json($data, 200); + + } + + public function entityHistory(EntityEmailHistoryRequest $request) + { + /** @var \App\Models\User $user */ + $user = auth()->user(); + + $data = SystemLog::where('company_id', $user->company()->id) + ->where('category_id', SystemLog::CATEGORY_MAIL) + ->whereJsonContains('log->history->entity_id', $this->encodePrimaryKey($request->entity_id)) + ->orderBy('id', 'DESC') + ->map(function ($system_log) { + if($system_log->log['history'] ?? false) { + return json_decode($system_log->log['history'], true); + } + }); + + return response()->json($data, 200); + + } +} \ No newline at end of file diff --git a/app/Http/Requests/Email/ClientEmailHistoryRequest.php b/app/Http/Requests/Email/ClientEmailHistoryRequest.php new file mode 100644 index 000000000000..45d60b458b99 --- /dev/null +++ b/app/Http/Requests/Email/ClientEmailHistoryRequest.php @@ -0,0 +1,55 @@ +user(); + + return $user->can('view', $this->client); + + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + ]; + } + + public function prepareForValidation() + { + $input = $this->all(); + + $this->replace($input); + } + +} diff --git a/app/Http/Requests/Email/EntityEmailHistoryRequest.php b/app/Http/Requests/Email/EntityEmailHistoryRequest.php new file mode 100644 index 000000000000..2c506e653dd6 --- /dev/null +++ b/app/Http/Requests/Email/EntityEmailHistoryRequest.php @@ -0,0 +1,62 @@ +user(); + + return [ + 'entity' => 'bail|required|string|in:invoice,quote,credit,recurring_invoice,purchase_order', + 'entity_id' => ['bail','required',Rule::exists($this->entity_plural, 'id')->where('company_id', $user->company()->id)], + ]; + } + + public function prepareForValidation() + { + $input = $this->all(); + + $this->entity_plural = Str::plural($input['entity']) ?? ''; + $input['entity_id'] = $this->decodePrimaryKey($input['entity_id']); + + $this->replace($input); + } + +} diff --git a/routes/api.php b/routes/api.php index 34e6c57c308b..aa4e108a5273 100644 --- a/routes/api.php +++ b/routes/api.php @@ -58,6 +58,7 @@ use App\Http\Controllers\TaskStatusController; use App\Http\Controllers\Bank\YodleeController; use App\Http\Controllers\CompanyUserController; use App\Http\Controllers\PaymentTermController; +use App\Http\Controllers\EmailHistoryController; use App\Http\Controllers\GroupSettingController; use App\Http\Controllers\OneTimeTokenController; use App\Http\Controllers\SubscriptionController; @@ -202,6 +203,8 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale'] Route::post('documents/bulk', [DocumentController::class, 'bulk'])->name('documents.bulk'); Route::post('emails', [EmailController::class, 'send'])->name('email.send')->middleware('user_verified'); + Route::post('emails/clientHistory/{client}', [EmailHistoryController::class, 'clientHistory'])->name('email.clientHistory'); + Route::post('emails/entityHistory', [EmailHistoryController::class, 'entityHistory'])->name('email.entityHistory'); Route::resource('expenses', ExpenseController::class); // name = (expenses. index / create / show / update / destroy / edit Route::put('expenses/{expense}/upload', [ExpenseController::class, 'upload']);