Browse Source

Add subscription Type reference class

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
da280ae74e
  1. 7
      app/Entities/Subscriptions/Subscription.php
  2. 33
      app/Entities/Subscriptions/Type.php
  3. 19
      app/Http/Controllers/SubscriptionsController.php
  4. 1
      resources/lang/id/app.php
  5. 4
      resources/views/subscriptions/create.blade.php
  6. 3
      resources/views/subscriptions/edit.blade.php
  7. 6
      resources/views/subscriptions/index.blade.php
  8. 19
      tests/Unit/Models/SubscriptionTest.php
  9. 38
      tests/Unit/References/SubscriptionTypeTest.php

7
app/Entities/Subscriptions/Subscription.php

@ -63,6 +63,11 @@ class Subscription extends Model
public function getTypeAttribute() public function getTypeAttribute()
{ {
return $this->type_id == 1 ? trans('subscription.types.domain') : trans('subscription.types.hosting');
return Type::getNameById($this->type_id);
}
public function getTypeColorAttribute()
{
return Type::getColorById($this->type_id);
} }
} }

33
app/Entities/Subscriptions/Type.php

@ -0,0 +1,33 @@
<?php
namespace App\Entities\Subscriptions;
use App\Entities\ReferenceAbstract;
class Type extends ReferenceAbstract
{
protected static $lists = [
1 => 'domain',
2 => 'hosting',
];
protected static $colors = [
1 => '#337ab7',
2 => '#4caf50',
];
public static function getNameById($singleId)
{
return trans('subscription.types.'.static::getById($singleId));
}
public static function toArray()
{
$lists = [];
foreach (static::$lists as $key => $value) {
$lists[$key] = trans('subscription.types.'.$value);
}
return $lists;
}
}

19
app/Http/Controllers/SubscriptionsController.php

@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Entities\Subscriptions\Subscription; use App\Entities\Subscriptions\Subscription;
use App\Entities\Subscriptions\SubscriptionsRepository; use App\Entities\Subscriptions\SubscriptionsRepository;
use App\Entities\Subscriptions\Type;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\SubscriptionRequest as FormRequest; use App\Http\Requests\SubscriptionRequest as FormRequest;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -20,7 +21,11 @@ class SubscriptionsController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
$subscriptions = $this->repo->getSubscriptions($request->get('q'), $request->get('vendor_id'));
$subscriptions = $this->repo->getSubscriptions(
$request->get('q'),
$request->get('vendor_id')
);
return view('subscriptions.index', compact('subscriptions')); return view('subscriptions.index', compact('subscriptions'));
} }
@ -29,9 +34,7 @@ class SubscriptionsController extends Controller
$projects = $this->repo->getProjectsList(); $projects = $this->repo->getProjectsList();
$vendors = $this->repo->getVendorsList(); $vendors = $this->repo->getVendorsList();
$subscriptionTypes = $this->getSubscriptionTypes();
return view('subscriptions.create', compact('projects', 'vendors', 'subscriptionTypes'));
return view('subscriptions.create', compact('projects', 'vendors'));
} }
public function store(FormRequest $subscriptionCreateRequest) public function store(FormRequest $subscriptionCreateRequest)
@ -53,11 +56,10 @@ class SubscriptionsController extends Controller
{ {
$projects = $this->repo->getProjectsList(); $projects = $this->repo->getProjectsList();
$vendors = $this->repo->getVendorsList(); $vendors = $this->repo->getVendorsList();
$subscriptionTypes = $this->getSubscriptionTypes();
$pageTitle = $this->getPageTitle('edit', $subscription); $pageTitle = $this->getPageTitle('edit', $subscription);
return view('subscriptions.edit', compact('subscription', 'projects', 'vendors', 'subscriptionTypes', 'pageTitle'));
return view('subscriptions.edit', compact('subscription', 'projects', 'vendors', 'pageTitle'));
} }
public function update(FormRequest $subscriptionUpdateRequest, Subscription $subscription) public function update(FormRequest $subscriptionUpdateRequest, Subscription $subscription)
@ -78,10 +80,7 @@ class SubscriptionsController extends Controller
private function getSubscriptionTypes() private function getSubscriptionTypes()
{ {
return [
1 => trans('subscription.types.domain'),
2 => trans('subscription.types.hosting'),
];
return Type::toArray();
} }
private function getPageTitle($pageType, $subscription) private function getPageTitle($pageType, $subscription)

