Browse Source

Restructure subscriptions table and adjust the feature related to it

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
e79d76ee60
  1. 7
      app/Entities/Subscriptions/Subscription.php
  2. 4
      app/Entities/Subscriptions/SubscriptionsRepository.php
  3. 61
      app/Http/Controllers/SubscriptionsController.php
  4. 11
      app/Http/Requests/Subscriptions/CreateRequest.php
  5. 8
      app/Http/Requests/Subscriptions/UpdateRequest.php
  6. 26
      database/factories/ModelFactory.php
  7. 31
      database/factories/SubscriptionFactory.php
  8. 13
      database/migrations/2016_07_08_182606_create_subscriptions_table.php
  9. 1
      resources/lang/id/app.php
  10. 5
      resources/lang/id/subscription.php
  11. 15
      resources/views/subscriptions/create.blade.php
  12. 16
      resources/views/subscriptions/edit.blade.php
  13. 14
      resources/views/subscriptions/index.blade.php
  14. 17
      resources/views/subscriptions/partials/subscription-show.blade.php
  15. 2
      routes/web/subscriptions.php
  16. 37
      tests/Feature/ManageSubscriptionsTest.php
  17. 11
      tests/Unit/Models/SubscriptionTest.php

7
app/Entities/Subscriptions/Subscription.php

@ -17,6 +17,11 @@ class Subscription extends Model
return $this->belongsTo('App\Entities\Projects\Project'); return $this->belongsTo('App\Entities\Projects\Project');
} }
public function customer()
{
return $this->belongsTo('App\Entities\Partners\Customer');
}
public function vendor() public function vendor()
{ {
return $this->belongsTo('App\Entities\Partners\Vendor'); return $this->belongsTo('App\Entities\Partners\Vendor');
@ -24,7 +29,7 @@ class Subscription extends Model
public function status() public function status()
{ {
return $this->status_id ? trans('app.active') : trans('app.in_active');
return $this->status_id == 1 ? trans('app.active') : trans('app.in_active');
} }
public function getTypeAttribute() public function getTypeAttribute()

4
app/Entities/Subscriptions/SubscriptionsRepository.php

@ -26,11 +26,11 @@ class SubscriptionsRepository extends BaseRepository
} }
if ($q) { if ($q) {
$query->where('domain_name', 'like', '%'.$q.'%');
$query->where('name', 'like', '%'.$q.'%');
} }
}) })
->with('vendor')
->with('customer', 'vendor')
->paginate($this->_paginate); ->paginate($this->_paginate);
} }
} }

61
app/Http/Controllers/SubscriptionsController.php

