Skip to content

Commit 6934a20

Browse files
committed
Implementing adding orders
1 parent 8b17433 commit 6934a20

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

app/Http/Controllers/OrdersController.php

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

33
namespace App\Http\Controllers;
44

5+
use CleanPhp\Invoicer\Domain\Entity\Order;
56
use CleanPhp\Invoicer\Domain\Repository\CustomerRepositoryInterface;
67
use CleanPhp\Invoicer\Domain\Repository\OrderRepositoryInterface;
78
use CleanPhp\Invoicer\Persistence\Hydrator\OrderHydrator;
89
use CleanPhp\Invoicer\Service\InputFilter\OrderInputFilter;
10+
use Illuminate\Http\Request;
911
use Illuminate\Http\Response;
12+
use Illuminate\Support\Facades\Session;
13+
use Symfony\Component\HttpFoundation\RedirectResponse;
1014

1115
/**
1216
* Class OrdersController
@@ -81,4 +85,45 @@ public function viewAction($id)
8185

8286
return view('orders/view', ['order' => $order]);
8387
}
88+
89+
/**
90+
* @param Request $request
91+
* @return \Illuminate\View\View|RedirectResponse
92+
*/
93+
public function newAction(Request $request)
94+
{
95+
$viewModel = [];
96+
$order = new Order();
97+
98+
if ($request->getMethod() == 'POST') {
99+
$this->inputFilter
100+
->setData($request->request->all());
101+
102+
if ($this->inputFilter->isValid()) {
103+
$order = $this->hydrator->hydrate(
104+
$this->inputFilter->getValues(),
105+
$order
106+
);
107+
108+
$this->orderRepository
109+
->begin()
110+
->persist($order)
111+
->commit();
112+
113+
Session::flash('success', 'Order Saved');
114+
return new RedirectResponse('/orders/view/' . $order->getId());
115+
} else {
116+
$this->hydrator->hydrate(
117+
$request->request->all(),
118+
$order
119+
);
120+
$viewModel['error'] = $this->inputFilter->getMessages();
121+
}
122+
}
123+
124+
$viewModel['customers'] = $this->customerRepository->getAll();
125+
$viewModel['order'] = $order;
126+
127+
return view('orders/new', $viewModel);
128+
}
84129
}

resources/views/orders/new.blade.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
@extends('layouts.layout')
2+
3+
@section('content')
4+
<div class="page-header clearfix">
5+
<h2>Create Order</h2>
6+
</div>
7+
8+
<form role="form" action="" method="post">
9+
<input type="hidden" name="_token" value="<?= csrf_token(); ?>">
10+
11+
<div class="form-group">
12+
<label for="customer_id">Customer:</label>
13+
<select class="form-control" name="customer[id]" id="customer_id">
14+
<option value=""></option>
15+
<?php foreach ($customers as $customer): ?>
16+
<option value="{{{ $customer->getId() }}}"<?=
17+
!is_null($order->getCustomer()) &&
18+
$order->getCustomer()->getId() == $customer->getId() ?
19+
' selected="selected"' : '' ?>>
20+
{{{ $customer->getName() }}}
21+
</option>
22+
<?php endforeach; ?>
23+
</select>
24+
@include('validation-errors', ['name' => 'customer.id', 'errors' => isset($error) ? $error : []])
25+
</div>
26+
<div class="form-group">
27+
<label for="orderNumber">Order Number:</label>
28+
<input type="text" class="form-control" name="orderNumber"
29+
id="order_number" placeholder="Enter Order Number"
30+
value="{{{ $order->getOrderNumber() }}}">
31+
@include('validation-errors', ['name' => 'orderNumber', 'errors' => isset($error) ? $error : []])
32+
</div>
33+
<div class="form-group">
34+
<label for="description">Description:</label>
35+
<input type="text" class="form-control" name="description"
36+
id="description" placeholder="Enter Description"
37+
value="{{{ $order->getDescription() }}}">
38+
@include('validation-errors', ['name' => 'description', 'errors' => isset($error) ? $error : []])
39+
</div>
40+
<div class="form-group">
41+
<label for="total">Total:</label>
42+
<input type="text" class="form-control" name="total"
43+
id="total" placeholder="Enter Total"
44+
value="{{{ $order->getTotal() }}}">
45+
@include('validation-errors', ['name' => 'total', 'errors' => isset($error) ? $error : []])
46+
</div>
47+
<button type="submit" class="btn btn-primary">Save</button>
48+
</form>
49+
@stop

0 commit comments

Comments
 (0)