Custom portal messages

This commit is contained in:
Hillel Coren 2018-04-09 14:45:38 +03:00
parent b7f2e9b1ab
commit c31221149b
10 changed files with 73 additions and 37 deletions

View File

@ -9,6 +9,7 @@ use App\Models\Traits\GeneratesNumbers;
use App\Models\Traits\PresentsInvoice;
use App\Models\Traits\SendsEmails;
use App\Models\Traits\HasLogo;
use App\Models\Traits\HasCustomMessages;
use Cache;
use Carbon;
use DateTime;
@ -30,6 +31,7 @@ class Account extends Eloquent
use GeneratesNumbers;
use SendsEmails;
use HasLogo;
use HasCustomMessages;
/**
* @var string
@ -280,7 +282,7 @@ class Account extends Eloquent
CUSTOM_MESSAGE_PAID_INVOICE,
CUSTOM_MESSAGE_UNAPPROVED_QUOTE,
//CUSTOM_MESSAGE_APPROVED_QUOTE,
CUSTOM_MESSAGE_UNAPPROVED_PROPOSAL,
//CUSTOM_MESSAGE_UNAPPROVED_PROPOSAL,
//CUSTOM_MESSAGE_APPROVED_PROPOSAL,
];
@ -548,38 +550,6 @@ class Account extends Eloquent
return ! empty($labels->$field) ? $labels->$field : '';
}
/**
* @param $value
*/
public function setCustomMessagesAttribute($data)
{
$fields = [];
if (! is_array($data)) {
$data = json_decode($data);
}
foreach ($data as $key => $value) {
if ($value) {
$fields[$key] = $value;
}
}
$this->attributes['custom_messages'] = count($fields) ? json_encode($fields) : null;
}
public function getCustomMessagesAttribute($value)
{
return json_decode($value ?: '{}');
}
public function customMessage($type)
{
$messages = $this->custom_messages;
return ! empty($messages->$type) ? $messages->$type : '';
}
/**
* @param int $gatewayId
*

View File

@ -6,6 +6,7 @@ use Carbon;
use DB;
use Illuminate\Database\Eloquent\SoftDeletes;
use Laracasts\Presenter\PresentableTrait;
use App\Models\Traits\HasCustomMessages;
use Utils;
/**
@ -15,6 +16,7 @@ class Client extends EntityModel
{
use PresentableTrait;
use SoftDeletes;
use HasCustomMessages;
/**
* @var string
@ -61,6 +63,7 @@ class Client extends EntityModel
'shipping_country_id',
'show_tasks_in_portal',
'send_reminders',
'custom_messages',
];
/**

View File

@ -0,0 +1,49 @@
<?php
namespace App\Models\Traits;
/**
* Class HasCustomMessages.
*/
trait HasCustomMessages
{
/**
* @param $value
*/
public function setCustomMessagesAttribute($data)
{
$fields = [];
if (! is_array($data)) {
$data = json_decode($data);
}
foreach ($data as $key => $value) {
if ($value) {
$fields[$key] = $value;
}
}
$this->attributes['custom_messages'] = count($fields) ? json_encode($fields) : null;
}
public function getCustomMessagesAttribute($value)
{
return json_decode($value ?: '{}');
}
public function customMessage($type)
{
$messages = $this->custom_messages;
if (! empty($messages->$type)) {
return $messages->$type;
}
if ($this->account) {
return $this->account->customMessage($type);
} else {
return '';
}
}
}

View File

@ -155,6 +155,7 @@ class ClientTransformer extends EntityTransformer
'show_tasks_in_portal' => (bool) $client->show_tasks_in_portal,
'send_reminders' => (bool) $client->send_reminders,
'credit_number_counter' => (int) $client->credit_number_counter,
'custom_messages' => json_encode($client->custom_messages),
]);
}
}

View File

@ -82,6 +82,10 @@ class AddMoreCustomFields extends Migration
$table->mediumText('custom_messages')->nullable();
});
Schema::table('clients', function ($table) {
$table->mediumText('custom_messages')->nullable();
});
Schema::table('tasks', function ($table) {
$table->text('custom_value1')->nullable();
$table->text('custom_value2')->nullable();

View File

@ -59,7 +59,7 @@
<a href="#navigation" aria-controls="navigation" role="tab" data-toggle="tab">{{ trans('texts.navigation') }}</a>
</li>
<li role="presentation">
<a href="#messages" aria-controls="navigation" role="tab" data-toggle="tab">{{ trans('texts.messages') }}</a>
<a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">{{ trans('texts.messages') }}</a>
</li>
<li role="presentation">
<a href="#custom_css" aria-controls="custom_css" role="tab" data-toggle="tab">{{ trans('texts.custom_css') }}</a>

View File

@ -194,6 +194,9 @@
</li>
<li role="presentation">
<a href="#notes" aria-controls="notes" role="tab" data-toggle="tab">{{ trans('texts.notes') }}</a>
</li>
<li role="presentation">
<a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">{{ trans('texts.messages') }}</a>
</li>
<li role="presentation">
<a href="#classify" aria-controls="classify" role="tab" data-toggle="tab">{{ trans('texts.classify') }}</a>
@ -232,6 +235,12 @@
{!! Former::textarea('public_notes')->rows(6) !!}
{!! Former::textarea('private_notes')->rows(6) !!}
</div>
<div role="tabpanel" class="tab-pane" id="messages">
@foreach (App\Models\Account::$customMessageTypes as $type)
{!! Former::textarea('custom_messages[' . $type . ']')
->label($type) !!}
@endforeach
</div>
<div role="tabpanel" class="tab-pane" id="classify">
{!! Former::select('size_id')->addOption('','')
->fromQuery($sizes, 'name', 'id') !!}

View File

@ -276,7 +276,7 @@
<div class="container main-container">
@if ($message = $account->customMessage(CUSTOM_MESSAGE_DASHBOARD))
@if ($message = $client->customMessage(CUSTOM_MESSAGE_DASHBOARD))
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
@endif

View File

@ -24,7 +24,7 @@
</script>
<div class="container" style="padding: 20px;">
@if ($message = $account->customMessage($proposal->getCustomMessageType()))
@if ($message = $proposal->invoice->client->customMessage($proposal->getCustomMessageType()))
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
@endif

View File

@ -152,7 +152,7 @@
<div class="container">
@if ($message = $account->customMessage($invoice->getCustomMessageType()))
@if ($message = $invoice->client->customMessage($invoice->getCustomMessageType()))
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
@endif