@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Entities\Subscriptions\Subscription;
use App\Entities\Subscriptions\SubscriptionsRepository; use App\Entities\Subscriptions\SubscriptionsRepository;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Subscriptions\CreateRequest; use App\Http\Requests\Subscriptions\CreateRequest;
@ -30,53 +31,67 @@ class SubscriptionsController extends Controller
$projects = $this->repo->getProjectsList(); $projects = $this->repo->getProjectsList();
$vendors = $this->repo->getVendorsList(); $vendors = $this->repo->getVendorsList();
$subscriptionTypes = [
1 => trans('subscription.types.domain'),
2 => trans('subscription.types.hosting'),
];
$subscriptionTypes = $this->getSubscriptionTypes();
return view('subscriptions.create', compact('projects', 'vendors', 'subscriptionTypes')); return view('subscriptions.create', compact('projects', 'vendors', 'subscriptionTypes'));
} }
public function store(CreateRequest $request) public function store(CreateRequest $request)
{ {
$subscription = $this->repo->create($request->except('_token'));
$project = \App\Entities\Projects\Project::findOrFail($request->get('project_id'));
$subscription = new Subscription;
$subscription->project_id = $project->id;
$subscription->vendor_id = $request->get('vendor_id');
$subscription->customer_id = $project->customer_id;
$subscription->name = $request->get('name');
$subscription->price = $request->get('price');
$subscription->start_date = $request->get('start_date');
$subscription->due_date = $request->get('due_date');
$subscription->type_id = $request->get('type_id');
$subscription->notes = $request->get('notes');
$subscription->save();
flash()->success(trans('subscription.created')); flash()->success(trans('subscription.created'));
return redirect()->route('subscriptions.index'); return redirect()->route('subscriptions.index');
} }
public function show($subscriptionId)
public function show(Subscription $subscription)
{ {
$subscription = $this->repo->requireById($subscriptionId);
return view('subscriptions.show', compact('subscription')); return view('subscriptions.show', compact('subscription'));
} }
public function edit($subscriptionId)
public function edit(Subscription $subscription)
{ {
$subscription = $this->repo->requireById($subscriptionId);
$projects = $this->repo->getProjectsList(); $projects = $this->repo->getProjectsList();
$customers = $this->repo->getCustomersList();
$vendors = $this->repo->getVendorsList(); $vendors = $this->repo->getVendorsList();
return view('subscriptions.edit', compact('subscription', 'projects', 'customers', 'vendors'));
$subscriptionTypes = $this->getSubscriptionTypes();
return view('subscriptions.edit', compact('subscription', 'projects', 'vendors', 'subscriptionTypes'));
} }
public function update(UpdateRequest $request, $subscriptionId)
public function update(UpdateRequest $request, Subscription $subscription)
{ {
$subscription = $this->repo->update($request->except(['_method', '_token']), $subscriptionId);
$project = \App\Entities\Projects\Project::findOrFail($request->get('project_id'));
$subscriptionData = $request->except(['_method', '_token']);
$subscriptionData['customer_id'] = $project->customer_id;
$subscription->update($subscriptionData);
flash()->success(trans('subscription.updated')); flash()->success(trans('subscription.updated'));
return redirect()->route('subscriptions.edit', $subscriptionId);
return redirect()->route('subscriptions.edit', $subscription->id);
} }
public function delete($subscriptionId)
public function delete(Subscription $subscription)
{ {
$subscription = $this->repo->requireById($subscriptionId);
return view('subscriptions.delete', compact('subscription')); return view('subscriptions.delete', compact('subscription'));
} }
public function destroy(DeleteRequest $request, $subscriptionId)
public function destroy(DeleteRequest $request, Subscription $subscription)
{ {
if ($subscriptionId == $request->get('subscription_id')) {
$this->repo->delete($subscriptionId);
if ($subscription->id == $request->get('subscription_id')) {
$subscription->delete();
flash()->success(trans('subscription.deleted')); flash()->success(trans('subscription.deleted'));
} else { } else {
flash()->error(trans('subscription.undeleted')); flash()->error(trans('subscription.undeleted'));
@ -85,4 +100,12 @@ class SubscriptionsController extends Controller
return redirect()->route('subscriptions.index'); return redirect()->route('subscriptions.index');
} }
public function getSubscriptionTypes()
{
return [
1 => trans('subscription.types.domain'),
2 => trans('subscription.types.hosting'),
];
}
} }

11
app/Http/Requests/Subscriptions/CreateRequest.php

