Browse Source

Add type_id column to partners table (1:Customer, 2:Vendor)

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
b5b88e892a
  1. 7
      app/Entities/Partners/Partner.php
  2. 1
      app/Entities/Projects/ProjectsRepository.php
  3. 12
      app/Http/Controllers/Partners/PartnersController.php
  4. 23
      database/factories/PartnerFactory.php
  5. 1
      database/migrations/2017_10_26_134455_create_partners_table.php
  6. 6
      resources/lang/id/partner.php
  7. 2
      resources/views/partners/forms.blade.php
  8. 4
      tests/Feature/ManagePartnersTest.php
  9. 12
      tests/Unit/Models/PartnerTest.php

7
app/Entities/Partners/Partner.php

@ -9,7 +9,12 @@ class Partner extends Model
{
use OwnedByAgency;
protected $fillable = ['name', 'email', 'phone', 'pic', 'address', 'notes', 'is_active', 'owner_id'];
protected $fillable = ['name', 'type_id', 'email', 'phone', 'pic', 'address', 'notes', 'is_active', 'owner_id'];
public function getTypeAttribute()
{
return $this->type_id == 1 ? trans('partner.types.customer') : trans('partner.types.vendor');
}
public function owner()
{

1
app/Entities/Projects/ProjectsRepository.php

@ -62,6 +62,7 @@ class ProjectsRepository extends BaseRepository
{
$newCustomer = new Partner;
$newCustomer->name = $customerName;
$newCustomer->type_id = 1;
$newCustomer->email = $customerEmail;
$newCustomer->owner_id = auth()->user()->agency->id;
$newCustomer->save();

12
app/Http/Controllers/Partners/PartnersController.php

@ -16,7 +16,13 @@ class PartnersController extends Controller
public function index()
{
$editablePartner = null;
$partners = Partner::where(function ($query) {
$partnerTypes = [
1 => trans('partner.types.customer'),
2 => trans('partner.types.vendor'),
];
$partners = Partner::where(function ($query) {
$query->where('name', 'like', '%'.request('q').'%');
})
->withCount('projects')
@ -26,7 +32,7 @@ class PartnersController extends Controller
$editablePartner = Partner::find(request('id'));
}
return view('partners.index', compact('partners', 'editablePartner'));
return view('partners.index', compact('partners', 'partnerTypes', 'editablePartner'));
}
/**
@ -39,6 +45,7 @@ class PartnersController extends Controller
{
$newPartnerData = $this->validate($request, [
'name' => 'required|max:60',
'type_id' => 'required|numeric',
'email' => 'nullable|email|unique:partners,email',
'phone' => 'nullable|max:255',
'pic' => 'nullable|max:255',
@ -77,6 +84,7 @@ class PartnersController extends Controller
{
$partnerData = $this->validate($request, [
'name' => 'required|max:60',
'type_id' => 'required|numeric',
'email' => 'nullable|email|unique:partners,email,'.$partner->id,
'phone' => 'nullable|max:255',
'pic' => 'nullable|max:255',

23
database/factories/PartnerFactory.php

@ -8,6 +8,29 @@ $factory->define(Partner::class, function (Faker $faker) {
return [
'name' => $faker->company,
'type_id' => 1, // 1:Customer, 2:Vendor
'owner_id' => function () {
return factory(Agency::class)->create()->id;
},
];
});
$factory->defineAs(Partner::class, 'customer', function (Faker $faker) {
return [
'name' => $faker->company,
'type_id' => 1, // 1:Customer, 2:Vendor
'owner_id' => function () {
return factory(Agency::class)->create()->id;
},
];
});
$factory->defineAs(Partner::class, 'vendor', function (Faker $faker) {
return [
'name' => $faker->company,
'type_id' => 2, // 1:Customer, 2:Vendor
'owner_id' => function () {
return factory(Agency::class)->create()->id;
},

1
database/migrations/2017_10_26_134455_create_partners_table.php

@ -16,6 +16,7 @@ class CreatePartnersTable extends Migration
Schema::create('partners', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 60);
$table->unsignedTinyInteger('type_id');
$table->string('email')->nullable()->unique();
$table->string('phone')->nullable();
$table->string('pic')->nullable();

6
resources/lang/id/partner.php

@ -28,4 +28,10 @@ return [
'description' => 'Deskripsi Partner',
'pic' => 'PIC',
'projects_count' => 'Jml Project',
// Types
'types' => [
'customer' => 'Customer',
'vendor' => 'Vendor',
],
];

2
resources/views/partners/forms.blade.php

@ -1,6 +1,7 @@
@if (Request::get('action') == 'create')
{!! Form::open(['route' => 'partners.store']) !!}
{!! FormField::text('name', ['required' => true]) !!}
{!! FormField::radios('type_id', $partnerTypes, ['required' => true]) !!}
{!! FormField::email('email') !!}
{!! FormField::text('phone') !!}
{!! FormField::text('pic') !!}
@ -13,6 +14,7 @@
@if (Request::get('action') == 'edit' && $editablePartner)
{!! Form::model($editablePartner, ['route' => ['partners.update', $editablePartner->id],'method' => 'patch']) !!}
{!! FormField::text('name', ['required' => true]) !!}
{!! FormField::radios('type_id', $partnerTypes, ['required' => true]) !!}
{!! FormField::email('email') !!}
{!! FormField::text('phone') !!}
{!! FormField::text('pic') !!}

4
tests/Feature/ManagePartnersTest.php

@ -33,6 +33,7 @@ class ManagePartnersTest extends TestCase
$this->submitForm(trans('partner.create'), [
'name' => 'Partner 1 name',
'type_id' => 1,
'email' => 'partner1@mail.com',
'phone' => '081234567890',
'pic' => 'Nama PIC Partner',
@ -44,6 +45,7 @@ class ManagePartnersTest extends TestCase
$this->seeInDatabase('partners', [
'name' => 'Partner 1 name',
'type_id' => 1,
'email' => 'partner1@mail.com',
'phone' => '081234567890',
'pic' => 'Nama PIC Partner',
@ -65,6 +67,7 @@ class ManagePartnersTest extends TestCase
$this->submitForm(trans('partner.update'), [
'name' => 'Partner 1 name',
'type_id' => 2,
'email' => 'partner1@mail.com',
'phone' => '081234567890',
'pic' => 'Nama PIC Partner',
@ -77,6 +80,7 @@ class ManagePartnersTest extends TestCase
$this->seeInDatabase('partners', [
'name' => 'Partner 1 name',
'type_id' => 2,
'email' => 'partner1@mail.com',
'phone' => '081234567890',
'pic' => 'Nama PIC Partner',

12
tests/Unit/Models/PartnerTest.php

@ -43,4 +43,16 @@ class PartnerTest extends TestCase
]), $partner->nameLink()
);
}
/** @test */
public function a_partner_has_type()
{
$partner = factory(Partner::class, 'customer')->make();
$this->assertEquals(1, $partner->type_id);
$this->assertEquals(trans('partner.types.customer'), $partner->type);
$partner = factory(Partner::class, 'vendor')->make();
$this->assertEquals(2, $partner->type_id);
$this->assertEquals(trans('partner.types.vendor'), $partner->type);
}
}
Loading…
Cancel
Save