delete document on payments and billing

This commit is contained in:
edmondlang
2022-01-06 21:28:02 +08:00
parent 5332bace52
commit e3940d1233
6 changed files with 166 additions and 4 deletions
@@ -0,0 +1,70 @@
<?php
namespace App\Classes\Modules\Documents\ControllersLogic;
use App\Classes\Modules\Documents\Standards\Rules\CanDeleteDocument;
use App\Http\Resources\DocumentResource;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Documents\Services\FetchesDocument;
use App\Classes\Modules\Documents\Services\DeletesDocument;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor;
class DeleteDocumentLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Deleted Document',
'message' => 'You have successfully deleted a document'
];
}
/** @var FetchesDocument */
private $fetchesDocument;
/** @var DeletesDocument */
private $deletesDocument;
/** @var CanDeleteDocument */
private $canDeleteDocument;
/**
* DeleteDocumentLogic constructor.
* @param FetchesDocument $fetchesDocument
* @param DeletesDocument $deletesDocument
* @param CanDeleteDocument $canDeleteDocument
*/
public function __construct(FetchesDocument $fetchesDocument, DeletesDocument $deletesDocument, CanDeleteDocument $canDeleteDocument)
{
$this->fetchesDocument = $fetchesDocument;
$this->deletesDocument = $deletesDocument;
$this->canDeleteDocument = $canDeleteDocument;
}
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function logic(Request $request) : JsonResponse
{
$document = $this->fetchesDocument->execute(['id' => $request->route('id')]);
$this->canDeleteDocument->passes();
$this->deletesDocument->execute($document);
return $this->response([]);
}
}
@@ -0,0 +1,39 @@
<?php
namespace App\Classes\Modules\Documents\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
class CanDeleteDocument extends AbstractRule
{
/**
* @return bool
*/
protected function authorized(): bool
{
// TODO Set Authorization rules
return true;
}
/**
* @param $object
* @return bool
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -2,7 +2,7 @@
namespace App\Http\Controllers\Documents;
use App\Classes\Modules\Documents\ControllersLogic\ApproveIdentificationDocumentLogic;
use App\Classes\Modules\Documents\ControllersLogic\ApproveDocumentLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -13,7 +13,7 @@ class ApproveDocumentController
* @param ApproveIdentificationDocumentLogic $logic
* @return JsonResponse
*/
public function approve(Request $request, ApproveIdentificationDocumentLogic $logic): JsonResponse {
public function approve(Request $request, ApproveDocumentLogic $logic): JsonResponse {
return $logic->execute($request);
}
@@ -0,0 +1,14 @@
<?php
namespace App\Http\Controllers\Documents;
use App\Classes\Modules\Documents\ControllersLogic\DeleteDocumentLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DeleteDocumentController
{
public function delete(Request $request, DeleteDocumentLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
@@ -26,7 +26,7 @@
</div>
</div>
</div>
<div class="col-auto">
<div v-if="item.status === 1" class="col-auto">
<div class="row parentContainer">
<div class="col p-l-0">
<button class="btn btn-xs btn-default bg-success b-rad-none no-border requestModal" data-type="approveDocument">
@@ -59,6 +59,40 @@
</div>
</div>
</div>
<div v-if="item.status === 2" class="col-auto">
<div class="row parentContainer">
<div class="col p-l-0">
<button class="btn btn-xs btn-default bg-danger b-rad-none no-border requestModal" data-type="deleteDocument">
<i class="fa fa-times text-white"></i>
</button>
<modal-component small type="deleteDocument">
<div class="row">
<div class="col text-center">
<div class="row">
<div class="col text-center">
<div class="row m-b-20">
<div class="col">
<h5 class="all-caps">Are you Sure?</h5>
<div class="fs-11">Are you sure you want to delete this docuement?</div>
</div>
</div>
<div class="row">
<div class="col p-r-5">
<div data-dismiss="modal" class="btn btn-sm btn-default bg-master-lighter btn-block b-rad-none">Cancel</div>
</div>
<div class="col p-l-5">
<div data-dismiss="modal" class="btn btn-sm btn-danger btn-block b-rad-none" @click="deleteDocument()">Delete</div>
</div>
</div>
</div>
</div>
</div>
</div>
</modal-component>
</div>
</div>
</div>
</div>
</div>
@@ -79,8 +113,12 @@
methods: {
approveDocument(status){
this.isLoading = true;
this.submit(this.route('api.company.identification.approval', this.item.owner.id, this.item.id, status), 'put', 'identificationVerificationSection', true, true);
this.submit(this.route('api.document.status.approve', this.item.id, status), 'put', 'identificationVerificationSection', true, true);
},
deleteDocument() {
this.isLoading = true;
this.submit(this.route('api.document.delete', this.item.id), 'delete', 'identificationVerificationSection', true, true);
}
},
mixins: [componentHandler, staticFormHandler]
}
+1
View File
@@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'document', 'as' => 'document.', 'namespace' => 'Documents'], function () {
Route::get('/list', 'ListDocumentsController@list')->name('list');
Route::delete('/{id}/delete', 'DeleteDocumentController@delete')->name('delete');
Route::put('/{id}/approve', 'ApproveDocumentController@approve')->name('status.approve');
Route::put('/{id}/reject', 'RejectDocumentController@reject')->name('status.reject');
});