@ -25,15 +25,12 @@ class CreateRequest extends Request
public function rules() public function rules()
{ {
return [ return [
'domain_name' => 'required|max:60|unique:subscriptions,domain_name',
'epp_code' => 'max:60',
'domain_price' => 'required|numeric',
'hosting_capacity' => 'max:60',
'hosting_price' => 'required_with:hosting_capacity|numeric',
'name' => 'required|max:60',
'price' => 'required|numeric',
'start_date' => 'required|date|date_format:Y-m-d', 'start_date' => 'required|date|date_format:Y-m-d',
'due_date' => 'required|date|date_format:Y-m-d', 'due_date' => 'required|date|date_format:Y-m-d',
'project_id' => 'required|numeric',
'vendor_id' => 'required|numeric',
'project_id' => 'required|numeric|exists:projects,id',
'vendor_id' => 'required|numeric|exists:vendors,id',
'type_id' => 'required|numeric', 'type_id' => 'required|numeric',
'remark' => 'max:255', 'remark' => 'max:255',
]; ];

8
app/Http/Requests/Subscriptions/UpdateRequest.php

@ -25,15 +25,13 @@ class UpdateRequest extends Request
public function rules() public function rules()
{ {
return [ return [
'domain_name' => 'required|max:60|unique:subscriptions,domain_name,'.$this->segment(2),
'epp_code' => 'max:60',
'domain_price' => 'required|numeric',
'hosting_capacity' => 'max:60',
'hosting_price' => 'required_with:hosting_capacity|numeric',
'name' => 'required|max:60',
'price' => 'required|numeric',
'start_date' => 'required|date|date_format:Y-m-d', 'start_date' => 'required|date|date_format:Y-m-d',
'due_date' => 'required|date|date_format:Y-m-d', 'due_date' => 'required|date|date_format:Y-m-d',
'project_id' => 'required|numeric', 'project_id' => 'required|numeric',
'vendor_id' => 'required|numeric', 'vendor_id' => 'required|numeric',
'type_id' => 'required|numeric',
'remark' => 'max:255', 'remark' => 'max:255',
]; ];
} }

26
database/factories/ModelFactory.php

@ -1,11 +1,9 @@
<?php <?php
use App\Entities\Invoices\Invoice; use App\Entities\Invoices\Invoice;
use App\Entities\Partners\Vendor;
use App\Entities\Projects\Feature; use App\Entities\Projects\Feature;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Entities\Projects\Task; use App\Entities\Projects\Task;
use App\Entities\Subscriptions\Subscription;
use App\Entities\Users\Event; use App\Entities\Users\Event;
use App\Entities\Users\User; use App\Entities\Users\User;
@ -19,30 +17,6 @@ $factory->define(User::class, function (Faker\Generator $faker) {
]; ];
}); });
$factory->define(Subscription::class, function (Faker\Generator $faker) {
$startDate = Carbon::parse($faker->dateTimeBetween('-1 year', '-1 month')->format('Y-m-d'));
return [
'project_id' => function () {
return factory(Project::class)->create()->id;
},
'type_id' => 1,
'status_id' => 1,
'domain_name' => 'www.'.str_random(10).'.com',
'domain_price' => 125000,
'epp_code' => str_random(10),
'hosting_capacity' => rand(1, 3).' GB',
'hosting_price' => rand(1, 5) * 100000,
'start_date' => $startDate->format('Y-m-d'),
'due_date' => $startDate->addYears(1)->format('Y-m-d'),
'remark' => $faker->paragraph,
'vendor_id' => function () {
return factory(Vendor::class)->create()->id;
},
];
});
$factory->define(Feature::class, function (Faker\Generator $faker) { $factory->define(Feature::class, function (Faker\Generator $faker) {
return [ return [

31
database/factories/SubscriptionFactory.php

@ -0,0 +1,31 @@
<?php
use App\Entities\Partners\Customer;
use App\Entities\Partners\Vendor;
use App\Entities\Projects\Project;
use App\Entities\Subscriptions\Subscription;
use Carbon\Carbon;
use Faker\Generator as Faker;
$factory->define(Subscription::class, function (Faker $faker) {
$startDate = Carbon::parse($faker->dateTimeBetween('-1 year', '-1 month')->format('Y-m-d'));
return [
'project_id' => function () {
return factory(Project::class)->create()->id;
},
'type_id' => 1,
'status_id' => 1,
'name' => 'www.'.str_random(10).'.com',
'price' => 125000,
'start_date' => $startDate->format('Y-m-d'),
'due_date' => $startDate->addYears(1)->format('Y-m-d'),
'customer_id' => function () {
return factory(Customer::class)->create()->id;
},
'vendor_id' => function () {
return factory(Vendor::class)->create()->id;
},
];
});

13
database/migrations/2016_07_08_182606_create_subscriptions_table.php

@ -15,19 +15,16 @@ class CreateSubscriptionsTable extends Migration
Schema::create('subscriptions', function (Blueprint $table) { Schema::create('subscriptions', function (Blueprint $table) {
$table->increments('id'); $table->increments('id');
$table->unsignedInteger('project_id'); $table->unsignedInteger('project_id');
$table->unsignedInteger('customer_id');
$table->unsignedInteger('vendor_id'); $table->unsignedInteger('vendor_id');
$table->unsignedTinyInteger('type_id'); $table->unsignedTinyInteger('type_id');
$table->string('domain_name', 60);
$table->string('epp_code', 60)->nullable();
$table->unsignedInteger('domain_price');
$table->string('hosting_capacity', 60)->nullable();
$table->boolean('status_id')->unsigned()->default(1);
$table->integer('hosting_price')->unsigned()->nullable();
$table->string('name', 60);
$table->unsignedInteger('price');
$table->date('start_date')->nullable(); $table->date('start_date')->nullable();
$table->date('due_date')->nullable(); $table->date('due_date')->nullable();
$table->string('remark')->nullable();
$table->boolean('status_id')->unsigned()->default(1);
$table->string('notes')->nullable();
$table->timestamps(); $table->timestamps();
$table->unique(['domain_name', 'epp_code'], 'domain_name_epp_code');
}); });
} }

1
resources/lang/id/app.php

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

5
resources/lang/id/subscription.php

@ -23,6 +23,8 @@ return [
'undeleted' => 'Data Langganan gagal dihapus.', 'undeleted' => 'Data Langganan gagal dihapus.',
// Attributes // Attributes
'name' => 'Nama Langganan',
'price' => 'Harga',
'domain_name' => 'Domain', 'domain_name' => 'Domain',
'domain_price' => 'Harga Domain', 'domain_price' => 'Harga Domain',
'epp_code' => 'Kode EPP', 'epp_code' => 'Kode EPP',
@ -32,8 +34,9 @@ return [
'due_date' => 'Perpanjangan', 'due_date' => 'Perpanjangan',
'extension_price' => 'Biaya Perpanjangan', 'extension_price' => 'Biaya Perpanjangan',
'project' => 'Project', 'project' => 'Project',
'customer' => 'Customer',
'vendor' => 'Vendor', 'vendor' => 'Vendor',
'remark' => 'Catatan',
'notes' => 'Catatan',
'type' => 'Jenis Langganan', 'type' => 'Jenis Langganan',
// Types // Types

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

@ -16,19 +16,10 @@
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
{!! FormField::text('domain_name', ['label' => trans('subscription.domain_name')]) !!}
{!! FormField::text('name', ['label' => trans('subscription.name')]) !!}
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
{!! FormField::price('domain_price', ['label' => trans('subscription.domain_price')]) !!}
</div>
</div>
{!! FormField::text('epp_code', ['label' => trans('subscription.epp_code')]) !!}
<div class="row">
<div class="col-sm-6">
{!! FormField::text('hosting_capacity', ['label' => trans('subscription.hosting_capacity')]) !!}
</div>
<div class="col-sm-6">
{!! FormField::price('hosting_price', ['label' => trans('subscription.hosting_price')]) !!}
{!! FormField::price('price', ['label' => trans('subscription.price')]) !!}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -42,7 +33,7 @@
{!! 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, ['label' => trans('subscription.type'), 'value' => Request::get('type_id')]) !!}
{!! FormField::textarea('remark', ['label' => trans('subscription.remark')]) !!}
{!! FormField::textarea('notes', ['label' => trans('subscription.notes')]) !!}
</div> </div>
<div class="panel-footer"> <div class="panel-footer">

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

@ -11,19 +11,10 @@
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
{!! FormField::text('domain_name',['label'=> trans('subscription.domain_name')]) !!}
{!! FormField::text('name',['label'=> trans('subscription.name')]) !!}
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
{!! FormField::price('domain_price',['label'=> trans('subscription.domain_price')]) !!}
</div>
</div>
{!! FormField::text('epp_code',['label'=> trans('subscription.epp_code')]) !!}
<div class="row">
<div class="col-sm-6">
{!! FormField::text('hosting_capacity',['label'=> trans('subscription.hosting_capacity')]) !!}
</div>
<div class="col-sm-6">
{!! FormField::price('hosting_price',['label'=> trans('subscription.hosting_price')]) !!}
{!! FormField::price('price',['label'=> trans('subscription.price')]) !!}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -37,7 +28,8 @@
{!! FormField::select('project_id', $projects,['label'=> trans('subscription.project')]) !!} {!! FormField::select('project_id', $projects,['label'=> trans('subscription.project')]) !!}
{!! FormField::select('vendor_id', $vendors,['label'=> trans('subscription.vendor')]) !!} {!! FormField::select('vendor_id', $vendors,['label'=> trans('subscription.vendor')]) !!}
{!! FormField::radios('status_id', ['Non Active','Active'],['label'=> trans('app.status')]) !!} {!! FormField::radios('status_id', ['Non Active','Active'],['label'=> trans('app.status')]) !!}
{!! FormField::textarea('remark',['label'=> trans('subscription.remark')]) !!}
{!! FormField::radios('type_id', $subscriptionTypes, ['label' => trans('subscription.type'), 'value' => Request::get('type_id')]) !!}
{!! FormField::textarea('notes',['label'=> trans('subscription.notes')]) !!}
</div> </div>
<div class="panel-footer"> <div class="panel-footer">

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

@ -18,11 +18,11 @@
<table class="table table-condensed"> <table class="table table-condensed">
<thead> <thead>
<th>{{ trans('app.table_no') }}</th> <th>{{ trans('app.table_no') }}</th>
<th>{{ trans('subscription.domain_name') }}</th>
<th class="text-center">{{ trans('subscription.hosting_capacity') }}</th>
<th>{{ trans('subscription.vendor') }}</th>
<th>{{ trans('subscription.name') }}</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>
<th>{{ trans('subscription.vendor') }}</th>
<th class="text-center">{{ trans('app.status') }}</th> <th class="text-center">{{ trans('app.status') }}</th>
<th>{{ trans('app.action') }}</th> <th>{{ trans('app.action') }}</th>
</thead> </thead>
@ -30,14 +30,14 @@
@forelse($subscriptions as $key => $subscription) @forelse($subscriptions as $key => $subscription)
<tr {{ Carbon::parse($subscription->due_date)->diffInDays(Carbon::now()) < 60 ? 'class=bg-danger' : '' }}> <tr {{ Carbon::parse($subscription->due_date)->diffInDays(Carbon::now()) < 60 ? 'class=bg-danger' : '' }}>
<td>{{ $subscriptions->firstItem() + $key }}</td> <td>{{ $subscriptions->firstItem() + $key }}</td>
<td>{{ $subscription->domain_name }}</td>
<td class="text-center">{{ $subscription->hosting_capacity }}</td>
<td>{{ $subscription->vendor->name }}</td>
<td>{{ $subscription->name }}</td>
<td>{{ $subscription->customer->name }}</td>
<td class="text-right" title=" <td class="text-right" title="
{{ trans('subscription.start_date') }} : {{ dateId($subscription->start_date) }} \n {{ trans('subscription.start_date') }} : {{ dateId($subscription->start_date) }} \n
{{ trans('subscription.due_date') }} : {{ dateId($subscription->due_date) }} {{ trans('subscription.due_date') }} : {{ dateId($subscription->due_date) }}
">{{ dateId($subscription->due_date) }}</td> ">{{ dateId($subscription->due_date) }}</td>
<td class="text-right">{{ formatRp($subscription->domain_price + $subscription->hosting_price) }}</td>
<td class="text-right">{{ formatRp($subscription->price) }}</td>
<td>{{ $subscription->vendor->name }}</td>
<td class="text-center">{{ $subscription->status() }}</td> <td class="text-center">{{ $subscription->status() }}</td>
<td> <td>
{!! link_to_route('subscriptions.show',trans('app.show'),[$subscription->id],['class'=>'btn btn-info btn-xs']) !!} {!! link_to_route('subscriptions.show',trans('app.show'),[$subscription->id],['class'=>'btn btn-info btn-xs']) !!}

17
resources/views/subscriptions/partials/subscription-show.blade.php

@ -3,26 +3,19 @@
<table class="table table-condensed"> <table class="table table-condensed">
<tbody> <tbody>
<tr><td>{{ trans('subscription.project') }}</td><td>{{ $subscription->project->name }}</td></tr> <tr><td>{{ trans('subscription.project') }}</td><td>{{ $subscription->project->name }}</td></tr>
<tr><td>{{ trans('subscription.domain_name') }}</td><td>{{ $subscription->domain_name }}</td></tr>
<tr><td>{{ trans('subscription.domain_price') }}</td><td>{{ formatRp($subscription->domain_price) }}</td></tr>
<tr><td>{{ trans('subscription.epp_code') }}</td><td>{{ $subscription->epp_code }}</td></tr>
<tr><td>{{ trans('subscription.hosting_capacity') }}</td><td>{{ $subscription->hosting_capacity }}</td></tr>
<tr><td>{{ trans('subscription.hosting_price') }}</td><td>{{ formatRp($subscription->hosting_price) }}</td></tr>
<tr><td>{{ trans('subscription.name') }}</td><td>{{ $subscription->name }}</td></tr>
<tr><td>{{ trans('subscription.price') }}</td><td>{{ formatRp($subscription->price) }}</td></tr>
<tr><td>{{ trans('subscription.type') }}</td><td>{{ $subscription->type }}</td></tr>
<tr><td>{{ trans('subscription.start_date') }}</td><td>{{ dateId($subscription->start_date) }}</td></tr> <tr><td>{{ trans('subscription.start_date') }}</td><td>{{ dateId($subscription->start_date) }}</td></tr>
<tr><td>{{ trans('subscription.due_date') }}</td><td>{{ dateId($subscription->due_date) }}</td></tr> <tr><td>{{ trans('subscription.due_date') }}</td><td>{{ dateId($subscription->due_date) }}</td></tr>
<tr>
<td>{{ trans('subscription.customer') }}</td>
<td>
{{ $subscription->project->customer->name }}
</td>
</tr>
<tr><td>{{ trans('subscription.customer') }}</td><td>{{ $subscription->customer->name }}</td></tr>
<tr> <tr>
<td>{{ trans('subscription.project') }}</td> <td>{{ trans('subscription.project') }}</td>
<td> <td>
{{ link_to_route('projects.subscriptions', $subscription->project->name, [$subscription->project_id], ['target' => '_blank']) }} {{ link_to_route('projects.subscriptions', $subscription->project->name, [$subscription->project_id], ['target' => '_blank']) }}
</td> </td>
</tr> </tr>
<tr><td>{{ trans('subscription.remark') }}</td><td>{!! nl2br($subscription->remark) !!}</td></tr>
<tr><td>{{ trans('subscription.notes') }}</td><td>{!! nl2br($subscription->notes) !!}</td></tr>
</tbody> </tbody>
</table> </table>
<div class="panel-footer"> <div class="panel-footer">

2
routes/web/subscriptions.php

@ -4,6 +4,6 @@ Route::group(['middleware' => ['web', 'auth']], function () {
/** /**
* Subscriptions Routes * Subscriptions Routes
*/ */
Route::get('subscriptions/{id}/delete', ['as' => 'subscriptions.delete', 'uses' => 'SubscriptionsController@delete']);
Route::get('subscriptions/{subscription}/delete', ['as' => 'subscriptions.delete', 'uses' => 'SubscriptionsController@delete']);
Route::resource('subscriptions', 'SubscriptionsController'); Route::resource('subscriptions', 'SubscriptionsController');
}); });

37
tests/Feature/ManageSubscriptionsTest.php

@ -21,31 +21,28 @@ class ManageSubscriptionsTest extends TestCase
// Fill Form // Fill Form
$this->submitForm(trans('subscription.create'), [ $this->submitForm(trans('subscription.create'), [
'domain_name' => 'www.domain.com',
'domain_price' => 100000,
'epp_code' => 'EPPCODE',
'hosting_capacity' => '3GB',
'hosting_price' => 500000,
'name' => 'www.domain.com',
'price' => 100000,
'start_date' => '2015-05-02', 'start_date' => '2015-05-02',
'due_date' => '2016-05-02', 'due_date' => '2016-05-02',
'project_id' => $project->id, 'project_id' => $project->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'type_id' => 1, 'type_id' => 1,
'remark' => '',
'notes' => 'epp_code:EPPCODE',
]); ]);
$this->see(trans('subscription.created')); $this->see(trans('subscription.created'));
$this->seePageIs(route('subscriptions.index')); $this->seePageIs(route('subscriptions.index'));
$this->seeInDatabase('subscriptions', [ $this->seeInDatabase('subscriptions', [
'project_id' => $project->id,
'domain_price' => 100000,
'epp_code' => 'EPPCODE',
'status_id' => 1,
'name' => 'www.domain.com',
'price' => 100000,
'start_date' => '2015-05-02', 'start_date' => '2015-05-02',
'due_date' => '2016-05-02', 'due_date' => '2016-05-02',
'project_id' => $project->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'type_id' => 1, 'type_id' => 1,
'notes' => 'epp_code:EPPCODE',
]); ]);
} }
@ -62,28 +59,26 @@ class ManageSubscriptionsTest extends TestCase
// Fill Form // Fill Form
$this->submitForm(trans('subscription.update'), [ $this->submitForm(trans('subscription.update'), [
'epp_code' => 'EPPCODE1',
'hosting_capacity' => '4GB',
'hosting_price' => 500000,
'start_date' => '2015-05-02', 'start_date' => '2015-05-02',
'due_date' => '2016-05-02', 'due_date' => '2016-05-02',
'project_id' => $project->id, 'project_id' => $project->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'type_id' => 1,
'status_id' => 1, 'status_id' => 1,
'notes' => 'epp_code:EPPCODE1',
]); ]);
$this->seePageIs(route('subscriptions.edit', $subscription->id)); $this->seePageIs(route('subscriptions.edit', $subscription->id));
$this->see(trans('subscription.updated')); $this->see(trans('subscription.updated'));
$this->seeInDatabase('subscriptions', [ $this->seeInDatabase('subscriptions', [
'epp_code' => 'EPPCODE1',
'project_id' => $project->id,
'status_id' => 1,
'hosting_capacity' => '4GB',
'hosting_price' => '500000',
'start_date' => '2015-05-02', 'start_date' => '2015-05-02',
'due_date' => '2016-05-02', 'due_date' => '2016-05-02',
'project_id' => $project->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'type_id' => 1,
'status_id' => 1,
'notes' => 'epp_code:EPPCODE1',
]); ]);
} }
@ -111,10 +106,8 @@ class ManageSubscriptionsTest extends TestCase
$this->visit(route('subscriptions.show', $subscription->id)); $this->visit(route('subscriptions.show', $subscription->id));
$this->see($subscription->domain_name);
$this->see(formatRp($subscription->domain_price));
$this->see($subscription->hosting_capacity);
$this->see(formatRp($subscription->hosting_price));
$this->see($subscription->name);
$this->see(formatRp($subscription->price));
$this->see(dateId($subscription->start_date)); $this->see(dateId($subscription->start_date));
$this->see(dateId($subscription->due_date)); $this->see(dateId($subscription->due_date));
} }

11
tests/Unit/Models/SubscriptionTest.php

@ -2,6 +2,7 @@
namespace Tests\Unit\Models; namespace Tests\Unit\Models;
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;
@ -10,17 +11,17 @@ use Tests\TestCase as TestCase;
class SubscriptionTest extends TestCase class SubscriptionTest extends TestCase
{ {
/** @test */ /** @test */
public function it_has_domain_name_attribute()
public function it_has_project_relation()
{ {
$subscription = factory(Subscription::class)->create(['domain_name' => 'Subscription 1 Domain Name']);
$this->assertEquals('Subscription 1 Domain Name', $subscription->domain_name);
$subscription = factory(Subscription::class)->create();
$this->assertInstanceOf(Project::class, $subscription->project);
} }
/** @test */ /** @test */
public function it_has_project_relation()
public function it_has_customer_relation()
{ {
$subscription = factory(Subscription::class)->create(); $subscription = factory(Subscription::class)->create();
$this->assertInstanceOf(Project::class, $subscription->project);
$this->assertInstanceOf(Customer::class, $subscription->customer);
} }
/** @test */ /** @test */

Loading…
Cancel
Save