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
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@ npm-debug.log
vagrant-credentials.rb
ubuntu-bionic-18.04-cloudimg-console.log
.phpunit.result.cache
code/public/assets/

code/.laravel
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,5 @@

namespace App\Athenia\Contracts\Services\Messaging;

use App\Models\Messaging\Message;

interface SendEmailServiceContract extends BaseMessageSendingServiceContract
{
/**
* Used when there is no to set on the message
*
* @param Message $message
* @return void
*/
public function sendDirectMessage(Message $message);
}
{}
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@ public function allowedExpands(): array
{
return [
'collectionItemCategories',
'collectionItemCategories.category',
'item',
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,7 @@ public function handle($request, Closure $next)
if ($filters = $request->query('filter')) {
if (is_array($filters)) {
foreach ($filters as $key => $value) {
if (is_array($value)) {
foreach ($value as $individualFilter) {
$cleanedFilter = $this->processQueryEntry($cleanedFilter, $key, $individualFilter);
}
} else {
$cleanedFilter = $this->processQueryEntry($cleanedFilter, $key, $value);
}
$cleanedFilter = $this->processQueryEntry($cleanedFilter, $key, $value);
}
}
}
Expand All @@ -62,11 +56,14 @@ public function handle($request, Closure $next)
if ($search = $request->query('search')) {
if (is_array($search)) {
foreach ($search as $key => $searchTermContainer) {

if (is_array($searchTermContainer)) {

foreach ($searchTermContainer as $individualSearch) {
$cleanedSearch = $this->processQueryEntry($cleanedSearch, $key, $individualSearch);
}
} else {

$cleanedSearch = $this->processQueryEntry($cleanedSearch, $key, $searchTermContainer);
}
}
Expand Down Expand Up @@ -113,6 +110,7 @@ private function processQueryEntry($currentQuery, $key, $value): array

$currentQuery[] = [$key, $searchType, $searchTerm];
} else {

$searchTerm = $parts[1];

switch ($parts[0]) {
Expand Down
19 changes: 6 additions & 13 deletions code/app/Athenia/Listeners/Messaging/MessageCreatedListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
use App\Athenia\Contracts\Repositories\Messaging\MessageRepositoryContract;
use App\Athenia\Contracts\Services\Messaging\BaseMessageSendingServiceContract;
use App\Athenia\Contracts\Services\Messaging\MessageSendingSelectionServiceContract;
use App\Athenia\Contracts\Services\Messaging\SendEmailServiceContract;
use App\Athenia\Events\Messaging\MessageCreatedEvent;
use App\Athenia\Events\Messaging\MessageSentEvent;
use App\Models\Messaging\Message;
Expand Down Expand Up @@ -57,22 +56,16 @@ public function handle(MessageCreatedEvent $event): void
->filter(fn (?BaseMessageSendingServiceContract $maybeService) => $maybeService);
foreach ($availableServices as $service) {

$to = $message->to_id ? $message->to : null;
if (!$to && $message->email && $service instanceof SendEmailServiceContract) {
$service->sendDirectMessage($message);
$to = $message->to;
if ($to instanceof CanReceiveMessageContract) {
$service->sendMessage($to, $message);
$sent = true;
}
else {
if ($to instanceof CanReceiveMessageContract) {
$service->sendMessage($to, $message);
if ($to instanceof HasMessageReceiversContract) {
foreach ($to->messageReceivers($message) as $messageReceiver) {
$service->sendMessage($messageReceiver, $message);
$sent = true;
}
if ($to instanceof HasMessageReceiversContract) {
foreach ($to->messageReceivers($message) as $messageReceiver) {
$service->sendMessage($messageReceiver, $message);
$sent = true;
}
}
}
}

Expand Down
6 changes: 3 additions & 3 deletions code/app/Athenia/Mail/MessageMailer.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ class MessageMailer extends Mailable implements ShouldQueue

/**
* NotificationMailer constructor.
* @param CanReceiveEmailsContract $receiver
* @param Message $message
* @param CanReceiveEmailsContract|null $receiver
*/
public function __construct(private Message $message, private ?CanReceiveEmailsContract $receiver = null)
public function __construct(private CanReceiveEmailsContract $receiver, private Message $message)
{
$this->chain([new MessageSentEvent($message)]);
}
Expand All @@ -37,7 +37,7 @@ public function __construct(private Message $message, private ?CanReceiveEmailsC
public function build()
{
$email = $this->message->email ?? $this->receiver->getEmailAddress();
$name = $this->receiver?->getEmailToName();
$name = $this->receiver->getEmailToName();
$data = $this->message->data;
if (isset ($data['message'])) {
$data['message_content'] = $data['message'];
Expand Down
113 changes: 113 additions & 0 deletions code/app/Athenia/Models/Asset.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<?php
declare(strict_types=1);

namespace App\Athenia\Models;

use App\Athenia\Contracts\Models\HasValidationRulesContract;
use App\Athenia\Models\BaseModelAbstract;
use App\Athenia\Models\Traits\HasValidationRules;
use Eloquent;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Validation\Rule;

/**
* Class Asset
*
* @property int $id
* @property int|null $owner_id
* @property string|null $name
* @property string|null $caption
* @property string $url
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property mixed|null $created_at
* @property mixed|null $updated_at
* @property string|null $owner_type
* @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $owner
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|\App\Models\Asset newModelQuery()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|\App\Models\Asset newQuery()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|\App\Models\Asset query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereCaption($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereOwnerId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereOwnerType($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Asset whereUrl($value)
* @mixin \Eloquent
*/
class Asset extends BaseModelAbstract implements HasValidationRulesContract
{
use HasValidationRules;

/**
* @var string Makes sure to override all children
*/
protected $table = 'assets';

/**
* The user that created this asset
*
* @return BelongsTo
*/
public function owner()
{
return $this->morphTo();
}

/**
* All mime types that can be uploaded to the server for this asset
*
* @return array
*/
protected function getAvailableMimeTypes(): array
{
return [
'image/jpeg',
'image/png',
'image/gif',
];
}

/**
* Build the model validation rules
* @param array $params
* @return array
*/
public function buildModelValidationRules(...$params): array
{
return [
self::VALIDATION_RULES_BASE => [
'file_contents' => [
'string',
],

'name' => [
'nullable',
'string',
],

'caption' => [
'nullable',
'string',
],

// Set in the request object, and not set from the user request
'mime_type' => [
Rule::in($this->getAvailableMimeTypes()),
],
],
self::VALIDATION_RULES_CREATE => [
self::VALIDATION_PREPEND_REQUIRED => [
'file_contents',
],
],
self::VALIDATION_RULES_UPDATE => [
self::VALIDATION_PREPEND_NOT_PRESENT => [
'file_contents',
],
]
];
}
}
78 changes: 78 additions & 0 deletions code/app/Athenia/Models/Category.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?php
declare(strict_types=1);

namespace App\Athenia\Models;

use App\Athenia\Contracts\Models\HasValidationRulesContract;
use App\Athenia\Models\BaseModelAbstract;
use App\Athenia\Models\Traits\HasValidationRules;
use Illuminate\Database\Query\Builder;

/**
* Class Category
*
* @property int $id
* @property string $name
* @property string|null $description
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property \Illuminate\Support\Carbon|null $deleted_at
* @method static \Database\Factories\CategoryFactory factory(...$parameters)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category getAggregateMethod()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category isAppendRelationsCount()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category isLeftJoin()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category isUseTableAlias()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category joinRelations($relations, $leftJoin = null)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category newModelQuery()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Category onlyTrashed()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category orWhereInJoin($column, $values)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category orWhereJoin($column, $operator, $value)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category orWhereNotInJoin($column, $values)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category orderByJoin($column, $direction = 'asc', $aggregateMethod = null)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category query()
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category setAggregateMethod(string $aggregateMethod)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category setAppendRelationsCount(bool $appendRelationsCount)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category setLeftJoin(bool $leftJoin)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category setUseTableAlias(bool $useTableAlias)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereCreatedAt($value)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereDeletedAt($value)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereDescription($value)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereId($value)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereInJoin($column, $values, $boolean = 'and', $not = false)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereJoin($column, $operator, $value, $boolean = 'and')
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereName($value)
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereNotInJoin($column, $values, $boolean = 'and')
* @method static \AdminUI\Laravel\EloquentJoin\EloquentJoinBuilder|Category whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Category withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Category withoutTrashed()
* @mixin \Eloquent
*/
class Category extends BaseModelAbstract implements HasValidationRulesContract
{
use HasValidationRules;

/**
* @param mixed ...$params
* @return array
*/
public function buildModelValidationRules(...$params): array
{
return [
static::VALIDATION_RULES_BASE => [
'name' => [
'string',
],
'description' => [
'nullable',
'string',
],
],
static::VALIDATION_RULES_CREATE => [
static::VALIDATION_PREPEND_REQUIRED => [
'name',
],
],
];
}
}
Loading