Manage address and deliveries

This commit is contained in:
Ludovic CANDELLIER
2021-11-24 20:57:12 +01:00
parent e434220c16
commit 7092cf23fc
7 changed files with 118 additions and 17 deletions

View File

@@ -24,7 +24,7 @@ class CustomerController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$ret = Customers::store($request->all()); $ret = Customers::storeFull($request->all());
return redirect()->route('Admin.Shop.Customers.index'); return redirect()->route('Admin.Shop.Customers.index');
} }

View File

@@ -14,7 +14,7 @@ class Customer extends Model
return $this->hasMany(CustomerAddress::class); return $this->hasMany(CustomerAddress::class);
} }
public function Invoices() public function invoices()
{ {
return $this->hasMany(Invoice::class); return $this->hasMany(Invoice::class);
} }
@@ -25,11 +25,16 @@ class Customer extends Model
} }
public function deliveries() public function deliveries()
{
return $this->belongsToMany(Delivery::class);
}
public function deliveries2()
{ {
return $this->hasManyThrough(Delivery::class, CustomerDelivery::class); return $this->hasManyThrough(Delivery::class, CustomerDelivery::class);
} }
public function Orders() public function orders()
{ {
return $this->hasMany(Order::class); return $this->hasMany(Order::class);
} }

View File

@@ -0,0 +1,53 @@
<?php
namespace App\Repositories\Shop;
use App\Models\Shop\CustomerAddress;
class CustomerAddresses
{
public static function getOptions()
{
return CustomerAddress::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray();
}
public static function getAll()
{
return CustomerAddress::orderBy('name', 'asc')->get();
}
public static function get($id)
{
return CustomerAddress::find($id);
}
public static function store($data)
{
$id = $data['id'] ?? false;
$item = $id ? self::update($data, $id) : self::create($data);
return $item->id;
}
public static function create($data)
{
return CustomerAddress::create($data);
}
public static function update($data, $id = false)
{
$id = $id ? $id : $data['id'];
$delivery = self::get($id);
$delivery->update($data);
return $delivery;
}
public static function destroy($id)
{
return CustomerAddress::destroy($id);
}
public static function toggle_active($id, $active)
{
return self::update(['active' => $active], $id);
}
}

View File

