diff --git a/app/Datatables/Shop/CustomersDataTable.php b/app/Datatables/Shop/CustomersDataTable.php index 4f947401..f1df1ff5 100644 --- a/app/Datatables/Shop/CustomersDataTable.php +++ b/app/Datatables/Shop/CustomersDataTable.php @@ -12,13 +12,21 @@ class CustomersDataTable extends DataTable public function query(Customer $model) { + $model = $model->with('addresses'); return $this->buildQuery($model); } protected function getColumns() { return [ + Column::make('company')->title('Société'), Column::make('last_name')->title('Nom'), + Column::make('first_name')->title('Prénom'), + Column::make('address')->title('Adresse'), + Column::make('zipcode')->title('Code postal'), + Column::make('city')->title('Ville'), + Column::make('phone')->title('Téléphone'), + Column::make('email')->title('Email'), $this->makeColumnButtons(), ]; } diff --git a/app/Http/Controllers/Admin/Shop/CustomerController.php b/app/Http/Controllers/Admin/Shop/CustomerController.php index 8106d5d7..3fe02d7c 100644 --- a/app/Http/Controllers/Admin/Shop/CustomerController.php +++ b/app/Http/Controllers/Admin/Shop/CustomerController.php @@ -37,9 +37,9 @@ class CustomerController extends Controller public function edit($id) { $data['customer'] = Customers::edit($id); - dump($data['customer']); - exit; $data['deliveries'] = Deliveries::getOptions(); + // dump($data); + // exit; return view('Admin.Shop.Customers.edit', $data); } diff --git a/app/Http/Controllers/Shop/Auth/LoginController.php b/app/Http/Controllers/Shop/Auth/LoginController.php index 579c4142..0df88afa 100644 --- a/app/Http/Controllers/Shop/Auth/LoginController.php +++ b/app/Http/Controllers/Shop/Auth/LoginController.php @@ -37,7 +37,7 @@ class LoginController extends Controller if ($this->guard()->attempt($credentials, $request->get('remember'))) { $request->session()->regenerate(); - return (back()->getTargetUrl() == route('Shop.login')) ? redirect()->intended(route('home')) : back(); + return (back()->getTargetUrl() == route('Shop.login')) ? redirect()->intended(route('home')) : back(); } return back()->withInput($request->only('email', 'remember')); } diff --git a/app/Http/Controllers/Shop/CustomerController.php b/app/Http/Controllers/Shop/CustomerController.php index 93ec7109..ceba4f82 100644 --- a/app/Http/Controllers/Shop/CustomerController.php +++ b/app/Http/Controllers/Shop/CustomerController.php @@ -29,8 +29,8 @@ class CustomerController extends Controller // } - public function profile($id) + public function profile($id = false) { - // + return view('Shop.Profile.profile'); } } diff --git a/app/Http/Controllers/Shop/OrderController.php b/app/Http/Controllers/Shop/OrderController.php index 180846c6..7b5c7c90 100644 --- a/app/Http/Controllers/Shop/OrderController.php +++ b/app/Http/Controllers/Shop/OrderController.php @@ -16,17 +16,29 @@ class OrderController extends Controller { public function order() { - $data['customer'] = Customers::getWithAddresses(); + $data['customer'] = Customers::getWithAddresses()->toArray(); $data['basket'] = ShopCart::getSummary(); $data['deliveries'] = Deliveries::getAllWithSaleChannel()->toArray(); - $data['sale_channel'] = SaleChannels::getDefault(); + $data['sale_channel'] = SaleChannels::getDefault()->toArray(); return view('Shop.Orders.order', $data); } public function store(Request $request) { $data = $request->all(); + $data['customer_id'] = Customers::getId(); + $data['basket'] = ShopCart::getSummary(); dump($data); exit; + $order = Orders::saveOrder($data); + if ($order) { + if (intval($data['payment']) === 1) { + return redirect('Shop.Payments.online'); + } else { + return redirect('Shop.Orders.confirmed'); + } + } else { + return view('Shop.Orders.order'); + } } } diff --git a/app/Models/Shop/Delivery.php b/app/Models/Shop/Delivery.php index 1113858c..3faec0c3 100644 --- a/app/Models/Shop/Delivery.php +++ b/app/Models/Shop/Delivery.php @@ -9,7 +9,7 @@ class Delivery extends Model protected $guarded = ['id']; protected $table = 'shop_deliveries'; - public function Customers() + public function customers() { return $this->hasMany(Customer::class); } diff --git a/app/Models/Shop/Order.php b/app/Models/Shop/Order.php index 8236301a..53a82718 100644 --- a/app/Models/Shop/Order.php +++ b/app/Models/Shop/Order.php @@ -8,12 +8,12 @@ class Order extends Model { protected $guarded = ['id']; - public function Customer() + public function customer() { return $this->belongsTo(Customer::class); } - public function Payments() + public function payments() { return $this->hasMany(OrderPayment::class); } diff --git a/app/Models/Shop/OrderDetail.php b/app/Models/Shop/OrderDetail.php new file mode 100644 index 00000000..047eec76 --- /dev/null +++ b/app/Models/Shop/OrderDetail.php @@ -0,0 +1,15 @@ +belongsTo(Order::class); + } +} diff --git a/app/Models/Shop/OrderPayment.php b/app/Models/Shop/OrderPayment.php index 1ca9b459..d937d97b 100644 --- a/app/Models/Shop/OrderPayment.php +++ b/app/Models/Shop/OrderPayment.php @@ -8,7 +8,7 @@ class OrderPayment extends Model { protected $guarded = ['id']; - public function Order() + public function order() { return $this->belongsTo(Order::class); } diff --git a/app/Repositories/Shop/Articles.php b/app/Repositories/Shop/Articles.php index 40cdb7bd..0c292032 100644 --- a/app/Repositories/Shop/Articles.php +++ b/app/Repositories/Shop/Articles.php @@ -283,36 +283,7 @@ class Articles public static function getInherited($id) { $article = Article::with('product.tags.tag_group')->findOrFail($id); - $product_type = $article->product_type; - switch ($product_type) { - case 'App\Models\Botanic\Variety': - $data[] = [ - 'name' => 'Espèces', - 'description' => Species::getDescription($article->product->specie_id), - 'tags' => Species::getTags($article->product->specie_id), - ]; - $data[] = [ - 'name' => 'Variétés', - 'description' => $article->product->description, - 'tags' => $article->product->tags->toArray() - ]; - break; - case 'App\Models\Botanic\Specie': - $data[] = [ - 'name' => 'Espèces', - 'description' => $article->product->description, - 'tags' => $article->product->tags->toArray() - ]; - break; - case 'App\Models\Shop\Merchandise': - $data[] = [ - 'name' => 'Marchandise', - 'description' => $article->product->description, - 'tags' => $article->product->tags->toArray(), - ]; - break; - } - return $data ?? []; + return self::getInheritedByProduct($article->product_id, $article->product_type); } public static function getInheritedByProduct($product_id, $product_type) diff --git a/app/Repositories/Shop/Customers.php b/app/Repositories/Shop/Customers.php index bef72612..c3de97ac 100644 --- a/app/Repositories/Shop/Customers.php +++ b/app/Repositories/Shop/Customers.php @@ -29,10 +29,11 @@ class Customers $name = $customer->first_name . ' ' . $customer->last_name; $avatar = new Avatar(); $ret = $avatar->create($name) - ->setBackground($bgColor) - ->setBorder(1, '#29292e') + ->setBackground('#F2B90F') + ->setForeground('#335012') + ->setBorder(1, '#28a745') ->setFontFamily('Roboto Condensed') - ->setDimension(40) + ->setDimension(36) ->setFontSize(16) ->save($filename); return $ret; @@ -42,7 +43,7 @@ class Customers { $path = storage_path(self::getStorage()); if (File::checkDirOrCreate($path)) { - $filename = $path . 'user-' . $customer->uuid . '.png'; + $filename = $path . self::getAvatarFilename($customer); } return $filename ?? false; } @@ -55,58 +56,44 @@ class Customers public static function getAddresses($id = false) { $customer = self::getWithAddresses($id); + return $customer ? $customer->addresses : false; } public static function getWithAddresses($id = false) { - $id = $id ? $id : self::getId(); - return Customer::with('addresses')->find($id); + return self::get($id, 'addresses'); } - public static function getName() + public static function getName($id = false) { - $user = self::getAuth(); - return $user ? $user->first_name : ''; + $user = $id ? self::get($id) : self::getAuth(); + return $user ? $user->first_name . ' ' . $user->last_name : ''; } public static function getAuth() { - return Auth::guard('customer')->user(); + return self::guard()->user(); } public static function getId() { - return Auth::guard('customer')->id(); + return self::guard()->id(); } public static function isConnected() { - return Auth::guard('customer')->check(); + return self::guard()->check(); } - public static function getOptions() + public static function get($id = false, $relations = false) { - return Customer::orderBy('value', 'asc')->get()->pluck('value', 'id')->toArray(); - } - - public static function getOptionsByPackage($package_id) - { - return Customer::byPackage($package_id)->orderBy('value', 'asc')->get()->pluck('value', 'id')->toArray(); - } - - public static function getAll() - { - return Customer::orderBy('value', 'asc')->get(); - } - - public static function get($id) - { - return Customer::find($id); + $id = $id ? $id : self::getId(); + return $id ? ($relations ? Customer::with($relations)->findOrFail($id) : Customer::findOrFail($id)) : false; } public static function edit($id) { - $customer = Customer::with(['addresses'])->find($id); + $customer = self::get($id, 'addresses'); $data = $customer->toArray(); $data['deliveries'] = $customer->deliveries->pluck('id')->toArray(); return $data; @@ -126,9 +113,7 @@ class Customers public static function store($data) { - $id = $data['id'] ?? false; - $item = $id ? self::update($data, $id) : self::create($data); - return $item; + return ($data['id'] ?? false) ? self::update($data) : self::create($data); } public static function storeDeliveries($customer, $deliveries) @@ -166,7 +151,7 @@ class Customers return $customer; } - public static function destroy($id) + public static function delete($id) { return Customer::destroy($id); } @@ -182,4 +167,9 @@ class Customers $path = '/storage/Customers/'; return $filename ? $path . $filename : $path; } + + public static function guard() + { + return Auth::guard('customer'); + } } diff --git a/app/Repositories/Shop/OrderDetails.php b/app/Repositories/Shop/OrderDetails.php new file mode 100644 index 00000000..8c77fefb --- /dev/null +++ b/app/Repositories/Shop/OrderDetails.php @@ -0,0 +1,46 @@ +findOrFail($id) : OrderDetail::findOrFail($id); + } + + public static function store($data) + { + return ($data['id'] ?? false) ? self::update($data) : self::create($data); + } + + public static function create($data) + { + return OrderDetail::create($data); + } + + public static function update($data, $id = false) + { + $id = $id ? $id : $data['id']; + $item = self::get($id); + $item->update($data); + return $item; + } + + public static function delete($id) + { + return OrderDetail::destroy($id); + } +} diff --git a/app/Repositories/Shop/Orders.php b/app/Repositories/Shop/Orders.php index 44632053..4a7250dc 100644 --- a/app/Repositories/Shop/Orders.php +++ b/app/Repositories/Shop/Orders.php @@ -6,31 +6,23 @@ use App\Models\Shop\Order; class Orders { - public static function getOptions() + + public static function saveOrder($data) { - return Order::orderBy('value', 'asc')->get()->pluck('value', 'id')->toArray(); + $basket = $data['basket']; + unset($data['basket']); + $order = self::store($data); + return $order ? OrderDetails::saveBasket($order->id, $basket) : false; } - public static function getOptionsByPackage($package_id) + public static function get($id, $relations = false) { - return Order::byPackage($package_id)->orderBy('value', 'asc')->get()->pluck('value', 'id')->toArray(); - } - - public static function getAll() - { - return Order::orderBy('value', 'asc')->get(); - } - - public static function get($id) - { - return Order::findOrFail($id); + return $relations ? Order::with($relations)->findOrFail($id) : Order::findOrFail($id); } public static function store($data) { - $id = isset($data['id']) ? $data['id'] : false; - $item = $id ? self::update($data, $id) : self::create($data); - return $item->id; + return ($data['id'] ?? false) ? self::update($data) : self::create($data); } public static function create($data) @@ -46,7 +38,7 @@ class Orders return $item; } - public static function destroy($id) + public static function delete($id) { return Order::destroy($id); } diff --git a/app/Repositories/Shop/TagGroups.php b/app/Repositories/Shop/TagGroups.php index 5a46f500..b538980e 100644 --- a/app/Repositories/Shop/TagGroups.php +++ b/app/Repositories/Shop/TagGroups.php @@ -23,7 +23,7 @@ class TagGroups $data[$tag['tag_group_id']]['name'] = $tag_groups[$tag['tag_group_id']]; if (!$tag['articles_count']) { continue; - } + } $data[$tag['tag_group_id']]['tags'][] = [ 'id' => $tag['id'], 'name' => $tag['name'], @@ -72,8 +72,7 @@ class TagGroups public static function store($data) { - $id = isset($data['id']) ? $data['id'] : false; - $item = $id ? self::update($data) : self::create($data); + $item = ($data['id'] ?? false) ? self::update($data) : self::create($data); return $item->id; } diff --git a/resources/views/Admin/Shop/Customers/form.blade.php b/resources/views/Admin/Shop/Customers/form.blade.php index 1bf0c975..53670092 100644 --- a/resources/views/Admin/Shop/Customers/form.blade.php +++ b/resources/views/Admin/Shop/Customers/form.blade.php @@ -1,26 +1,73 @@
:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} + +:message
') !!} +:message
') !!} + +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} +:message
') !!} -:message
') !!} -:message
') !!} -:message
') !!} -:message
') !!} -:message
') !!} -