Browse Source

Remove customer_id from subscriptions table

Because the customer_id will be in the Project model that
already has customer_id attribute
pull/1/head
Nafies Luthfi 8 years ago
parent
commit
3e1d26022a
  1. 2
      app/Entities/Subscriptions/Subscription.php
  2. 2
      app/Entities/Subscriptions/SubscriptionsRepository.php
  3. 146
      app/Http/Controllers/SubscriptionsController.php
  4. 1
      app/Http/Requests/Subscriptions/CreateRequest.php
  5. 1
      app/Http/Requests/Subscriptions/UpdateRequest.php
  6. 3
      database/factories/ModelFactory.php
  7. 73
      database/migrations/2016_07_08_182606_create_subscriptions_table.php
  8. 3
      resources/views/subscriptions/create.blade.php
  9. 3
      resources/views/subscriptions/edit.blade.php
  10. 2
      resources/views/subscriptions/index.blade.php
  11. 7
      resources/views/subscriptions/partials/subscription-show.blade.php
  12. 19
      tests/Feature/ManageSubscriptionsTest.php
  13. 12
      tests/Unit/Models/SubscriptionTest.php

2
app/Entities/Subscriptions/Subscription.php

@ -17,7 +17,7 @@ class Subscription extends Model
return $this->belongsTo('App\Entities\Projects\Project');
}
public function customer()
public function vendor()
{
return $this->belongsTo('App\Entities\Partners\Partner');
}

2
app/Entities/Subscriptions/SubscriptionsRepository.php

@ -29,7 +29,7 @@ class SubscriptionsRepository extends BaseRepository
}
})
->with('customer')
->with('vendor')
->paginate($this->_paginate);
}
}

146
app/Http/Controllers/SubscriptionsController.php