1
resources/lang/id/app.php

@ -13,6 +13,7 @@ return [
'in_active' => 'Non Aktif', 'in_active' => 'Non Aktif',
'show_detail_title' => 'Lihat detail :type :name', 'show_detail_title' => 'Lihat detail :type :name',
'status' => 'Status', 'status' => 'Status',
'type' => 'Jenis',
'total' => 'Total', 'total' => 'Total',
'count' => 'Jumlah', 'count' => 'Jumlah',

4
resources/views/subscriptions/create.blade.php

@ -3,6 +3,8 @@
@section('title', trans('subscription.create')) @section('title', trans('subscription.create'))
@section('content') @section('content')
@inject('subscriptionTypes', 'App\Entities\Subscriptions\Type')
<ul class="breadcrumb hidden-print"> <ul class="breadcrumb hidden-print">
<li>{{ link_to_route('subscriptions.index',trans('subscription.subscriptions')) }}</li> <li>{{ link_to_route('subscriptions.index',trans('subscription.subscriptions')) }}</li>
<li class="active">{{ trans('subscription.create') }}</li> <li class="active">{{ trans('subscription.create') }}</li>
@ -32,7 +34,7 @@
</div> </div>
{!! FormField::select('project_id', $projects, ['label' => trans('subscription.project'), 'value' => Request::get('project_id')]) !!} {!! FormField::select('project_id', $projects, ['label' => trans('subscription.project'), 'value' => Request::get('project_id')]) !!}
{!! FormField::select('vendor_id', $vendors, ['label' => trans('subscription.vendor'), 'value' => Request::get('vendor_id')]) !!} {!! FormField::select('vendor_id', $vendors, ['label' => trans('subscription.vendor'), 'value' => Request::get('vendor_id')]) !!}
{!! FormField::radios('type_id', $subscriptionTypes, ['label' => trans('subscription.type'), 'value' => Request::get('type_id')]) !!}
{!! FormField::radios('type_id', $subscriptionTypes::toArray(), ['label' => trans('subscription.type'), 'value' => Request::get('type_id')]) !!}
{!! FormField::textarea('notes', ['label' => trans('subscription.notes')]) !!} {!! FormField::textarea('notes', ['label' => trans('subscription.notes')]) !!}
</div> </div>

3
resources/views/subscriptions/edit.blade.php

@ -3,6 +3,7 @@
@section('title', $pageTitle) @section('title', $pageTitle)
@section('content') @section('content')
@inject('subscriptionTypes', 'App\Entities\Subscriptions\Type')
@include('subscriptions.partials.breadcrumb', ['title' => $pageTitle]) @include('subscriptions.partials.breadcrumb', ['title' => $pageTitle])
@includeWhen(request('action') == 'delete', 'subscriptions.partials.delete') @includeWhen(request('action') == 'delete', 'subscriptions.partials.delete')
@ -15,7 +16,7 @@
<div class="panel-heading"><h3 class="panel-title">{{ $pageTitle }}</h3></div> <div class="panel-heading"><h3 class="panel-title">{{ $pageTitle }}</h3></div>
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row">
<div class="col-md-6">{!! FormField::radios('type_id', $subscriptionTypes, ['label' => trans('subscription.type'), 'value' => Request::get('type_id')]) !!}</div>
<div class="col-md-6">{!! FormField::radios('type_id', $subscriptionTypes::toArray(), ['label' => trans('subscription.type'), 'value' => Request::get('type_id')]) !!}</div>
<div class="col-md-6">{!! FormField::radios('status_id', [trans('app.in_active'), trans('app.active')],['label' => trans('app.status')]) !!}</div> <div class="col-md-6">{!! FormField::radios('status_id', [trans('app.in_active'), trans('app.active')],['label' => trans('app.status')]) !!}</div>
</div> </div>
<div class="row"> <div class="row">

6
resources/views/subscriptions/index.blade.php

@ -19,6 +19,7 @@
<thead> <thead>
<th>{{ trans('app.table_no') }}</th> <th>{{ trans('app.table_no') }}</th>
<th>{{ trans('subscription.name') }}</th> <th>{{ trans('subscription.name') }}</th>
<th class="text-center">{{ trans('app.type') }}</th>
<th>{{ trans('subscription.customer') }}</th> <th>{{ trans('subscription.customer') }}</th>
<th class="text-right">{{ trans('subscription.due_date') }}</th> <th class="text-right">{{ trans('subscription.due_date') }}</th>
<th class="text-right">{{ trans('subscription.extension_price') }}</th> <th class="text-right">{{ trans('subscription.extension_price') }}</th>
@ -30,6 +31,11 @@
<tr> <tr>
<td>{{ $subscriptions->firstItem() + $key }}</td> <td>{{ $subscriptions->firstItem() + $key }}</td>
<td>{{ $subscription->nameLink() }}</td> <td>{{ $subscription->nameLink() }}</td>
<td class="text-center">
<span class="badge" style="background-color: {{ $subscription->type_color }};">
{{ $subscription->type }}
</span>
</td>
<td>{{ $subscription->customer->name }}</td> <td>{{ $subscription->customer->name }}</td>
<td class="text-right" title="{!! $subscription->dueDateDescription() !!}"> <td class="text-right" title="{!! $subscription->dueDateDescription() !!}">
{{ dateId($subscription->due_date) }} {!! $subscription->nearOfDueDateSign() !!} {{ dateId($subscription->due_date) }} {!! $subscription->nearOfDueDateSign() !!}

19
tests/Unit/Models/SubscriptionTest.php

@ -6,6 +6,7 @@ use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor; use App\Entities\Partners\Vendor;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Entities\Subscriptions\Subscription; use App\Entities\Subscriptions\Subscription;
use App\Entities\Subscriptions\Type;
use Carbon\Carbon; use Carbon\Carbon;
use Tests\TestCase as TestCase; use Tests\TestCase as TestCase;
@ -98,11 +99,25 @@ class SubscriptionTest extends TestCase
$subscription = factory(Subscription::class)->create(); $subscription = factory(Subscription::class)->create();
$this->assertEquals(1, $subscription->type_id); $this->assertEquals(1, $subscription->type_id);
$this->assertEquals(trans('subscription.types.domain'), $subscription->type);
$this->assertEquals(Type::getNameById(1), $subscription->type);
$subscription = factory(Subscription::class)->create(['type_id' => 2]); $subscription = factory(Subscription::class)->create(['type_id' => 2]);
$this->assertEquals(2, $subscription->type_id); $this->assertEquals(2, $subscription->type_id);
$this->assertEquals(trans('subscription.types.hosting'), $subscription->type);
$this->assertEquals(Type::getNameById(2), $subscription->type);
}
/** @test */
public function a_subscription_has_type_color_attribute()
{
$subscription = factory(Subscription::class)->create();
$this->assertEquals(1, $subscription->type_id);
$this->assertEquals(Type::getColorById(1), $subscription->type_color);
$subscription = factory(Subscription::class)->create(['type_id' => 2]);
$this->assertEquals(2, $subscription->type_id);
$this->assertEquals(Type::getColorById(2), $subscription->type_color);
} }
} }

38
tests/Unit/References/SubscriptionTypeTest.php

@ -0,0 +1,38 @@
<?php
namespace Tests\Unit\Reference;
use App\Entities\Subscriptions\Type;
use Tests\TestCase;
class SubscriptionTypeTest extends TestCase
{
/** @test */
public function retrieve_subscription_type_list()
{
$subscriptionType = new Type;
$this->assertEquals([
1 => trans('subscription.types.domain'),
2 => trans('subscription.types.hosting'),
], $subscriptionType->toArray());
}
/** @test */
public function retrieve_subscription_type_name_by_id()
{
$subscriptionType = new Type;
$this->assertEquals(trans('subscription.types.domain'), $subscriptionType->getNameById(1));
$this->assertEquals(trans('subscription.types.hosting'), $subscriptionType->getNameById(2));
}
/** @test */
public function retrieve_subscription_type_color_class_by_id()
{
$subscriptionType = new Type;
$this->assertEquals('#337ab7', $subscriptionType->getColorById(1));
$this->assertEquals('#4caf50', $subscriptionType->getColorById(2));
}
}
Loading…
Cancel
Save