mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
Merge branch 'honey-trap' of gitlab.com:CIEFWorldwideSdnBhd/exchange-2.0
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\General\Eloquent\Filters;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class ReferenceLike implements Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Builder $builder
|
||||
* @param $value
|
||||
* @return Builder|mixed
|
||||
*/
|
||||
public static function apply(Builder $builder, $value)
|
||||
{
|
||||
return $builder->where('reference', 'LIKE', '%'.$value.'%');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\General\Eloquent\Filters;
|
||||
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class WhereHasSeasonalSegment implements Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Builder $builder
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
public static function apply(Builder $builder, $value)
|
||||
{
|
||||
return $builder->whereHas('seasonalSegments');
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,15 @@
|
||||
|
||||
namespace App\Classes\Modules\Companies\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\Exceptions\MalformedRequestException;
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Companies\Processors\AssignSegmentProcessor;
|
||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||
use App\Classes\Modules\Segments\DataTransferObjects\SeasonalSegmentObject;
|
||||
use App\Classes\Modules\Segments\Services\CreatesSeasonalSegment;
|
||||
use App\Http\Resources\CompanyResource;
|
||||
use App\Models\SeasonalSegment;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -29,15 +33,20 @@ class AssignCompanyToSegmentLogic extends AbstractControllerLogic
|
||||
/** @var AssignSegmentProcessor */
|
||||
private $assignCompanyToSegmentProcessor;
|
||||
|
||||
/** @var CreatesSeasonalSegment */
|
||||
private $createsSeasonalSegment;
|
||||
|
||||
/**
|
||||
* AssignCompanyToSegmentLogic constructor.
|
||||
* @param FetchesCompany $fetchesCompany
|
||||
* @param AssignSegmentProcessor $assignCompanyToSegmentProcessor
|
||||
* @param CreatesSeasonalSegment $createsSeasonalSegment
|
||||
*/
|
||||
public function __construct(FetchesCompany $fetchesCompany, AssignSegmentProcessor $assignCompanyToSegmentProcessor)
|
||||
public function __construct(FetchesCompany $fetchesCompany, AssignSegmentProcessor $assignCompanyToSegmentProcessor, CreatesSeasonalSegment $createsSeasonalSegment)
|
||||
{
|
||||
$this->fetchesCompany = $fetchesCompany;
|
||||
$this->assignCompanyToSegmentProcessor = $assignCompanyToSegmentProcessor;
|
||||
$this->createsSeasonalSegment = $createsSeasonalSegment;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -54,6 +63,24 @@ class AssignCompanyToSegmentLogic extends AbstractControllerLogic
|
||||
|
||||
$this->assignCompanyToSegmentProcessor->execute($company, $request->input('segment_id'));
|
||||
|
||||
if ($request->input('ending_on')) {
|
||||
|
||||
if ($request->input('ending_on') && Carbon::parse($request->input('ending_on')) <= Carbon::now()) {
|
||||
throw new MalformedRequestException('The Ending Date must be equal to or later than today\'s date.');
|
||||
}
|
||||
|
||||
// todo-new
|
||||
// if (count($company->seasonalSegments)) {
|
||||
// throw new MalformedRequestException('System error. Please contact admin.');
|
||||
// }
|
||||
|
||||
$start_date = $request->input('starting_on') ? $request->input('starting_on') : Carbon::now();
|
||||
|
||||
$seasonalSegmentObject = new SeasonalSegmentObject($company->id, $request->input('segment_id'), $start_date, $request->input('ending_on') ?? null);
|
||||
|
||||
$this->createsSeasonalSegment->execute($seasonalSegmentObject);
|
||||
}
|
||||
|
||||
return $this->resourceResponse(new CompanyResource($company));
|
||||
}
|
||||
}
|
||||
@@ -53,11 +53,12 @@ class RemoveCompanyFromSegmentLogic extends AbstractControllerLogic
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
|
||||
$company = $this->fetchesCompany->execute(['id' => $request->route('id')]);
|
||||
|
||||
$segment = $this->fetchesSegment->execute(['id' => $request->route('segment_id')]);
|
||||
|
||||
$company->seasonalSegments()->where('segment_id', $request->route('segment_id'))->delete();
|
||||
|
||||
$this->removesCompanyFromSegment->execute($company, $segment);
|
||||
|
||||
return $this->resourceResponse(new CompanyResource($company));
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Segments\DataTransferObjects;
|
||||
|
||||
use App\Classes\General\Interfaces\DataTransferObject;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
||||
|
||||
class SeasonalSegmentObject implements DataTransferObject
|
||||
{
|
||||
/** @var int */
|
||||
private $companyId;
|
||||
|
||||
/** @var int */
|
||||
private $segmentId;
|
||||
|
||||
/** @var string */
|
||||
private $starting_on;
|
||||
|
||||
/** @var string */
|
||||
private $ending_on;
|
||||
|
||||
/** @var int */
|
||||
private $status;
|
||||
|
||||
/**
|
||||
* SeasonalSegmentObject constructor.
|
||||
* @param int $companyId
|
||||
* @param int $segmentId
|
||||
* @param string $starting_on
|
||||
* @param string $ending_on
|
||||
*/
|
||||
public function __construct(int $companyId, int $segmentId, string $starting_on, ?string $ending_on = null, ?int $status = ApprovalStatus::APPROVED)
|
||||
{
|
||||
$this->companyId = $companyId;
|
||||
$this->segmentId = $segmentId;
|
||||
$this->starting_on = $starting_on;
|
||||
$this->ending_on = $ending_on;
|
||||
$this->status = $status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCompanyId(): int
|
||||
{
|
||||
return $this->companyId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getSegmentId(): int
|
||||
{
|
||||
return $this->segmentId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getStartingOn(): string
|
||||
{
|
||||
return $this->starting_on;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getEndingOn(): ?string
|
||||
{
|
||||
return $this->ending_on;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Segments\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Segments\DataTransferObjects\SeasonalSegmentObject;
|
||||
use App\Models\SeasonalSegment;
|
||||
use App\Models\Company;
|
||||
|
||||
class CreatesSeasonalSegment extends AbstractUpdateRecord
|
||||
{
|
||||
/**
|
||||
* @param SeasonalSegmentObject $object
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(SeasonalSegmentObject $object) {
|
||||
$model = new SeasonalSegment();
|
||||
$model->company_id = $object->getCompanyId();
|
||||
$model->segment_id = $object->getSegmentId();
|
||||
$model->starting_on = $object->getStartingOn();
|
||||
$model->ending_on = $object->getEndingOn();
|
||||
|
||||
return $this->handler($model);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\SeasonalSegment;
|
||||
use Illuminate\Console\Command;
|
||||
use Carbon\Carbon;
|
||||
use App\Classes\Modules\Companies\Services\RemovesCompanyFromSegment;
|
||||
|
||||
class RemoveSeasonalSegmentCompany extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'seasonalSegmantCompany:remove';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Perform soft delete on Seasonal Segment Company';
|
||||
|
||||
/** @var RemovesCompanyFromSegment */
|
||||
private $removesCompanyFromSegment;
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(RemovesCompanyFromSegment $removesCompanyFromSegment)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->removesCompanyFromSegment = $removesCompanyFromSegment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$seasonalSegment = SeasonalSegment::where('ending_on', '<=', Carbon::today())->get();
|
||||
|
||||
if (count($seasonalSegment)){
|
||||
foreach ($seasonalSegment as $seasonalSegmentCompany) {
|
||||
$this->removesCompanyFromSegment->execute($seasonalSegmentCompany->company, $seasonalSegmentCompany->segment);
|
||||
$seasonalSegmentCompany->delete();
|
||||
$this->info(Carbon::now() . ' : Deleted id: ' . $seasonalSegmentCompany->id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,10 @@ class Kernel extends ConsoleKernel
|
||||
// $schedule->command('inspire')->hourly();
|
||||
$schedule->command('mail:EmailDoToVTCommand')->dailyAt('10:00')->withoutOverlapping();
|
||||
|
||||
$schedule->command('seasonalSegmantCompany:remove')
|
||||
->dailyAt('01:00')
|
||||
->appendOutputTo(storage_path().'/logs/soft-delete-seasonal-segmant-company.log')
|
||||
->withoutOverlapping();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -61,6 +61,7 @@ class CompanyResource extends JsonResource
|
||||
'default' => new BankResource($this->banks->where('type', BankAccountType::EXTERNAL)->where('default', true)->first())
|
||||
],
|
||||
'segments' => SegmentResource::collection($this->segments),
|
||||
'seasonalSegment' => $this->whenLoaded('seasonalSegments', SeasonalSegmentResource::collection($this->seasonalSegments)),
|
||||
'services' => (new FetchesCompanyServices())->getServices($this->servicesConfigurations()),
|
||||
'wallet' => $this->whenLoaded('wallets', new WalletResource($this->wallets()->with('transactions')->first()), new WalletResource($this->wallets()->first())),
|
||||
'created_at' => $this->created_at->format('d-m-Y'),
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Classes\Modules\Companies\Services\FetchesCompanyServices;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\BankAccountType;
|
||||
use App\Classes\ValueObjects\Constants\BusinessType;
|
||||
use App\Classes\ValueObjects\Constants\DocumentType;
|
||||
use App\Classes\ValueObjects\Constants\RoleTypes;
|
||||
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
use App\Models\Currency;
|
||||
use App\Models\SegmentConstant;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class SeasonalSegmentResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'segment_name' => ucwords($this->segment->name),
|
||||
'ending_on' => $this->ending_on->format('d-m-Y'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -62,6 +62,14 @@ class Company extends AbstractModel implements Documentable
|
||||
return $this->belongsToMany(Segment::class, (new SegmentCompany())->getTable(), 'company_id', 'segment_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return belongsToMany
|
||||
*/
|
||||
public function seasonalSegments()
|
||||
{
|
||||
return $this->hasMany(SeasonalSegment::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return belongsToMany
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
/**
|
||||
* Class SeasonalSegment
|
||||
* @package App\Models
|
||||
*
|
||||
* @property \App\Models\Company company_id
|
||||
* @property \App\Models\Bank transferable_bank_id
|
||||
* @property string marking
|
||||
* @property string reference
|
||||
* @property float fix_amount
|
||||
* @property int convertible_currency_id
|
||||
* @property int conversion_currency_id
|
||||
*/
|
||||
class SeasonalSegment extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'seasonal_segment';
|
||||
|
||||
protected $dates = [
|
||||
'starting_on',
|
||||
'ending_on',
|
||||
'deleted_at',
|
||||
];
|
||||
|
||||
/**
|
||||
* @return BelongsTo
|
||||
*/
|
||||
public function company(): BelongsTo
|
||||
{
|
||||
return $this->BelongsTo(Company::class, 'company_id', 'id');
|
||||
}
|
||||
|
||||
public function segment()
|
||||
{
|
||||
return $this->belongsTo(Segment::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class SeasonalSegmentTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('seasonal_segment', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('company_id')->unsigned();
|
||||
$table->string('status')->default(ApprovalStatus::APPROVED);
|
||||
$table->foreignId('segment_id')->unsigned();
|
||||
$table->timestamp('starting_on')->nullable();
|
||||
$table->timestamp('ending_on')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->timestamps();
|
||||
|
||||
$table->foreign('segment_id')->references('id')->on('segments');
|
||||
$table->foreign('company_id')->references('id')->on('companies');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<div class="row m-b-15 parentContainer">
|
||||
<div class="col">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto p-r-0">
|
||||
<div class="padding-5 bg-master-lightest">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
|
||||
width="30" height="30"
|
||||
viewBox="0 0 172 172"
|
||||
style=" fill:#000000;"><defs><linearGradient x1="86" y1="67.85938" x2="86" y2="98.7495" gradientUnits="userSpaceOnUse" id="color-1_44784_gr1"><stop offset="0" stop-color="#4ec9ff"></stop><stop offset="1" stop-color="#2bffe6"></stop></linearGradient><linearGradient x1="86" y1="13.77344" x2="86" y2="157.88525" gradientUnits="userSpaceOnUse" id="color-2_44784_gr2"><stop offset="0" stop-color="#009add"></stop><stop offset="1" stop-color="#00baa4"></stop></linearGradient></defs><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,172v-172h172v172z" fill="none"></path><g><path d="M72.5625,83.3125c0,-7.42019 6.01731,-13.4375 13.4375,-13.4375c7.42019,0 13.4375,6.01731 13.4375,13.4375c0,7.42019 -6.01731,13.4375 -13.4375,13.4375c-0.91912,0 -1.81944,-0.09137 -2.6875,-0.26875v-10.48125l-10.75,-2.6875" fill="url(#color-1_44784_gr1)"></path><path d="M134.375,48.375h-5.375c0,-5.92862 -4.82137,-10.75 -10.75,-10.75c-1.96725,0 -3.78669,0.56975 -5.375,1.49425v-4.18175c0,-7.40944 -6.02806,-13.4375 -13.4375,-13.4375c-3.43731,0 -6.54675,1.33569 -8.92519,3.46687c-1.88663,-5.14119 -6.78594,-8.84187 -12.57481,-8.84187c-6.58169,0 -12.04806,4.76494 -13.19294,11.02144c-2.29513,-1.82481 -5.15731,-2.95894 -8.30706,-2.95894c-7.40944,0 -13.4375,6.02806 -13.4375,13.4375v10.75h-5.375c-4.44512,0 -8.0625,3.61738 -8.0625,8.0625v53.75c0,4.44512 3.61738,8.0625 8.0625,8.0625h5.59c0.62619,4.33762 2.72781,8.19419 5.78887,11.051c-3.44537,0.91644 -6.00387,4.03125 -6.00387,7.7615v10.75c0,4.44512 3.61738,8.0625 8.0625,8.0625h69.875c4.44512,0 8.0625,-3.61738 8.0625,-8.0625v-10.75c0,-3.73025 -2.5585,-6.84506 -6.00119,-7.7615c3.06106,-2.85681 5.16269,-6.71337 5.78887,-11.051h5.58731c4.44512,0 8.0625,-3.61738 8.0625,-8.0625v-53.75c0,-4.44512 -3.61737,-8.0625 -8.0625,-8.0625zM134.375,53.75c1.4835,0 2.6875,1.204 2.6875,2.6875v10.75h-2.6875c-5.92863,0 -10.75,-4.82138 -10.75,-10.75v-2.6875zM118.25,110.1875v2.6875h-34.77625c-1.634,-3.27875 -3.98825,-6.14094 -6.8585,-8.36619c5.36694,-1.23356 9.38475,-6.05225 9.38475,-11.79006c0,-6.66769 -5.42606,-12.09375 -12.09375,-12.09375h-17.46875c-7.40944,0 -13.4375,6.02806 -13.4375,13.4375v0.93525c-1.70925,-0.60469 -3.51525,-0.93525 -5.375,-0.93525h-2.6875v-21.5h2.6875c8.89294,0 16.125,-7.23206 16.125,-16.125v-2.6875h64.5v2.6875c0,8.89294 7.23206,16.125 16.125,16.125h2.6875v21.5h-2.6875c-8.89294,0 -16.125,7.23206 -16.125,16.125zM118.25,43c2.96431,0 5.375,2.41069 5.375,5.375h-10.75c0,-2.96431 2.41069,-5.375 5.375,-5.375zM99.4375,26.875c4.44512,0 8.0625,3.61737 8.0625,8.0625v13.4375h-16.125v-13.4375c0,-4.44513 3.61737,-8.0625 8.0625,-8.0625zM69.875,29.5625c0,-4.44513 3.61737,-8.0625 8.0625,-8.0625c4.44513,0 8.0625,3.61737 8.0625,8.0625v18.8125h-16.125v-10.75zM48.375,37.625c0,-4.44512 3.61738,-8.0625 8.0625,-8.0625c4.44512,0 8.0625,3.61738 8.0625,8.0625v10.75h-16.125zM37.625,53.75h10.75v2.6875c0,5.92862 -4.82138,10.75 -10.75,10.75h-2.6875v-10.75c0,-1.4835 1.204,-2.6875 2.6875,-2.6875zM34.9375,110.1875v-10.75h2.6875c1.91619,0 3.74369,0.52138 5.375,1.46738v11.97012h-5.375c-1.4835,0 -2.6875,-1.204 -2.6875,-2.6875zM120.9375,134.375c1.4835,0 2.6875,1.204 2.6875,2.6875v2.6875h-10.75v5.375h10.75v2.6875c0,1.4835 -1.204,2.6875 -2.6875,2.6875h-69.875c-1.4835,0 -2.6875,-1.204 -2.6875,-2.6875v-10.75c0,-1.4835 1.204,-2.6875 2.6875,-2.6875h10.75h5.375zM110.1875,129h-43h-5.375c-7.40944,0 -13.4375,-6.02806 -13.4375,-13.4375v-2.6875v-18.8125c0,-4.44512 3.61738,-8.0625 8.0625,-8.0625h17.46875c3.70606,0 6.71875,3.01269 6.71875,6.71875c0,3.70606 -3.01269,6.71875 -6.71875,6.71875h-14.78125v5.375h2.6875c10.37106,0 18.8125,8.44144 18.8125,18.8125h5.375c0,-1.849 -0.22306,-3.64425 -0.61544,-5.375h37.969c-1.24969,6.12481 -6.67575,10.75 -13.16606,10.75zM134.375,112.875h-10.75v-2.6875c0,-5.92863 4.82137,-10.75 10.75,-10.75h2.6875v10.75c0,1.4835 -1.204,2.6875 -2.6875,2.6875z" fill="url(#color-2_44784_gr2)"></path></g></g></svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col-auto p-r-10">
|
||||
<div class="font-heading all-caps fs-8 muted">Name</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="font-heading all-caps fs-10">{{item.name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col-auto p-r-10">
|
||||
<div class="font-heading all-caps fs-8 muted">Marking</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="font-heading all-caps fs-10"><a :href="route('customer.profile', item.reference)">{{ item.reference }}</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="font-heading all-caps fs-8 muted">Segment Name</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="font-heading all-caps fs-8 muted">Ending On</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" v-for="segment in item.seasonalSegment">
|
||||
<div class="col">
|
||||
<div class="font-heading all-caps fs-10">{{ segment.segment_name }}</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="font-heading all-caps fs-10">{{ segment.ending_on }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import componentHandler from '../../../general/mixins/componentHandler';
|
||||
export default {
|
||||
mixins: [componentHandler]
|
||||
}
|
||||
</script>
|
||||
@@ -23,6 +23,23 @@
|
||||
</validation-wrapper-component>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="row m-b-15">
|
||||
<div class="col">
|
||||
<validation-wrapper-component :validator="$v.parameters.starting_on">
|
||||
<label>Start Date</label>
|
||||
<date-picker-component :parameters="parameters" v-model.lazy="parameters.starting_on"></date-picker-component>
|
||||
</validation-wrapper-component>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="row m-b-15">
|
||||
<div class="col">
|
||||
<validation-wrapper-component :validator="$v.parameters.ending_on">
|
||||
<label>End Date</label>
|
||||
<date-picker-component :parameters="parameters" v-model.lazy="parameters.ending_on"></date-picker-component>
|
||||
</validation-wrapper-component>
|
||||
<p class="fs-13 d-block text-center m-t-10 m-b-0">Please leave End Date <b class="text-uppercase">empty</b> if the end date is not confirmed or there is no end date.</p>
|
||||
</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">Not Now</div>
|
||||
@@ -49,7 +66,9 @@
|
||||
data(){
|
||||
return {
|
||||
parameters: {
|
||||
segment_id: ''
|
||||
segment_id: '',
|
||||
// starting_on: '',
|
||||
ending_on: '',
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -57,7 +76,9 @@
|
||||
parameters: {
|
||||
segment_id: {
|
||||
required
|
||||
}
|
||||
},
|
||||
// starting_on: {},
|
||||
ending_on: {},
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
@@ -38,7 +38,11 @@
|
||||
type: Number
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
successHandler(){
|
||||
window.location.reload();
|
||||
}
|
||||
},
|
||||
mixins: [componentHandler, ModalFormHandler]
|
||||
}
|
||||
</script>
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
<template>
|
||||
<div class="row parentContainer" @keyup.enter="search">
|
||||
<div class="col">
|
||||
<div class="row m-b-15">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col p-r-0">
|
||||
<div class="form-group no-margin form-group-default b-rad-none">
|
||||
<!-- <label class="text-primary">Marking</label> -->
|
||||
<label class="font-heading all-caps fs-8 muted">Marking</label>
|
||||
<input type="text" class="form-control" v-model="marking" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto p-l-0 p-r-0">
|
||||
<div class="btn btn-primary b-rad-none" @click="search">
|
||||
<i class="fa fa-search lh-40"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto p-l-0">
|
||||
<div class="btn btn-secondary b-rad-none" @click="reset">
|
||||
<i class="fa fa-remove lh-40"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<list-component :key="currentKey" section="seasonalSegment" :endpoint="route('api.company.list')" :options="options">
|
||||
<template slot="list" slot-scope="{data}">
|
||||
<seasonal-segment-component :data="data"></seasonal-segment-component>
|
||||
</template>
|
||||
</list-component>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import componentHandler from '../../../general/mixins/componentHandler';
|
||||
export default {
|
||||
data(){
|
||||
return {
|
||||
marking: '',
|
||||
currentKey: 1,
|
||||
options: {'per_page': 5, 'where_has_seasonal_segment': true},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
search() {
|
||||
console.log('sd');
|
||||
this.options['reference_like'] = this.marking;
|
||||
console.log(this.options);
|
||||
this.currentKey+=1;
|
||||
},
|
||||
reset() {
|
||||
this.marking = '';
|
||||
delete(this.options['reference_like']);
|
||||
this.currentKey+=1;
|
||||
},
|
||||
},
|
||||
mixins: [componentHandler]
|
||||
}
|
||||
</script>
|
||||
@@ -54,6 +54,29 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-b-5" v-if="$store.getters.isAdmin">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col bg-master-light tabButton" tab-name="seasonalSegment">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto p-t-10 p-b-10 b-r b-grey">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
|
||||
width="35" height="35"
|
||||
viewBox="0 0 172 172"
|
||||
style=" fill:#000000;"><defs><linearGradient x1="86" y1="97.08594" x2="86" y2="105.31775" gradientUnits="userSpaceOnUse" id="color-1_43991_gr1"><stop offset="0" stop-color="#4ec9ff"></stop><stop offset="1" stop-color="#2bffe6"></stop></linearGradient><linearGradient x1="94.0625" y1="85.83338" x2="94.0625" y2="93.89588" gradientUnits="userSpaceOnUse" id="color-2_43991_gr2"><stop offset="0" stop-color="#4ec9ff"></stop><stop offset="1" stop-color="#2bffe6"></stop></linearGradient><linearGradient x1="77.9375" y1="85.83338" x2="77.9375" y2="93.89588" gradientUnits="userSpaceOnUse" id="color-3_43991_gr3"><stop offset="0" stop-color="#4ec9ff"></stop><stop offset="1" stop-color="#2bffe6"></stop></linearGradient><linearGradient x1="86" y1="28.55469" x2="86" y2="143.10938" gradientUnits="userSpaceOnUse" id="color-4_43991_gr4"><stop offset="0" stop-color="#009add"></stop><stop offset="1" stop-color="#00baa4"></stop></linearGradient></defs><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,172v-172h172v172z" fill="none"></path><g><path d="M77.9375,96.75c0,4.45319 3.60931,8.0625 8.0625,8.0625c4.45319,0 8.0625,-3.60931 8.0625,-8.0625z" fill="url(#color-1_43991_gr1)"></path><path d="M94.0625,86c-2.2264,0 -4.03125,1.80485 -4.03125,4.03125c0,2.2264 1.80485,4.03125 4.03125,4.03125c2.2264,0 4.03125,-1.80485 4.03125,-4.03125c0,-2.2264 -1.80485,-4.03125 -4.03125,-4.03125z" fill="url(#color-2_43991_gr2)"></path><path d="M77.9375,86c-2.2264,0 -4.03125,1.80485 -4.03125,4.03125c0,2.2264 1.80485,4.03125 4.03125,4.03125c2.2264,0 4.03125,-1.80485 4.03125,-4.03125c0,-2.2264 -1.80485,-4.03125 -4.03125,-4.03125z" fill="url(#color-3_43991_gr3)"></path><path d="M147.8125,51.0625h-18.8125v-8.0625c0,-4.44512 -3.61738,-8.0625 -8.0625,-8.0625h-11.2445c-1.11263,-3.12019 -4.06888,-5.375 -7.568,-5.375h-32.25c-3.49912,0 -6.45538,2.25481 -7.568,5.375h-11.2445c-4.44512,0 -8.0625,3.61738 -8.0625,8.0625v8.0625h-18.8125c-4.44513,0 -8.0625,3.61738 -8.0625,8.0625v59.125c0,4.44512 3.61737,8.0625 8.0625,8.0625h18.8125v8.0625c0,4.44512 3.61738,8.0625 8.0625,8.0625h69.875c4.44512,0 8.0625,-3.61738 8.0625,-8.0625v-8.0625h18.8125c4.44512,0 8.0625,-3.61738 8.0625,-8.0625v-59.125c0,-4.44512 -3.61737,-8.0625 -8.0625,-8.0625zM147.8125,56.4375c1.4835,0 2.6875,1.20669 2.6875,2.6875v51.0625h-2.88637c-0.80625,-6.09525 -4.28119,-11.78469 -9.47612,-15.25425c0.99437,-1.87319 1.6125,-3.98019 1.6125,-6.24575v-5.375c0,-6.48763 -4.62519,-11.91638 -10.75,-13.16606v-13.70894zM134.375,88.6875c0,3.49912 -2.25213,6.45538 -5.375,7.568v-20.50831c3.12287,1.11262 5.375,4.06887 5.375,7.568zM134.6545,99.1365c3.913,2.48056 6.62469,6.84506 7.47125,11.051h-13.12575v-8.33394c2.12044,-0.43269 4.02319,-1.41094 5.6545,-2.71706zM67.1875,37.625c0,-1.48081 1.204,-2.6875 2.6875,-2.6875h32.25c1.4835,0 2.6875,1.20669 2.6875,2.6875v2.6875c0,1.48081 -1.204,2.6875 -2.6875,2.6875h-32.25c-1.4835,0 -2.6875,-1.20669 -2.6875,-2.6875zM51.0625,40.3125h10.75c0,4.44512 3.61737,8.0625 8.0625,8.0625h32.25c4.44512,0 8.0625,-3.61738 8.0625,-8.0625h10.75c1.4835,0 2.6875,1.20669 2.6875,2.6875v83.3125h-3.34056c-1.73881,-9.23963 -7.19444,-17.45531 -15.06344,-22.66906c1.44319,-2.88906 2.279,-6.13556 2.279,-9.58094v-10.75c0,-11.85456 -9.64544,-21.5 -21.5,-21.5c-11.85456,0 -21.5,9.64544 -21.5,21.5v10.75c0,3.44537 0.83581,6.69188 2.28169,9.58094c-7.869,5.21375 -13.32463,13.42675 -15.06344,22.66906h-3.34325v-83.3125c0,-1.48081 1.204,-2.6875 2.6875,-2.6875zM102.125,94.0625c0,8.89294 -7.23206,16.125 -16.125,16.125c-8.89294,0 -16.125,-7.23206 -16.125,-16.125v-10.75c0,-8.89294 7.23206,-16.125 16.125,-16.125c8.89294,0 16.125,7.23206 16.125,16.125zM86,115.5625c6.48494,0 12.29531,-2.89981 16.24056,-7.45513c6.39088,4.22744 10.93006,10.77956 12.59363,18.20513h-57.66837c1.66356,-7.42556 6.20275,-13.97769 12.59631,-18.20244c3.94256,4.55531 9.75294,7.45244 16.23787,7.45244zM43,96.2555c-3.12288,-1.11263 -5.375,-4.06888 -5.375,-7.568v-5.375c0,-3.49912 2.25212,-6.45538 5.375,-7.568zM37.32669,99.12306c1.634,1.31419 3.54481,2.29512 5.67331,2.7305v8.33394h-13.18487c0.78475,-4.57412 3.526,-8.63225 7.51156,-11.06444zM24.1875,56.4375h18.8125v13.70894c-6.12481,1.24969 -10.75,6.67575 -10.75,13.16606v5.375c0,2.26287 0.61544,4.36719 1.60981,6.24038c-5.21106,3.44806 -8.686,9.05688 -9.47613,15.25963h-2.88369v-51.0625c0,-1.48081 1.204,-2.6875 2.6875,-2.6875zM24.1875,120.9375c-1.4835,0 -2.6875,-1.20669 -2.6875,-2.6875v-2.6875h21.5v5.375zM120.9375,137.0625h-69.875c-1.4835,0 -2.6875,-1.20669 -2.6875,-2.6875v-2.6875h75.25v2.6875c0,1.48081 -1.204,2.6875 -2.6875,2.6875zM147.8125,120.9375h-18.8125v-5.375h21.5v2.6875c0,1.48081 -1.204,2.6875 -2.6875,2.6875z" fill="url(#color-4_43991_gr4)"></path></g></g></svg>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="fs-12 m-t-5 all-caps m-b-5">Seasonal Segment</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<template v-if="$store.getters.isSuperAdmin">
|
||||
<div class="row m-b-5">
|
||||
<div class="col">
|
||||
@@ -281,6 +304,27 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row tabsContainer hide tabContent" tab-name="seasonalSegment" v-if="$store.getters.isAdmin">
|
||||
<div class="col">
|
||||
<loading-component style="height: 200px; top: 0;" key="1" color="success" v-show="$store.getters.isLoading('labelSection')"></loading-component>
|
||||
<div class="row" v-show="!$store.getters.isLoading('labelSection')">
|
||||
<div class="col">
|
||||
<div class="row p-b-5 m-b-20 b-b b-grey align-items-center parentContainer">
|
||||
<div class="col">
|
||||
<div class="font-heading all-caps fs-10 hint-text">
|
||||
Seasonal Segment
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-b-20">
|
||||
<div class="col">
|
||||
<seasonal-segment-section-component></seasonal-segment-section-component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<template v-if="$store.getters.isSuperAdmin">
|
||||
<div class="row tabsContainer hide tabContent" tab-name="team">
|
||||
<div class="col">
|
||||
|
||||
Reference in New Issue
Block a user