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
Expand Up @@ -16,6 +16,7 @@ namespace {{MODULE_NAMESPACE}}\Controllers;

use Quantum\Auth\Exceptions\AuthException;
use Quantum\Http\Enums\StatusCode;
use {{MODULE_NAMESPACE}}\DTOs\UserDTO;
use {{MODULE_NAMESPACE}}\Enums\Role;
use Quantum\Http\Response;
use Quantum\Http\Request;
Expand Down Expand Up @@ -93,12 +94,9 @@ class AuthController extends BaseController
*/
public function signup(Request $request, Response $response)
{
$userData = $request->all();
$userDto = UserDTO::fromRequest($request, Role::EDITOR, uuid_ordered());

$userData['uuid'] = uuid_ordered();
$userData['role'] = Role::EDITOR;

auth()->signup($userData);
auth()->signup($userDto->toArray());

$response->json([
'status' => self::STATUS_SUCCESS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
namespace {{MODULE_NAMESPACE}}\Controllers;

use {{MODULE_NAMESPACE}}\Services\CommentService;
use {{MODULE_NAMESPACE}}\DTOs\CommentDTO;
use Quantum\Http\Response;
use Quantum\Http\Request;

Expand Down Expand Up @@ -44,11 +45,9 @@ class CommentController extends BaseController
*/
public function create(Request $request, Response $response, ?string $lang, string $uuid)
{
$comment = $this->commentService->addComment([
'post_uuid' => $uuid,
'user_uuid' => auth()->user()->uuid,
'content' => trim($request->get('content')),
]);
$commentDto = CommentDTO::fromRequest($request, $uuid, auth()->user()->uuid);

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

$response->json([
'status' => 'success',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace {{MODULE_NAMESPACE}}\Controllers;
use Quantum\Service\Exceptions\ServiceException;
use Quantum\App\Exceptions\BaseException;
use {{MODULE_NAMESPACE}}\Services\PostService;
use {{MODULE_NAMESPACE}}\DTOs\PostDTO;
use Quantum\Di\Exceptions\DiException;
use Quantum\Http\Response;
use Quantum\Http\Request;
Expand Down Expand Up @@ -60,24 +61,19 @@ class PostManagementController extends BaseController
*/
public function create(Request $request, Response $response)
{
$postData = [
'user_uuid' => auth()->user()->uuid,
'title' => $request->get('title', null, true),
'content' => $request->get('content', null, true),
'image' => '',
];
$imageName = '';

if ($request->hasFile('image')) {
$imageName = $this->postService->saveImage(
$request->getFile('image'),
auth()->user()->uuid,
slugify($request->get('title'))
);

$postData['image'] = $imageName;
}

$post = $this->postService->addPost($postData);
$postDto = PostDTO::fromRequest($request, auth()->user()->uuid, $imageName);

$post = $this->postService->addPost($postDto);

$response->json([
'status' => 'success',
Expand All @@ -95,13 +91,10 @@ class PostManagementController extends BaseController
*/
public function amend(Request $request, Response $response, ?string $lang, string $postUuid)
{
$postData = [
'title' => $request->get('title', null, true),
'content' => $request->get('content', null, true),
];

$post = $this->postService->getPost($postUuid);

$imageName = null;

if ($request->hasFile('image')) {
if ($post->image) {
$this->postService->deleteImage(auth()->user()->uuid . DS . $post->image);
Expand All @@ -112,11 +105,11 @@ class PostManagementController extends BaseController
auth()->user()->uuid,
slugify($request->get('title'))
);

$postData['image'] = $imageName;
}

$post = $this->postService->updatePost($postUuid, $postData);
$postDto = PostDTO::fromRequest($request, null, $imageName);

$post = $this->postService->updatePost($postUuid, $postDto);

$response->json([
'status' => 'success',
Expand Down Expand Up @@ -161,11 +154,14 @@ class PostManagementController extends BaseController
$this->postService->deleteImage(auth()->user()->uuid . DS . $post->image);
}

$this->postService->updatePost($postUuid, [
'title' => $post->title,
'content' => $post->content,
'image' => '',
]);
$postDto = new PostDTO(
$post->title,
$post->content,
null,
''
);

$this->postService->updatePost($postUuid, $postDto);

$response->json([
'status' => 'success',
Expand Down
92 changes: 92 additions & 0 deletions src/Module/Templates/DemoApi/src/DTOs/CommentDTO.php.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<?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 3.0.0
*/

namespace {{MODULE_NAMESPACE}}\DTOs;

use Quantum\Http\Request;

/**
* Class CommentDTO
* @package {{MODULE_NAMESPACE}}\DTOs
*/
class CommentDTO
{
/**
* @var string
*/
private string $postUuid;

/**
* @var string
*/
private string $userUuid;

/**
* @var string
*/
private string $content;

/**
* @param string $postUuid
* @param string $userUuid
* @param string $content
*/
public function __construct(
string $postUuid,
string $userUuid,
string $content
) {
$this->postUuid = $postUuid;
$this->userUuid = $userUuid;
$this->content = $content;
}

/**
* @param Request $request
* @param string $postUuid
* @param string $userUuid
* @return self
*/
public static function fromRequest(Request $request, string $postUuid, string $userUuid): self
{
return new self($postUuid, $userUuid, trim((string)$request->get('content')));
}

public function getPostUuid(): string
{
return $this->postUuid;
}

public function getUserUuid(): string
{
return $this->userUuid;
}

public function getContent(): string
{
return $this->content;
}

/**
* @return array
*/
public function toArray(): array
{
return [
'post_uuid' => $this->postUuid,
'user_uuid' => $this->userUuid,
'content' => $this->content,
];
}
}
113 changes: 113 additions & 0 deletions src/Module/Templates/DemoApi/src/DTOs/PostDTO.php.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<?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 3.0.0
*/

namespace {{MODULE_NAMESPACE}}\DTOs;

use Quantum\Http\Request;

/**
* Class PostDTO
* @package {{MODULE_NAMESPACE}}\DTOs
*/
class PostDTO
{
/**
* @var string
*/
private string $title;

/**
* @var string
*/
private string $content;

/**
* @var string|null
*/
private ?string $userUuid;

/**
* @var string|null
*/
private ?string $image;

/**
* @param string $title
* @param string $content
* @param string|null $userUuid
* @param string|null $image
*/
public function __construct(
string $title,
string $content,
?string $userUuid = null,
?string $image = null
) {
$this->title = $title;
$this->content = $content;
$this->userUuid = $userUuid;
$this->image = $image;
}

/**
* @param Request $request
* @param string|null $userUuid
* @param string|null $image
* @return self
*/
public static function fromRequest(Request $request, ?string $userUuid = null, ?string $image = null): self
{
return new self(
$request->get('title', null, true),
$request->get('content', null, true),
$userUuid,
$image
);
}

public function getTitle(): string
{
return $this->title;
}

public function getContent(): string
{
return $this->content;
}

public function getUserUuid(): ?string
{
return $this->userUuid;
}

public function getImage(): ?string
{
return $this->image;
}

/**
* @return array
*/
public function toArray(): array
{
return array_filter([
'user_uuid' => $this->userUuid,
'title' => $this->title,
'content' => $this->content,
'image' => $this->image,
], function ($value) {
return $value !== null;
});
}
}
Loading
Loading