@ -2,83 +2,81 @@
namespace App\Http\Controllers;
use App\Entities\Subscriptions\SubscriptionsRepository;
use App\Http\Controllers\Controller;
use App\Http\Requests\Subscriptions\CreateRequest;
use App\Http\Requests\Subscriptions\UpdateRequest;
use App\Http\Requests\Subscriptions\DeleteRequest;
use App\Http\Controllers\Controller;
use App\Entities\Subscriptions\SubscriptionsRepository;
use App\Http\Requests\Subscriptions\UpdateRequest;
use Illuminate\Http\Request;
class SubscriptionsController extends Controller {
private $repo;
public function __construct(SubscriptionsRepository $repo)
{
$this->repo = $repo;
}
public function index(Request $req)
{
$subscriptions = $this->repo->getSubscriptions($req->get('q'), $req->get('vendor_id'));
return view('subscriptions.index',compact('subscriptions'));
}
public function create()
{
$projects = $this->repo->getProjectsList();
$customers = $this->repo->getCustomersList();
$vendors = $this->repo->getVendorsList();
return view('subscriptions.create', compact('projects','customers','vendors'));
}
public function store(CreateRequest $req)
{
$subscription = $this->repo->create($req->except('_token'));
flash()->success(trans('subscription.created'));
return redirect()->route('subscriptions.index');
}
public function show($subscriptionId)
{
$subscription = $this->repo->requireById($subscriptionId);
return view('subscriptions.show', compact('subscription'));
}
public function edit($subscriptionId)
{
$subscription = $this->repo->requireById($subscriptionId);
$projects = $this->repo->getProjectsList();
$customers = $this->repo->getCustomersList();
$vendors = $this->repo->getVendorsList();
return view('subscriptions.edit',compact('subscription','projects','customers','vendors'));
}
public function update(UpdateRequest $req, $subscriptionId)
{
$subscription = $this->repo->update($req->except(['_method','_token']), $subscriptionId);
flash()->success(trans('subscription.updated'));
return redirect()->route('subscriptions.edit', $subscriptionId);
}
public function delete($subscriptionId)
{
$subscription = $this->repo->requireById($subscriptionId);
return view('subscriptions.delete', compact('subscription'));
}
public function destroy(DeleteRequest $req, $subscriptionId)
{
if ($subscriptionId == $req->get('subscription_id'))
{
$this->repo->delete($subscriptionId);
flash()->success(trans('subscription.deleted'));
}
else
flash()->error(trans('subscription.undeleted'));
return redirect()->route('subscriptions.index');
}
class SubscriptionsController extends Controller
{
private $repo;
public function __construct(SubscriptionsRepository $repo)
{
$this->repo = $repo;
}
public function index(Request $request)
{
$subscriptions = $this->repo->getSubscriptions($request->get('q'), $request->get('vendor_id'));
return view('subscriptions.index', compact('subscriptions'));
}
public function create()
{
$projects = $this->repo->getProjectsList();
$vendors = $this->repo->getVendorsList();
return view('subscriptions.create', compact('projects', 'vendors'));
}
public function store(CreateRequest $request)
{
$subscription = $this->repo->create($request->except('_token'));
flash()->success(trans('subscription.created'));
return redirect()->route('subscriptions.index');
}
public function show($subscriptionId)
{
$subscription = $this->repo->requireById($subscriptionId);
return view('subscriptions.show', compact('subscription'));
}
public function edit($subscriptionId)
{
$subscription = $this->repo->requireById($subscriptionId);
$projects = $this->repo->getProjectsList();
$customers = $this->repo->getCustomersList();
$vendors = $this->repo->getVendorsList();
return view('subscriptions.edit', compact('subscription', 'projects', 'customers', 'vendors'));
}
public function update(UpdateRequest $request, $subscriptionId)
{
$subscription = $this->repo->update($request->except(['_method', '_token']), $subscriptionId);
flash()->success(trans('subscription.updated'));
return redirect()->route('subscriptions.edit', $subscriptionId);
}
public function delete($subscriptionId)
{
$subscription = $this->repo->requireById($subscriptionId);
return view('subscriptions.delete', compact('subscription'));
}
public function destroy(DeleteRequest $request, $subscriptionId)
{
if ($subscriptionId == $request->get('subscription_id')) {
$this->repo->delete($subscriptionId);
flash()->success(trans('subscription.deleted'));
} else {
flash()->error(trans('subscription.undeleted'));
}
return redirect()->route('subscriptions.index');
}
}

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

@ -32,7 +32,6 @@ class CreateRequest extends Request
'hosting_price' => 'required_with:hosting_capacity|numeric',
'start_date' => 'required|date|date_format:Y-m-d',
'due_date' => 'required|date|date_format:Y-m-d',
'customer_id' => 'required|numeric',
'project_id' => 'required|numeric',
'vendor_id' => 'required|numeric',
'remark' => 'max:255',

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

@ -32,7 +32,6 @@ class UpdateRequest extends Request
'hosting_price' => 'required_with:hosting_capacity|numeric',
'start_date' => 'required|date|date_format:Y-m-d',
'due_date' => 'required|date|date_format:Y-m-d',
'customer_id' => 'required|numeric',
'project_id' => 'required|numeric',
'vendor_id' => 'required|numeric',
'remark' => 'max:255',

3
database/factories/ModelFactory.php

@ -36,9 +36,6 @@ $factory->define(Subscription::class, function (Faker\Generator $faker) {
'start_date' => $startDate->format('Y-m-d'),
'due_date' => $startDate->addYears(1)->format('Y-m-d'),
'remark' => $faker->paragraph,
'customer_id' => function () {
return factory(Partner::class)->create()->id;
},
'vendor_id' => function () {
return factory(Partner::class)->create()->id;
},

73
database/migrations/2016_07_08_182606_create_subscriptions_table.php

@ -3,44 +3,41 @@
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateSubscriptionsTable extends Migration {
class CreateSubscriptionsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('subscriptions', function (Blueprint $table) {
$table->increments('id');
$table->integer('project_id')->unsigned();
$table->integer('vendor_id')->unsigned();
$table->string('domain_name', 60);
$table->string('epp_code', 60)->nullable();
$table->integer('domain_price')->unsigned();
$table->string('hosting_capacity', 60)->nullable();
$table->boolean('status_id')->unsigned()->default(1);
$table->integer('hosting_price')->unsigned()->nullable();
$table->date('start_date')->nullable();
$table->date('due_date')->nullable();
$table->string('remark')->nullable();
$table->timestamps();
$table->unique(['domain_name', 'epp_code'], 'domain_name_epp_code');
});
}
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('subscriptions', function(Blueprint $table)
{
$table->increments('id');
$table->integer('project_id')->unsigned();
$table->integer('customer_id')->unsigned();
$table->integer('vendor_id')->unsigned();
$table->string('domain_name', 60);
$table->string('epp_code', 60)->nullable();
$table->integer('domain_price')->unsigned();
$table->string('hosting_capacity', 60)->nullable();
$table->boolean('status_id')->unsigned()->default(1);
$table->integer('hosting_price')->unsigned()->nullable();
$table->date('start_date')->nullable();
$table->date('due_date')->nullable();
$table->string('remark')->nullable();
$table->timestamps();
$table->unique(['domain_name','epp_code'], 'domain_name_epp_code');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('subscriptions');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('subscriptions');
}
}

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

@ -39,7 +39,6 @@
{!! FormField::text('due_date',['label'=> trans('subscription.due_date')]) !!}
</div>
</div>
{!! FormField::select('customer_id', $customers,['label'=> trans('subscription.customer'),'value' => Request::get('customer_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::textarea('remark',['label'=> trans('subscription.remark')]) !!}
@ -53,4 +52,4 @@
{!! Form::close() !!}
</div>
</div>
@endsection
@endsection

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

@ -34,7 +34,6 @@
{!! FormField::text('due_date',['label'=> trans('subscription.due_date')]) !!}
</div>
</div>
{!! FormField::select('customer_id', $customers,['label'=> trans('subscription.customer')]) !!}
{!! FormField::select('project_id', $projects,['label'=> trans('subscription.project')]) !!}
{!! FormField::select('vendor_id', $vendors,['label'=> trans('subscription.vendor')]) !!}
{!! FormField::radios('status_id', ['Non Active','Active'],['label'=> trans('app.status')]) !!}
@ -51,4 +50,4 @@
{!! Form::close() !!}
</div>
</div>
@endsection
@endsection

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

@ -32,7 +32,7 @@
<td>{{ $subscriptions->firstItem() + $key }}</td>
<td>{{ $subscription->domain_name }}</td>
<td class="text-center">{{ $subscription->hosting_capacity }}</td>
<td>{{ $subscription->customer->name }}</td>
<td>{{ $subscription->vendor->name }}</td>
<td class="text-right" title="
{{ trans('subscription.start_date') }} : {{ dateId($subscription->start_date) }} \n
{{ trans('subscription.due_date') }} : {{ dateId($subscription->due_date) }}

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

@ -13,10 +13,7 @@
<tr>
<td>{{ trans('subscription.customer') }}</td>
<td>
{{ $subscription->present()->customerNameAndEmail }}
@if ($subscription->project->customer_id && auth()->id() == $subscription->project->owner_id)
{!! link_to_route('users.edit', 'Edit', [$subscription->customer_id], ['title' => 'Edit Data Customer']) !!}
@endif
{{ $subscription->project->customer->name }}
</td>
</tr>
<tr>
@ -32,4 +29,4 @@
{!! link_to_route('subscriptions.edit', trans('subscription.edit'), [$subscription->id], ['class' => 'btn btn-warning']) !!}
{!! link_to_route('subscriptions.index', trans('subscription.back_to_index'), [], ['class' => 'btn btn-default']) !!}
</div>
</div>
</div>

19
tests/Feature/ManageSubscriptionsTest.php

@ -15,7 +15,7 @@ class ManageSubscriptionsTest extends TestCase
$user = $this->adminUserSigningIn();
$vendor = factory(Partner::class)->create(['owner_id' => $user->agency->id]);
$customer = factory(Partner::class)->create(['owner_id' => $user->agency->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id, 'customer_id' => $customer->id]);
$this->visit(route('subscriptions.index'));
$this->click(trans('subscription.create'));
@ -29,7 +29,6 @@ class ManageSubscriptionsTest extends TestCase
$this->type('2015-05-02', 'start_date');
$this->type('2016-05-02', 'due_date');
$this->select($project->id, 'project_id');
$this->select($customer->id, 'customer_id');
$this->select($vendor->id, 'vendor_id');
$this->type('', 'remark');
$this->press(trans('subscription.create'));
@ -44,7 +43,6 @@ class ManageSubscriptionsTest extends TestCase
'status_id' => 1,
'start_date' => '2015-05-02',
'due_date' => '2016-05-02',
'customer_id' => $customer->id,
'vendor_id' => $vendor->id,
]);
}
@ -56,12 +54,11 @@ class ManageSubscriptionsTest extends TestCase
$user = $this->adminUserSigningIn();
$vendor = factory(Partner::class)->create(['owner_id' => $user->agency->id]);
$customer = factory(Partner::class)->create(['owner_id' => $user->agency->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id, 'customer_id' => $customer->id]);
$subscription = factory(Subscription::class)->create(['customer_id' => $customer->id, 'project_id' => $project->id]);
$subscription = factory(Subscription::class)->create(['project_id' => $project->id]);
$this->visit(route('subscriptions.edit', $subscription->id));
$this->seePageIs(route('subscriptions.edit', $subscription->id));
// Fill Form
$this->type($eppCode, 'epp_code');
@ -70,7 +67,6 @@ class ManageSubscriptionsTest extends TestCase
$this->type('2015-05-02', 'start_date');
$this->type('2016-05-02', 'due_date');
$this->select($project->id, 'project_id');
$this->select($customer->id, 'customer_id');
$this->select($vendor->id, 'vendor_id');
$this->select(1, 'status_id');
$this->press(trans('subscription.update'));
@ -79,14 +75,12 @@ class ManageSubscriptionsTest extends TestCase
$this->see(trans('subscription.updated'));
$this->seeInDatabase('subscriptions', [
'epp_code' => $eppCode,
'customer_id' => $customer->id,
'project_id' => $project->id,
'status_id' => 1,
'hosting_capacity' => '4GB',
'hosting_price' => '500000',
'start_date' => '2015-05-02',
'due_date' => '2016-05-02',
'customer_id' => $customer->id,
'vendor_id' => $vendor->id,
]);
}
@ -96,9 +90,9 @@ class ManageSubscriptionsTest extends TestCase
{
$user = $this->adminUserSigningIn();
$customer = factory(Partner::class)->create(['owner_id' => $user->agency->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id, 'customer_id' => $customer->id]);
$subscription = factory(Subscription::class)->create(['customer_id' => $customer->id, 'project_id' => $project->id]);
$subscription = factory(Subscription::class)->create(['project_id' => $project->id]);
$this->visit(route('subscriptions.edit', $subscription->id));
$this->click(trans('subscription.delete'));
@ -115,7 +109,8 @@ class ManageSubscriptionsTest extends TestCase
$user = $this->adminUserSigningIn();
$customer = factory(Partner::class)->create(['owner_id' => $user->agency->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id]);
$subscription = factory(Subscription::class)->create(['customer_id' => $customer->id, 'project_id' => $project->id]);
$project = factory(Project::class)->create(['owner_id' => $user->agency->id, 'customer_id' => $customer->id]);
$subscription = factory(Subscription::class)->create(['project_id' => $project->id]);
$this->visit(route('subscriptions.show', $subscription->id));

12
tests/Unit/Models/SubscriptionTest.php

@ -3,6 +3,7 @@
namespace Tests\Unit\Models;
use App\Entities\Partners\Partner;
use App\Entities\Projects\Project;
use App\Entities\Subscriptions\Subscription;
use Tests\TestCase as TestCase;
@ -16,9 +17,16 @@ class SubscriptionTest extends TestCase
}
/** @test */
public function it_has_customer_relation()
public function it_has_project_relation()
{
$subscription = factory(Subscription::class)->create();
$this->assertTrue($subscription->customer instanceof Partner);
$this->assertTrue($subscription->project instanceof Project);
}
/** @test */
public function it_has_vendor_relation()
{
$subscription = factory(Subscription::class)->create();
$this->assertTrue($subscription->vendor instanceof Partner);
}
}
Loading…
Cancel
Save