Skip to content
This repository was archived by the owner on Jan 5, 2019. It is now read-only.

Commit 89d8e75

Browse files
author
Mario Basic
committed
Added crud for clients and services.
1 parent 8bf0ac1 commit 89d8e75

File tree

15 files changed

+536
-59
lines changed

15 files changed

+536
-59
lines changed

app/Client.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22

33
namespace App;
44

5+
use App\Service;
56
use Illuminate\Database\Eloquent\Model;
67

78
class Client extends Model
89
{
910
protected $fillable = ['name', 'oib', 'street', 'city', 'postal_code'];
11+
12+
public function services()
13+
{
14+
return $this->hasMany(Service::class);
15+
}
1016
}

app/Http/Controllers/ClientController.php

Lines changed: 54 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace App\Http\Controllers;
44

5-
use Illuminate\Http\Request;
6-
5+
use App\Client;
76
use App\Http\Requests;
7+
use Illuminate\Http\Request;
88

99
class ClientController extends Controller
1010
{
@@ -15,7 +15,9 @@ class ClientController extends Controller
1515
*/
1616
public function index()
1717
{
18-
//
18+
$clients = Client::orderBy('name')->get();
19+
20+
return view('clients.index')->with(compact('clients'));
1921
}
2022

2123
/**
@@ -25,7 +27,7 @@ public function index()
2527
*/
2628
public function create()
2729
{
28-
//
30+
return view('clients.create');
2931
}
3032

3133
/**
@@ -36,18 +38,25 @@ public function create()
3638
*/
3739
public function store(Request $request)
3840
{
39-
//
40-
}
41+
$this->validate($request, [
42+
'name' => 'required|max:255',
43+
'oib' => 'required|size:11|unique:clients',
44+
'street' => 'required|string|max:255',
45+
'city' => 'required|string|max:255',
46+
'postal_code' => 'required|integer',
47+
]);
4148

42-
/**
43-
* Display the specified resource.
44-
*
45-
* @param int $id
46-
* @return \Illuminate\Http\Response
47-
*/
48-
public function show($id)
49-
{
50-
//
49+
$client = Client::create([
50+
'name' => $request->get('name'),
51+
'oib' => $request->get('oib'),
52+
'street' => $request->get('street'),
53+
'city' => $request->get('city'),
54+
'postal_code' => $request->get('postal_code'),
55+
]);
56+
57+
flash()->success('Client created!');
58+
59+
return redirect()->route('clients.index');
5160
}
5261

5362
/**
@@ -58,7 +67,9 @@ public function show($id)
5867
*/
5968
public function edit($id)
6069
{
61-
//
70+
$client = Client::findOrFail($id);
71+
72+
return view('clients.edit')->with(compact('client'));
6273
}
6374

6475
/**
@@ -70,7 +81,27 @@ public function edit($id)
7081
*/
7182
public function update(Request $request, $id)
7283
{
73-
//
84+
$client = Client::findOrFail($id);
85+
86+
$this->validate($request, [
87+
'name' => 'required|max:255',
88+
'oib' => 'required|size:11|unique:clients,oib' . $client->id,
89+
'street' => 'required|string|max:255',
90+
'city' => 'required|string|max:255',
91+
'postal_code' => 'required|integer',
92+
]);
93+
94+
$client->update([
95+
'name' => $request->get('name'),
96+
'oib' => $request->get('oib'),
97+
'street' => $request->get('street'),
98+
'city' => $request->get('city'),
99+
'postal_code' => $request->get('postal_code'),
100+
]);
101+
102+
flash()->success('Client Updated!');
103+
104+
return redirect()->route('clients.edit', $client->id);
74105
}
75106

76107
/**
@@ -81,6 +112,11 @@ public function update(Request $request, $id)
81112
*/
82113
public function destroy($id)
83114
{
84-
//
115+
$client = Client::findOrFail($id);
116+
$client->delete();
117+
118+
flash()->success('Client Deleted!');
119+
120+
return redirect()->route('clients.index');
85121
}
86122
}

app/Http/Controllers/ServiceController.php

Lines changed: 84 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
namespace App\Http\Controllers;
44

5-
use Illuminate\Http\Request;
6-
5+
use App\Client;
6+
use App\Service;
77
use App\Http\Requests;
8+
use Illuminate\Http\Request;
89

