Browse Source

Restructure cart index view files and added helper functions file

pull/2/head
Nafies Luthfi 9 years ago
parent
commit
1367e7cec4
  1. 1
      app/Cart/Item.php
  2. 12
      app/Helpers/helpers.php
  3. 17
      app/Http/Controllers/CartController.php
  4. 2
      app/Providers/AppServiceProvider.php
  5. 4
      config/app.php
  6. 5
      resources/lang/id/cart.php
  7. 99
      resources/views/cart/index.blade.php
  8. 7
      tests/Feature/TransactionEntryTest.php

1
app/Cart/Item.php

@ -21,6 +21,7 @@ class Item
public function __construct(Product $product, $qty)
{
$this->id = $product->id;
$this->name = $product->name;
$this->product = $product;
$this->qty = $qty;
$this->price = $product->getPrice();

12
app/Helpers/helpers.php

@ -0,0 +1,12 @@
<?php
function formatNo($number)
{
return number_format($number, 0,',','.');
}
function formatRp($number)
{
if ($number == 0) { return '-'; }
return 'Rp. ' . formatNo($number);
}

17
app/Http/Controllers/CartController.php

@ -20,16 +20,21 @@ class CartController extends Controller
public function index(Request $request)
{
$draft = $this->cart->content()->last();
$queriedProducts = [];
$draft = $this->cart->content()->first();
return view('cart.index', compact('draft'));
return view('cart.index', compact('draft','queriedProducts'));
}
public function show(Request $request, $draftKey)
{
$queriedProducts = Product::where(function ($query) use ($request) {
return $query->where('name', 'like', '%'.$request->get('query').'%');
$query = $request->get('query');
$queriedProducts = [];
if ($query) {
$queriedProducts = Product::where(function ($q) use ($query) {
$q->where('name', 'like', '%'.$query.'%');
})->get();
}
$draft = $this->cart->get($draftKey);
@ -59,14 +64,14 @@ class CartController extends Controller
{
$this->cart->updateDraftItem($draftKey, $request->item_key, $request->only('qty', 'item_discount'));
return redirect()->route('cart.index', $draftKey);
return back();
}
public function removeDraftItem(Request $request, $draftKey)
{
$this->cart->removeItemFromDraft($draftKey, $request->item_index);
return redirect()->route('cart.index', $draftKey);
return back();
}
public function empty($draftKey)

2
app/Providers/AppServiceProvider.php

@ -13,7 +13,7 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
//
require_once app_path() . '/Helpers/helpers.php';
}
/**

4
config/app.php

@ -64,7 +64,7 @@ return [
|
*/
'timezone' => 'UTC',
'timezone' => 'Asia/Jakarta',
/*
|--------------------------------------------------------------------------
@ -77,7 +77,7 @@ return [
|
*/
'locale' => 'en',
'locale' => 'id',
/*
|--------------------------------------------------------------------------

5
resources/lang/id/cart.php

@ -0,0 +1,5 @@
<?php
return [
'product_search' => 'Cari Produk'
];

99
resources/views/cart/index.blade.php

@ -3,7 +3,6 @@
@section('content')
<?php use Facades\App\Cart\CartCollection; ?>
<h3 class="page-header">drafts</h3>
@if (! CartCollection::isEmpty())
<ul class="nav nav-tabs draft-drafts-list">
@foreach(CartCollection::content() as $key => $content)
@ -21,27 +20,93 @@
</li>
@endforeach
</ul><!-- Tab panes -->
<br>
@endif
@if ($draft)
{{ $draft ? $draft->type : '' }}
<div class="panel panel-default">
<div class="panel-heading">
<form method="get" action="{{ route('cart.show', $draft->draftKey) }}">
<input type="text" name="query" value="{{ request('query') }}">
<input type="submit" value="{{ trans('product.search') }}" style="display:none">
<label for="query">{{ trans('cart.product_search') }}</label>
<input type="text" id="query" name="query" value="{{ request('query') }}">
<input type="submit" value="{{ trans('cart.product_search') }}" class="btn btn-info btn-sm">
<a href="{{ route('cart.show', $draft->draftKey) }}" class="btn btn-default btn-sm">Refresh</a>
</form>
@if (isset($queriedProducts))
<ul>
@foreach($queriedProducts as $product)
<li>{{ $product->name }}</li>
<li>{{ $draft->type == 'cash' ? $product->cash_price : $product->credit_price }}</li>
<li>
<form action="{{ route('cart.add-draft-item', [$draft->draftKey, $product->id]) }}" method="post">
<input type="number" id="qty-{{ $product->id }}" name="qty" value="1">
<input type="submit" id="add-product-{{ $product->id }}">
</div>
@if ($queriedProducts)
<div class="panel-body">
<table class="table table-condensed">
<thead>
<tr>
<th>Produk</th>
<th>Harga Satuan ({{ $draft->type }})</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@forelse($queriedProducts as $product)
<tr>
<td>{{ $product->name }}</td>
<td>{{ $draft->type == 'cash' ? $product->cash_price : $product->credit_price }}</td>
<td>
<form action="{{ route('cart.add-draft-item', [$draft->draftKey, $product->id]) }}" method="post" style="display:inline">
{{ csrf_field() }}
<input type="number" id="qty-{{ $product->id }}" style="width:50px" name="qty" value="1">
<input type="submit" id="add-product-{{ $product->id }}" value="Tambah">
</form>
</li>
@endforeach
</ul>
</td>
</tr>
@empty
<tr>
<td colspan="3">
Produk tidak ditemukan dengan keyword : <strong><em>{{ request('query') }}</em></strong>
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
@endif
</div>
<table class="table">
<thead>
<tr>
<th>#</th>
<th>Nama Item</th>
<th>Harga Satuan</th>
<th>Qty</th>
<th>Diskon</th>
<th>Subtotal</th>
<th>Action</th>
</tr>
</thead>
@forelse($draft->items() as $key => $item)
<tr>
<td>{{ $key + 1 }}</td>
<td>{{ $item->name }}</td>
<td>{{ formatRp($item->price) }}</td>
<td>{{ $item->qty }}</td>
<td>{{ $item->item_discount }}</td>
{{--
<form action="{{ route('cart.update-draft-item', $draft->draftKey) }}" method="post">
{{ csrf_field() }} {{ method_field('patch') }}
<td><input type="number" style="width:50px" id="qty-{{ $key }}" name="qty" value="{{ $item->qty }}"></td>
<td><input type="text" id="item_discount-{{ $key }}" name="item_discount" value="{{ $item->item_discount }}"></td>
</form>
--}}
<td>{{ formatRp($item->subtotal) }}</td>
<td>
<form
action="{{ route('cart.remove-draft-item', $draft->draftKey) }}"
method="post"
onsubmit="return confirm('Yakin ingin menghapus Item ini?')"
>
{{ csrf_field() }} {{ method_field('delete') }}
<input type="hidden" name="item_index" value="{{ $key }}">
<input type="submit" id="remove-item-{{ $key }}" value="x">
</form>
</td>
</tr>
@empty
@endforelse
</table>
@endif
@endsection

7
tests/Feature/TransactionEntryTest.php

@ -59,7 +59,7 @@ class TransactionEntryTest extends BrowserKitTestCase
$this->visit(route('cart.index'));
// Visit search for products
$this->submitForm(trans('product.search'), [
$this->submitForm(trans('cart.product_search'), [
'query' => 'testing',
]);
@ -91,5 +91,10 @@ class TransactionEntryTest extends BrowserKitTestCase
$this->seePageIs(route('cart.show', [$draft->draftKey, 'query' => 'testing']));
$this->assertTrue($cart->draftHasItem($draft, $product));
$this->assertEquals(800, $draft->getTotal());
$this->see(formatRp(800));
// $this->seeElement('input', ['id' => 'qty' . 0]);
// $this->seeElement('input', ['id' => 'item_discount-' . 0]);
$this->seeElement('input', ['id' => 'remove-item-' . 0]);
}
}
Loading…
Cancel
Save