@@ -26,13 +26,51 @@ class Customers
return Customer::find($id); return Customer::find($id);
} }
public static function storeFull($data)
{
dump($data);
exit;
$deliveries = $data['deliveries'];
$addresses = $data['addresses'];
unset($data['deliveries']);
unset($data['addresses']);
dump($data);
exit;
$customer = self::store($data);
self::storeDeliveries($customer, $deliveries);
self::storeAddresses($customer, $addresses);
return $customer->id;
}
public static function store($data) public static function store($data)
{ {
$id = isset($data['id']) ? $data['id'] : false; $id = $data['id'] ?? false;
$item = $id ? self::update($data, $id) : self::create($data); $item = $id ? self::update($data, $id) : self::create($data);
return $item->id; return $item->id;
} }
public static function storeDeliveries($customer, $deliveries)
{
if ($deliveries) {
$deliveries = collect($deliveries)->transform(
function ($item, $key) {
return (int) $item;
}
)->toArray();
return $customer->deliveries()->sync($deliveries);
} else {
return false;
}
}
public static function storeAddresses($customer, $addresses)
{
foreach ($addresses as $address) {
CustomerAddresses::store($address);
}
}
public static function create($data) public static function create($data)
{ {
return Customer::create($data); return Customer::create($data);
@@ -40,8 +78,10 @@ class Customers
public static function update($data, $id = false) public static function update($data, $id = false)
{ {
$id = isset($data['id']) ? $data['id'] : false; $id = $id ? $id : $data['id'];
return Customer::find($id)->update($data); $customer = self::get($id);
$customer->update($data);
return $customer;
} }
public static function destroy($id) public static function destroy($id)

View File

@@ -6,7 +6,7 @@
@section('content') @section('content')
{{ Form::open(['route' => 'Admin.Shop.Customers.update', 'id' => 'customer-form', 'autocomplete' => 'off']) }} {{ Form::open(['route' => 'Admin.Shop.Customers.store', 'id' => 'customer-form', 'autocomplete' => 'off']) }}
<input type="hidden" name="id" value="{{ $customer['id'] }}"> <input type="hidden" name="id" value="{{ $customer['id'] }}">
@include('Admin.Shop.Customers.form') @include('Admin.Shop.Customers.form')
</form> </form>

View File

@@ -17,10 +17,10 @@
</div> </div>
<div class="col-6"> <div class="col-6">
{{ Form::label('sale_delivery_id', __('shop.deliveries.name')) }} {{ Form::label('sale_delivery_id', __('shop.deliveries.name')) }}
@include('components.form.select', ['name' => 'sale_delivery_id', 'list' => $deliveries ?? [], 'values' => $customer['deliveries'] ?? null, 'with_empty' => '', 'class' => 'select2', 'multiple' => true]) @include('components.form.select', ['name' => 'deliveries[]', 'list' => $deliveries ?? [], 'values' => $customer['deliveries'] ?? null, 'with_empty' => '', 'class' => 'select2', 'multiple' => true])
</div> </div>
</div> </div>
@include('components.address', ['with_country' => false]) @include('components.address', ['with_country' => false, 'prefix' => 'addresses[0]', 'with_tab' => true])
</div> </div>
</div> </div>

View File

@@ -16,38 +16,41 @@
{{ $item[($prefix ?? null) . 'state'] ?? null }} {{ $item[($prefix ?? null) . 'state'] ?? null }}
@endif @endif
@if ($item[($prefix ?? null) . 'country_id']) @if ($item[($prefix ?? null) . 'country_id'])
{{ $countries[$third_party['country_id']] ?? null }}<br/> {{ $countries[$item[($prefix ?? null) . 'country_id']] ?? null }}<br/>
@endif @endif
@else @else
@if ($with_id ?? false)
<input type="hidden" name="{{ ($prefix ?? null) . (($with_tab ?? false) ? '[id]' : 'address_id') }}" value="{{ $with_id }}">
@endif
<div class="row mb-3"> <div class="row mb-3">
<div class="col-12 col-lg-6 form-group"> <div class="col-12 col-lg-6 form-group">
<label class="light" for="{{ $prefix ?? null }}address">{{ __('street') }}</label><br/> <label class="light" for="{{ $prefix ?? null }}address">{{ __('street') }}</label><br/>
@include('components.form.input', ['name' => ($prefix ?? null) . 'address', 'value' => $item[($prefix ?? null) . 'address'] ?? null, 'disabled' => $disabled ?? false ]) @include('components.form.input', ['name' => ($prefix ?? null) . (($with_tab ?? false) ? '[address]' : 'address'), 'value' => $item[($prefix ?? null) . 'address'] ?? null, 'disabled' => $disabled ?? false ])
</div> </div>
<div class="col-12 col-lg-6 form-group"> <div class="col-12 col-lg-6 form-group">
<label class="light" for="{{ $prefix ?? null }}address">{{ __('street_complement') }}</label><br/> <label class="light" for="{{ $prefix ?? null }}address2">{{ __('street_complement') }}</label><br/>
@include('components.form.input', ['name' => ($prefix ?? null) . 'address2', 'value' => $item[($prefix ?? null) . 'address2'] ?? null, 'disabled' => $disabled ?? false ]) @include('components.form.input', ['name' => ($prefix ?? null) . (($with_tab ?? false) ? '[address2]' : 'address2'), 'value' => $item[($prefix ?? null) . 'address2'] ?? null, 'disabled' => $disabled ?? false ])
</div> </div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">
<div class="col-6 form-group"> <div class="col-6 form-group">
<label class="light" for="{{ $prefix ?? null }}zipcode">{{ __('zipcode') }}</label><br/> <label class="light" for="{{ $prefix ?? null }}zipcode">{{ __('zipcode') }}</label><br/>
@include('components.form.input', ['name' => ($prefix ?? null) . 'zipcode', 'value' => $item[($prefix ?? null) . 'zipcode'] ?? null, 'disabled' => $disabled ?? false ]) @include('components.form.input', ['name' => ($prefix ?? null) . (($with_tab ?? false) ? '[zipcode]' : 'zipcode'), 'value' => $item[($prefix ?? null) . 'zipcode'] ?? null, 'disabled' => $disabled ?? false ])
</div> </div>
<div class="col-6 form-group"> <div class="col-6 form-group">
<label class="light" for="{{ $prefix ?? null }}city">{{ __('city') }}</label><br/> <label class="light" for="{{ $prefix ?? null }}city">{{ __('city') }}</label><br/>
@include('components.form.input', ['name' => ($prefix ?? null) . 'city', 'value' => $item[($prefix ?? null) . 'city'] ?? null, 'disabled' => $disabled ?? false ]) @include('components.form.input', ['name' => ($prefix ?? null) . (($with_tab ?? false) ? '[city]' : 'city'), 'value' => $item[($prefix ?? null) . 'city'] ?? null, 'disabled' => $disabled ?? false ])
</div> </div>
</div> </div>
@if ($with_country ?? true) @if ($with_country ?? true)
<div class="row mb-3"> <div class="row mb-3">
<div class="col-12 col-lg-6 form-group"> <div class="col-12 col-lg-6 form-group">
<label class="light" for="{{ $prefix ?? null }}country">{{ __('country') }}</label><br/> <label class="light" for="{{ $prefix ?? null }}country">{{ __('country') }}</label><br/>
@include('components.form.select', ['name' => ($prefix ?? null) . 'country_id', 'list' => $countries ?? null, 'value' => $item[($prefix ?? null) . 'country_id'] ?? null, 'with_empty' => '', 'required' => true, 'disabled' => $disabled ?? false ]) @include('components.form.select', ['name' => ($prefix ?? null) . (($with_tab ?? false) ? '[country_id]' : 'country_id'), 'list' => $countries ?? null, 'value' => $item[($prefix ?? null) . 'country_id'] ?? null, 'with_empty' => '', 'required' => true, 'disabled' => $disabled ?? false ])
</div> </div>
<div class="col-12 col-lg-6 form-group"> <div class="col-12 col-lg-6 form-group">
<label class="light" for="{{ $prefix ?? null }}state">{{ __('state') }}</label><br/> <label class="light" for="{{ $prefix ?? null }}state">{{ __('state') }}</label><br/>
@include('components.form.input', ['name' => ($prefix ?? null) . 'state', 'value' => $item[($prefix ?? null) . 'state'] ?? null, 'disabled' => $disabled ?? false ]) @include('components.form.input', ['name' => ($prefix ?? null) . (($with_tab ?? false) ? '[state]' : 'state'), 'value' => $item[($prefix ?? null) . 'state'] ?? null, 'disabled' => $disabled ?? false ])
</div> </div>
</div> </div>
@endif @endif