910
class ServiceController extends Controller
1011
{
@@ -15,7 +16,9 @@ class ServiceController extends Controller
1516
*/
1617
public function index()
1718
{
18-
//
19+
$services = Service::orderBy('title')->with(['client'])->get();
20+
21+
return view('services.index')->with(compact('services'));
1922
}
2023

2124
/**
@@ -25,7 +28,14 @@ public function index()
2528
*/
2629
public function create()
2730
{
28-
//
31+
$currencies = [
32+
'hrk' => 'HRK',
33+
'usd' => 'USD',
34+
'eur' => 'EUR',
35+
];
36+
$clients = Client::orderBy('name')->pluck('name', 'id')->toArray();
37+
38+
return view('services.create')->with(compact('currencies', 'clients'));
2939
}
3040

3141
/**
@@ -36,18 +46,33 @@ public function create()
3646
*/
3747
public function store(Request $request)
3848
{
39-
//
40-
}
49+
$this->validate($request, [
50+
'title' => 'required|max:255',
51+
'note' => 'string',
52+
'month' => 'required|integer|min:1|max:12',
53+
'day' => 'required|integer|min:1|max:31',
54+
'cost' => 'required|integer|min:0',
55+
'currency' => 'required|in:hrk,usd,eur',
56+
'active' => 'boolean',
57+
'client_id' => 'required|exists:clients,id'
58+
]);
4159

42-
/**
43-
* Display the specified resource.
44-
*
45-
* @param int $id
46-
* @return \Illuminate\Http\Response
47-
*/
48-
public function show($id)
49-
{
50-
//
60+
$client = Client::find($request->get('client_id'));
61+
62+
$service = new Service;
63+
$service->title = $request->get('title');
64+
$service->note = $request->get('note');
65+
$service->month = $request->get('month');
66+
$service->day = $request->get('day');
67+
$service->cost = $request->get('cost');
68+
$service->currency = $request->get('currency');
69+
$service->active = $request->get('active', false);
70+
$service->client()->associate($client);
71+
$service->save();
72+
73+
flash()->success('Service created!');
74+
75+
return redirect()->route('services.index');
5176
}
5277

5378
/**
@@ -58,7 +83,15 @@ public function show($id)
5883
*/
5984
public function edit($id)
6085
{
61-
//
86+
$service = Service::findOrFail($id);
87+
$currencies = [
88+
'hrk' => 'HRK',
89+
'usd' => 'USD',
90+
'eur' => 'EUR',
91+
];
92+
$clients = Client::orderBy('name')->pluck('name', 'id')->toArray();
93+
94+
return view('services.edit')->with(compact('service', 'currencies', 'clients'));
6295
}
6396

6497
/**
@@ -70,7 +103,35 @@ public function edit($id)
70103
*/
71104
public function update(Request $request, $id)
72105
{
73-
//
106+
$service = Service::findOrFail($id);
107+
108+
$this->validate($request, [
109+
'title' => 'required|max:255',
110+
'note' => 'string',
111+
'month' => 'required|integer|min:1|max:12',
112+
'day' => 'required|integer|min:1|max:31',
113+
'cost' => 'required|integer|min:0',
114+
'currency' => 'required|in:hrk,usd,eur',
115+
'active' => 'boolean',
116+
'client_id' => 'required|exists:clients,id'
117+
]);
118+
119+
$service->update([
120+
'title' => $request->get('title'),
121+
'note' => $request->get('note'),
122+
'month' => $request->get('month'),
123+
'day' => $request->get('day'),
124+
'cost' => $request->get('cost'),
125+
'currency' => $request->get('currency'),
126+
'active' => $request->get('active', false),
127+
]);
128+
129+
$client = Client::find($request->get('client_id'));
130+
$service->client()->associate($client);
131+
132+
flash()->success('Service Updated!');
133+
134+
return redirect()->route('services.edit', $service->id);
74135
}
75136

76137
/**
@@ -81,6 +142,11 @@ public function update(Request $request, $id)
81142
*/
82143
public function destroy($id)
83144
{
84-
//
145+
$service = Service::findOrFail($id);
146+
$service->delete();
147+
148+
flash()->success('Service Deleted!');
149+
150+
return redirect()->route('services.index');
85151
}
86152
}

app/Http/routes.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111
|
1212
*/
1313

14-
Route::get('/', function () {
15-
return view('welcome');
14+
Route::group(['middleware' => 'auth'], function() {
15+
Route::resource('clients', 'ClientController');
16+
Route::resource('services', 'ServiceController');
1617
});
1718

1819
Route::auth();
1920

20-
Route::get('/home', 'HomeController@index');
21+
Route::get('/', 'HomeController@index');

app/Service.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22

33
namespace App;
44

5+
use App\Client;
56
use Illuminate\Database\Eloquent\Model;
67

78
class Service extends Model
89
{
910
protected $fillable = ['title', 'note', 'month', 'day', 'cost', 'currency', 'active'];
11+
12+
public function client()
13+
{
14+
return $this->belongsTo(Client::class);
15+
}
1016
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
@extends('layouts.app')
2+
3+
@section('meta_title', 'Clients - Create')
4+
5+
@section('content')
6+
<div class="container">
7+
<div class="row">
8+
<div class="col-md-10 col-md-offset-1">
9+
<div class="panel panel-default">
10+
<div class="panel-heading">Clients Create</div>
11+
12+
<div class="panel-body">
13+
14+
@include('layouts.partials.validation')
15+
16+
{{ Form::open(['route' => 'clients.store']) }}
17+
18+
<div class="form-group">
19+
{{ Form::label('name', 'Name') }}
20+
{{ Form::text('name', null, ['class' => 'form-control', 'placeholder' => 'Name']) }}
21+
</div>
22+
23+
<div class="form-group">
24+
{{ Form::label('oib', 'OIB') }}
25+
{{ Form::text('oib', null, ['class' => 'form-control', 'placeholder' => 'OIB']) }}
26+
</div>
27+
28+
<div class="form-group">
29+
{{ Form::label('street', 'Street') }}
30+
{{ Form::text('street', null, ['class' => 'form-control', 'placeholder' => 'Street']) }}
31+
</div>
32+
33+
<div class="form-group">
34+
{{ Form::label('city', 'City') }}
35+
{{ Form::text('city', null, ['class' => 'form-control', 'placeholder' => 'City']) }}
36+
</div>
37+
38+
<div class="form-group">
39+
{{ Form::label('postal_code', 'Postal code') }}
40+
{{ Form::text('postal_code', null, ['class' => 'form-control', 'placeholder' => 'Postal code']) }}
41+
</div>
42+
43+
<button type="submit" class="btn btn-primary">Save</button>
44+
45+
{{ Form::close() }}
46+
47+
</div>
48+
</div>
49+
</div>
50+
</div>
51+
</div>
52+
@endsection

0 commit comments

Comments
 (0)