Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?php

/**
* Quantum PHP Framework
*
* An open source software development framework for PHP
*
* @package Quantum
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.9
*/

namespace {{MODULE_NAMESPACE}}\Controllers;

use Quantum\Service\Factories\ServiceFactory;
use {{MODULE_NAMESPACE}}\Services\CommentService;
use Quantum\Http\Response;
use Quantum\Http\Request;

/**
* Class CommentController
* @package Modules\{{MODULE_NAME}}
*/
class CommentController extends BaseController
{

/**
* @var CommentService
*/
public $commentService;

public function __before()
{
$this->commentService = ServiceFactory::create(CommentService::class);
}

/**
* Action - create comment
* @param Request $request
* @param Response $response
* @param string|null $lang
* @param string $uuid
*/
public function create(Request $request, Response $response, ?string $lang, string $uuid)
{
$data = [
'post_uuid' => $uuid,
'user_uuid' => auth()->user()->uuid,
'content' => trim($request->get('content')),
];

$comment = $this->commentService->addComment($data);

$response->json([
'status' => 'success',
'message' => t('common.created_successfully'),
'data' => $comment
]);
}

/**
* Action - delete comment
* @param Response $response
* @param string|null $lang
* @param string $uuid
*/
public function delete(Response $response, ?string $lang, string $uuid)
{
$this->commentService->deleteComment($uuid);

$response->json([
'status' => 'success',
'message' => t('common.deleted_successfully'),
]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ namespace {{MODULE_NAMESPACE}}\Controllers;

use Quantum\Service\Factories\ServiceFactory;
use Quantum\Http\Constants\StatusCode;
use {{MODULE_NAMESPACE}}\Services\CommentService;
use {{MODULE_NAMESPACE}}\Services\PostService;
use Quantum\View\RawParam;
use Quantum\Http\Response;
use Quantum\Http\Request;

Expand All @@ -36,7 +36,7 @@ class PostController extends BaseController
* Current page
*/
const CURRENT_PAGE = 1;

/**
* Post service
* @var PostService
Expand All @@ -53,17 +53,17 @@ class PostController extends BaseController

/**
* Action - get posts list
* @param Request $request
* @param Request $request
* @param Response $response
*/
public function posts(Request $request, Response $response)
{
$perPage = $request->get('per_page', self::POSTS_PER_PAGE);
$currentPage = $request->get('page', self::CURRENT_PAGE);
$search = trim($request->get('q'));

$paginatedPosts = $this->postService->getPosts($perPage, $currentPage, $search);

$response->json([
'status' => 'success',
'data' => $this->postService->transformData($paginatedPosts->data()->all()),
Expand Down Expand Up @@ -95,11 +95,18 @@ class PostController extends BaseController
stop();
}

$rawData = new RawParam(current($this->postService->transformData([$post])));
$postData = current($this->postService->transformData([$post]));

$commentService = ServiceFactory::create(CommentService::class);
$comments = $commentService->getCommentsByPost($postUuid);

$commentsData = $commentService->transformData($comments->all());

$postData['comments'] = $commentsData;

$response->json([
'status' => 'success',
'data' => $rawData->getValue(),
'data' => $postData,
]);
}
}
53 changes: 53 additions & 0 deletions src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php

/**
* Quantum PHP Framework
*
* An open source software development framework for PHP
*
* @package Quantum
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.9
*/

namespace {{MODULE_NAMESPACE}}\Middlewares;

use Quantum\Libraries\Validation\Rule;
use Quantum\Http\Response;
use Quantum\Http\Request;
use Closure;

/**
* Class Comment
* @package Modules\{{MODULE_NAME}}
*/
class Comment extends BaseMiddleware
{

/**
* @param Request $request
* @param Response $response
* @param Closure $next
*/
public function apply(Request $request, Response $response, Closure $next)
{
$this->validateRequest($request, $response);
return $next($request, $response);
}

/**
* @inheritDoc
*/
protected function defineValidationRules(Request $request)
{
$this->validator->setRules([
'content' => [
Rule::required(),
Rule::minLen(2),
Rule::maxLen(100),
],
]);
}
}
71 changes: 71 additions & 0 deletions src/Module/Templates/DemoApi/src/Models/Comment.php.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<?php

/**
* Quantum PHP Framework
*
* An open source software development framework for PHP
*
* @package Quantum
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.9
*/

namespace {{MODULE_NAMESPACE}}\Models;

use Quantum\Model\Traits\SoftDeletes;
use Quantum\Model\QtModel;

/**
* Class Comment
* @package Modules\{{MODULE_NAME}}
*/
class Comment extends QtModel
{

use SoftDeletes;

/**
* ID column of table
* @var string
*/
public $idColumn = 'id';

/**
* The table name
* @var string
*/
public $table = 'comments';

/**
* Model relations configuration
* @return array[]
*/
public function relations(): array
{
return [
Post::class => [
'foreign_key' => 'post_uuid',
'local_key' => 'uuid',
],
User::class => [
'foreign_key' => 'user_uuid',
'local_key' => 'uuid',
]
];
}

/**
* Fillable properties
* @var array
*/
public $fillable = [
'uuid',
'post_uuid',
'user_uuid',
'content',
'created_at',
'updated_at'
];
}
5 changes: 3 additions & 2 deletions src/Module/Templates/DemoApi/src/Models/Post.php.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* @author Arman Ag. <arman.ag@softberg.org>
* @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
* @link http://quantum.softberg.org/
* @since 2.9.8
* @since 2.9.9
*/

namespace {{MODULE_NAMESPACE}}\Models;
Expand Down Expand Up @@ -62,6 +62,7 @@ class Post extends QtModel
'title',
'content',
'image',
'updated_at'
'created_at',
'updated_at',
];
}
2 changes: 2 additions & 0 deletions src/Module/Templates/DemoApi/src/Models/User.php.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,7 @@ class User extends QtModel
'otp',
'otp_expires',
'otp_token',
'created_at',
'updated_at',
];
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ class AuthService extends QtService implements AuthServiceInterface
*/
public function add(array $data): AuthUser
{
$data['uuid'] = $data['uuid'] ?? uuid_ordered();
$data['created_at'] = date('Y-m-d H:i:s');

$this->createUserDirectory($data['uuid']);

$user = $this->model->create();
Expand All @@ -118,6 +121,8 @@ class AuthService extends QtService implements AuthServiceInterface
return null;
}

$data['updated_at'] = date('Y-m-d H:i:s');

$user->fillObjectProps($data);
$user->save();

Expand All @@ -127,7 +132,7 @@ class AuthService extends QtService implements AuthServiceInterface
/**
* Delete users table
*/
public function deleteTable()
public function deleteAllUsers()
{
$this->model->deleteTable();
}
Expand Down
Loading