initial commit

This commit is contained in:
Dodowingster
2024-04-24 15:18:28 +08:00
parent a8c13e9425
commit 332a12008c
30 changed files with 1228 additions and 0 deletions
@@ -0,0 +1,62 @@
<?php
namespace App\Classes\Modules\Remarks\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Classes\Exceptions\MalformedRequestException;
use App\Http\Resources\RemarkResource;
class CreateRemarkLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Created Remark',
'message' => 'You have successfully created a new Remark'
];
}
/** @var CreateRemarkProcessor */
private $createRemarkProcessor;
/**
* CreateRemarkLogic constructor.
* @param CreateRemarkProcessor $createRemarkProcessor
*/
public function __construct(CreateRemarkProcessor $createRemarkProcessor)
{
$this->createRemarkProcessor = $createRemarkProcessor;
}
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function logic(Request $request) : JsonResponse
{
$classs = '\\App\\Models\\' . Str::studly($request->input('model_type'));
if (!class_exists($classs)) {
throw new MalformedRequestException('Unable to process this entity');
}
$remarkOwner = $classs::find($request->route('id'));
$remarkObject = new RemarkObject($request->input('content'), auth()->user()->id);
$remmark = $this->createRemarkProcessor->execute($remarkOwner, $remarkObject);
return $this->resourceResponse(new RemarkResource($remmark));
}
}
@@ -0,0 +1,66 @@
<?php
namespace App\Classes\Modules\Remarks\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Remarks\Services\DeletesRemark;
use App\Classes\Modules\Remarks\Services\FetchesRemark;
use App\Classes\Modules\Remarks\Standards\Rules\CanDeleteRemark;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DeleteRemarkLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Deleted Remark',
'message' => 'You have successfully deleted a Remark'
];
}
/** @var CanDeleteRemark */
private $canDeleteRemark;
/** @var DeletesRemark */
private $deletesRemark;
/** @var FetchesRemark */
private $fetchesRemark;
/**
* DeleteRemarkControllersLogic constructor.
* @param CanDeleteRemark $canDeleteRemark
* @param DeletesRemark $deletesRemark
* @param FetchesRemark $fetchesRemark
*/
public function __construct(CanDeleteRemark $canDeleteRemark, DeletesRemark $deletesRemark, FetchesRemark $fetchesRemark)
{
$this->canDeleteRemark = $canDeleteRemark;
$this->deletesRemark = $deletesRemark;
$this->fetchesRemark = $fetchesRemark;
}
/**
* @param Request $request
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
{
$this->canDeleteRemark->passes();
$query = $this->fetchesRemark->execute(['id' => $request->route('id')]);
$this->deletesRemark->execute($query);
return $this->response([]);
}
}
@@ -0,0 +1,59 @@
<?php
namespace App\Classes\Modules\Remarks\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Remarks\Services\FetchesRemark;
use App\Classes\Modules\Remarks\Standards\Rules\CanFetchRemark;
use App\Http\Resources\RemarkResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class FetchRemarkLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Retrieved Remark',
'message' => 'You have successfully retrieved a Remark'
];
}
/** @var CanFetchRemark */
private $canFetchRemark;
/** @var FetchesRemark */
private $fetchesRemark;
/**
* FetchRemarkControllersLogic constructor.
* @param CanFetchRemark $canFetchRemark
* @param FetchesRemark $fetchesRemark
*/
public function __construct(CanFetchRemark $canFetchRemark, FetchesRemark $fetchesRemark)
{
$this->canFetchRemark = $canFetchRemark;
$this->fetchesRemark = $fetchesRemark;
}
/**
* @param Request $request
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
{
$this->canFetchRemark->passes();
$query = $this->fetchesRemark->execute(['id' => $request->route('id')]);
return $this->resourceResponse(new RemarkResource($query));
}
}
@@ -0,0 +1,59 @@
<?php
namespace App\Classes\Modules\Remarks\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Remarks\Services\ListsRemarks;
use App\Classes\Modules\Remarks\Standards\Rules\CanListRemarks;
use App\Http\Resources\RemarkResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ListRemarksLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Retrieved Remarks',
'message' => 'You have successfully retrieved a list of Remarks'
];
}
/** @var CanListRemarks */
private $canListRemarks;
/** @var ListsRemarks */
private $listsRemarks;
/**
* ListRemarksLogic constructor.
* @param CanListRemarks $canListRemarks
* @param ListsRemarks $listsRemarks
*/
public function __construct(CanListRemarks $canListRemarks, ListsRemarks $listsRemarks)
{
$this->canListRemarks = $canListRemarks;
$this->listsRemarks = $listsRemarks;
}
/**
* @param Request $request
* @return JsonResponse
* @throws ErrorException
*/
public function logic(Request $request) : JsonResponse
{
$this->canListRemarks->passes();
$query = $this->listsRemarks->execute($this->listsRemarks->deserializeFilters($request->input('filters')));
return $this->collectionResponse(RemarkResource::collection($query));
}
}
@@ -0,0 +1,71 @@
<?php
namespace App\Classes\Modules\Remarks\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Remarks\Services\UpdatesRemark;
use App\Classes\Modules\Remarks\Services\FetchesRemark;
use App\Classes\Modules\Remarks\Standards\Rules\CanUpdateRemark;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Http\Resources\RemarkResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class UpdateRemarkLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Updated Remark',
'message' => 'You have successfully updated the Remark'
];
}
/** @var CanUpdateRemark */
private $canUpdateRemark;
/** @var UpdatesRemark */
private $updatesRemark;
/** @var FetchesRemark */
private $fetchesRemark;
/**
* UpdateRemarkLogic constructor.
* @param CanUpdateRemark $canUpdateRemark
* @param UpdatesRemark $updatesRemark
* @param FetchesRemark $fetchesRemark
*/
public function __construct(CanUpdateRemark $canUpdateRemark, UpdatesRemark $updatesRemark, FetchesRemark $fetchesRemark)
{
$this->canUpdateRemark = $canUpdateRemark;
$this->updatesRemark = $updatesRemark;
$this->fetchesRemark = $fetchesRemark;
}
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function logic(Request $request) : JsonResponse
{
$object = new RemarkObject($request->input('content'), auth()->user()->id);
$this->canUpdateRemark->passes($object);
$query = $this->fetchesRemark->execute(['id' => $request->route('id')]);
$query = $this->updatesRemark->execute($query, $object);
return $this->resourceResponse(new RemarkResource($query));
}
}
@@ -0,0 +1,38 @@
<?php
namespace App\Classes\Modules\Remarks\DataTransferObjects;
use App\Classes\General\Interfaces\DataTransferObject;
class RemarkObject implements DataTransferObject
{
/** @var int */
private $commenterID;
/** @var string*/
private $content;
public function __construct(string $content, int $commenterID)
{
$this->commenterID = $commenterID;
$this->content = $content;
}
/**
* @return int
*/
public function getCommenterId(): string
{
return $this->commenterID;
}
/**
* @return string
*/
public function getContent(): ?string
{
return $this->content;
}
}
@@ -0,0 +1,47 @@
<?php
namespace App\Classes\Modules\Remarks\Processors;
use App\Classes\General\Interfaces\Remarkable;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Classes\Modules\Remarks\Services\CreatesRemark;
use App\Classes\Modules\Remarks\Standards\Rules\CanCreateRemark;
class CreateRemarkProcessor
{
/** @var CreatesRemark */
private $createsRemark;
/** @var CanCreateRemark */
private $canCreateRemark;
/**
* CreateRemarkProcessor constructor.
* @param CreatesRemark $createsRemark
* @param CanCreateRemark $canCreateRemark
*/
public function __construct(CreatesRemark $createsRemark, CanCreateRemark $canCreateRemark)
{
$this->createsRemark = $createsRemark;
$this->canCreateRemark = $canCreateRemark;
}
/**
* @param Remarkable $remarkable
* @param RemarkObject $object
* @return \Illuminate\Database\Eloquent\Model
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function execute(Remarkable $remarkable, RemarkObject $object){
$this->canCreateRemark->passes($object);
return $this->createsRemark->execute($remarkable, $object);
}
}
@@ -0,0 +1,31 @@
<?php
namespace App\Classes\Modules\Remarks\Services;
use App\Classes\General\Eloquent\AbstractUpdateRecord;
use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord;
use App\Classes\General\Interfaces\Remarkable;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Models\Container;
use App\Models\Remark;
use App\Models\User;
class CreatesRemark extends AbstractUpdateRelationshipRecord
{
/**
* @param Remarkable $remarkable
* @param RemarkObject $object
* @return \Illuminate\Database\Eloquent\Model
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function execute(Remarkable $remarkable, RemarkObject $object) {
$model = new Remark();
$model->commenter_id = $object->getCommenterId();
$model->content = $object->getContent();
return $this->handler($remarkable->remarks(), $model);
}
}
@@ -0,0 +1,19 @@
<?php
namespace App\Classes\Modules\Remarks\Services;
use App\Classes\General\Eloquent\AbstractDeleteRecord;
use App\Models\Remark;
class DeletesRemark extends AbstractDeleteRecord
{
/**
* @param Remark $model
* @return mixed
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function execute(Remark $model) {
return $this->handler($model);
}
}
@@ -0,0 +1,33 @@
<?php
namespace App\Classes\Modules\Remarks\Services;
use App\Classes\General\Eloquent\AbstractFetchRecord;
use Illuminate\Database\Eloquent\Builder;
use App\Models\Remark;
class FetchesRemark extends AbstractFetchRecord
{
/** @var Remark */
private $repository;
/**
* FetchesRemark constructor.
* @param Remark $repository
*/
public function __construct(Remark $repository)
{
$this->repository = $repository;
}
/**
* @return Builder
*/
public function getRepository(): Builder
{
return $this->repository->newQuery();
}
}
@@ -0,0 +1,33 @@
<?php
namespace App\Classes\Modules\Remarks\Services;
use App\Classes\General\Eloquent\AbstractListRecord;
use Illuminate\Database\Eloquent\Builder;
use App\Models\Remark;
class ListsRemarks extends AbstractListRecord
{
/** @var Remark */
private $repository;
/**
* ListsRemarks constructor.
* @param Remark $repository
*/
public function __construct(Remark $repository)
{
$this->repository = $repository;
}
/**
* @return Builder
*/
function getRepository(): Builder
{
return $this->repository->newQuery();
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Classes\Modules\Remarks\Services;
use App\Classes\General\Eloquent\AbstractUpdateRecord;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Models\Remark;
class UpdatesRemark extends AbstractUpdateRecord
{
/**
* @param Remark $model
* @param RemarkObject $object
* @return \Illuminate\Database\Eloquent\Model
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function execute(Remark $model, RemarkObject $object) {
$model->commenter_id = $object->getCommenterId();
$model->content = $object->getContent();
return $this->handler($model);
}
}
@@ -0,0 +1,57 @@
<?php
namespace App\Classes\Modules\Remarks\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Classes\Modules\Remarks\Standards\Validators\RemarkValidation;
class CanCreateRemark extends AbstractRule
{
/** @var RemarkValidation */
private $RemarkValidation;
/**
* CanCreateRemark constructor.
* @param RemarkValidation $RemarkValidation
*/
public function __construct(RemarkValidation $RemarkValidation)
{
$this->RemarkValidation = $RemarkValidation;
}
/**
* @return bool
*/
protected function authorized($object): bool
{
// TODO Set Authorization rules
return true;
}
/**
* @param RemarkObject $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return $this->RemarkValidation->validate($object);
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,43 @@
<?php
namespace App\Classes\Modules\Remarks\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
class CanDeleteRemark extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
// TODO Set Authorization rules
return true;
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function validators($object): bool
{
return true;
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,43 @@
<?php
namespace App\Classes\Modules\Remarks\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
class CanFetchRemark extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
// TODO Set Authorization rules
return true;
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function validators($object): bool
{
return true;
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,43 @@
<?php
namespace App\Classes\Modules\Remarks\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
class CanListRemarks extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
// TODO Set Authorization rules
return true;
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function validators($object): bool
{
return true;
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,57 @@
<?php
namespace App\Classes\Modules\Remarks\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Classes\Modules\Remarks\Standards\Validators\RemarkValidation;
class CanUpdateRemark extends AbstractRule
{
/** @var RemarkValidation */
private $RemarkValidation;
/**
* CanUpdateRemark constructor.
* @param RemarkValidation $RemarkValidation
*/
public function __construct(RemarkValidation $RemarkValidation)
{
$this->RemarkValidation = $RemarkValidation;
}
/**
* @return bool
*/
protected function authorized($object): bool
{
// TODO Set Authorization rules
return true;
}
/**
* @param RemarkObject $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return $this->RemarkValidation->validate($object);
}
/**
* @param RemarkObject $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,41 @@
<?php
namespace App\Classes\Modules\Remarks\Standards\Validators;
use App\Classes\General\Abstracts\AbstractValidation;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
class RemarkValidation extends AbstractValidation
{
/**
* @param RemarkObject $object
* @return array
*/
protected function data($object): array {
return [
'commenter_id' => $object->getCommenterId(),
'content' => $object->getContent(),
];
}
/**
* @return array
*/
protected function rules(): array {
return [
'commenter_id' => 'required',
'content' => 'required',
];
}
/**
* @return array
*/
protected function messages(): array {
return [];
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Remarks;
use App\Classes\Modules\Remarks\ControllersLogic\CreateRemarkLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class CreateRemarkController
{
/**
* @param Request $request
* @param CreateRemarkLogic $logic
* @return JsonResponse
*/
public function create(Request $request, CreateRemarkLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Remarks;
use App\Classes\Modules\Remarks\ControllersLogic\DeleteRemarkLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DeleteRemarkController
{
/**
* @param Request $request
* @param DeleteRemarkLogic $logic
* @return JsonResponse
*/
public function delete(Request $request, DeleteRemarkLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Remarks;
use App\Classes\Modules\Remarks\ControllersLogic\FetchRemarkLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class FetchRemarkController
{
/**
* @param Request $request
* @param FetchRemarkLogic $logic
* @return JsonResponse
*/
public function fetch(Request $request, FetchRemarkLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Remarks;
use App\Classes\Modules\Remarks\ControllersLogic\ListRemarksLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ListRemarksController
{
/**
* @param Request $request
* @param ListRemarksLogic $logic
* @return JsonResponse
*/
public function list(Request $request, ListRemarksLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Remarks;
use App\Classes\Modules\Remarks\ControllersLogic\UpdateRemarkLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class UpdateRemarkController
{
/**
* @param Request $request
* @param UpdateRemarkLogic $logic
* @return JsonResponse
*/
public function update(Request $request, UpdateRemarkLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
+26
View File
@@ -0,0 +1,26 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class RemarkResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'commenter' => new UserResource($this->commenter),
'owner_id' => $this->owner_id,
'content' => $this->content,
'created_at' => $this->created_at->format('d-m-Y H:i'),
'long_ago' => $this->created_at->diffForHumans()
];
}
}
@@ -0,0 +1,32 @@
<template>
<div class="row w-100">
<div class="col">
<loading-component style="height: 300px; top: 0;" key="1" color="success" v-show="isLoading" ></loading-component>
<!-- <div class="row justify-content-center padding-30" v-show="!isLoading"> -->
<div class="row justify-content-center" v-show="!isLoading">
<div class="col">
<div class="row" v-for="remark in data.remarks">
<div class="col">
<remark-list-component :section="section" :data="remark"></remark-list-component>
</div>
</div>
<remark-comment-form-component :section="section" :module_type="module_type" :id="data.id"></remark-comment-form-component>
</div>
</div>
</div>
</div>
</template>
<script>
import ModalFormHandler from '../../../general/mixins/modalFormHandler';
export default {
props: {
module_type: {
type: String,
required: true
}
},
mixins: [ModalFormHandler]
}
</script>
@@ -0,0 +1,71 @@
<template>
<!-- <div class="row m-b-20 parentContainer"> -->
<div class="row m-b-20 parentContainer bg-white padding-10 rounded" style="margin: 10px">
<div class="col">
<div class="row justify-content-center align-items-center">
<div class="hide col-auto btn-rounded padding-10 d-flex justify-content-center align-items-center bg-master-lighter" style="width: 30px;height: 30px; box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.14);">
<span class="bold">{{item.commenter.name.substr(0, 1)}}</span>
</div>
<div class="col">
<div class="row">
<div class="col-auto">
<p class="no-margin muted bold fs-14">{{item.commenter.name}}</p>
</div>
<div class="col-auto">
<span class="fs-12 muted normal">{{item.long_ago}}</span>
</div>
<div class="col d-flex justify-content-end">
<div class="row">
<div class="col p-t-5 p-b-5 b-a b-grey">
<div class="row" v-if="!isEdit && $store.getters.isAdmin">
<div class="col">
<i class="fa fa-edit pointer" @click="isEdit = !isEdit"></i>
</div>
<div class="col">
<div class="requestModal pointer" data-type="deleteComment">
<i class="fa fa-trash"></i>
</div>
</div>
</div>
<div class="row" v-if="isEdit">
<div class="col">
<i class="fa fa-times pointer" @click="isEdit = !isEdit"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<p v-if="!isEdit">{{item.content}}</p>
<container-comment-form-component :section="section" :data="item" :id="item.owner_id" v-on:submit="isEdit=false" v-if="isEdit"></container-comment-form-component>
</div>
</div>
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="fill-in" type="deleteComment">
<delete-container-comment-form-component :section="section" :data="item"></delete-container-comment-form-component>
</modal-component>
</div>
</div>
</template>
<script>
import componentHandler from '../../../general/mixins/componentHandler';
export default {
props: {
section: {
type: String,
required: true,
}
},
data(){
return {
isEdit: false,
}
},
mixins: [componentHandler]
}
</script>
@@ -0,0 +1,32 @@
<template>
<div class="row">
<div class="col">
<loading-component style="height: 300px; top: 0;" key="1" color="success" v-show="isLoading" ></loading-component>
<div class="row justify-content-center" v-show="!isLoading">
<div class="col">
<div class="row m-b-20">
<div class="col text-center">
<h3 class="all-caps">Are you Sure?</h3>
<div class="fs-11">Are you sure you want to delete this remark?</div>
</div>
</div>
<div class="row">
<div class="col p-r-5">
<div class="btn btn-sm btn-success btn-block b-rad-none" data-dismiss="modal">Cancel</div>
</div>
<div class="col p-l-5">
<div class="btn btn-sm btn-danger btn-block b-rad-none" @click="submit(route('api.remark.delete', item.id), 'delete', section, true, true)">Delete</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import componentHandler from '../../../general/mixins/componentHandler';
import ModalFormHandler from '../../../general/mixins/modalFormHandler';
export default {
mixins: [componentHandler, ModalFormHandler]
}
</script>
@@ -0,0 +1,55 @@
<template>
<div class="row m-t-5">
<div class="col">
<validation-wrapper-component :validator="$v.parameters.content">
<input type="text" class="form-control fs-12" placeholder="Write your comments..." v-model.trim="parameters.content">
</validation-wrapper-component>
</div>
<div class="col-auto b-a b-grey d-flex justify-content-center align-items-center rounded pointer">
<i class="fa fa-paper-plane" @click="submitForm"></i>
</div>
</div>
</template>
<script>
import modalFormHandler from '../../../general/mixins/modalFormHandler';
import { required } from "vuelidate/lib/validators";
export default {
props: {
id: {
type: Number,
required: true
},
module_type: {
type: String,
required: true
}
},
data() {
return {
parameters: {
// content: this.data.remarks.length > 0 ? this.data.remarks[0].content : '',
content: '',
model_type: this.module_type
}
};
},
validations: {
parameters: {
content: { required },
}
},
created() {
if (this.data) {
this.parameters.content = this.data.content;
}
},
methods: {
submitForm() {
this.submit(this.data ? this.route('api.remark.update', this.data.id) : this.route('api.remark.create', this.id), this.data ? 'put' : 'post', this.section, true, true);
this.$emit('submit')
}
},
mixins: [modalFormHandler]
}
</script>
@@ -0,0 +1,73 @@
<template>
<div class="row">
<div class="col">
<loading-component style="height: 50px; top: 0;" key="1" color="success" v-show="$store.getters.isLoading(section)"></loading-component>
<div class="row" v-show="!$store.getters.isLoading(section)">
<div class="col">
<div class="row m-b-20">
<div class="col">
<h6 class="all-caps m-b-5 bold no-margin">{{ data.remarks.length > 0 ? 'Edit' : 'Create' }} Remark</h6>
</div>
</div>
<div class="row m-b-5 animate__animated animate__fadeInUpBig animate__fast" v-if="error">
<div class="col">
<small class="bold fs-10 text-danger">{{error}}</small>
</div>
</div>
<div class="row m-b-10">
<div class="col">
<validation-wrapper-component :validator="$v.parameters.content">
<label>Remark</label>
<input type="text" class="form-control" v-model="parameters.content">
</validation-wrapper-component>
</div>
</div>
<div class="row">
<div class="col p-r-5">
<div class="btn btn-sm btn-default bg-master-lightest btn-block b-rad-none" data-dismiss="modal">Cancel</div>
</div>
<div class="col p-l-5">
<div class="btn btn-sm btn-primary btn-block b-rad-none" @click="submitForm()">{{ data.remarks.length > 0 ? 'Edit' : 'Create' }}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { required } from "vuelidate/lib/validators";
import ModalFormHandler from '../../../general/mixins/modalFormHandler';
export default {
props: {
data:{
type: Object,
required: true
},
module_type: {
type: String,
required: true
}
},
data(){
return {
parameters: {
content: this.data.remarks.length > 0 ? this.data.remarks[0].content : '',
model_type: this.module_type
}
}
},
validations: {
parameters: {
content: { required: required },
}
},
methods: {
submitForm() {
this.submit(this.data.remarks.length > 0 ? this.route('api.remark.update', this.data.remarks[0].id) : this.route('api.remark.create', this.data.id), this.data.remarks.length > 0 ? 'put' : 'post', this.section, true, true);
}
},
mixins: [ModalFormHandler]
}
</script>
+11
View File
@@ -0,0 +1,11 @@
<?php
use Illuminate\Support\Facades\Route;
Route::group(['namespace' => 'Remarks', 'as' => 'remark.', 'prefix' => 'remark'], function () {
Route::get('/{id}/show', 'FetchRemarkController@fetch')->name('show');
Route::get('/list', 'ListRemarksController@list')->name('list');
Route::post('/{id}/create', 'CreateRemarkController@create')->name('create');
Route::put('/update/{id}', 'UpdateRemarkController@update')->name('update');
Route::delete('/delete/{id}', 'DeleteRemarkController@delete')->name('delete');
});