first upload all files
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
use Modules\Support\Country;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\Address\Entities\Address;
|
||||
use Modules\Account\Http\Requests\SaveAddressRequest;
|
||||
|
||||
class AccountAddressController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('public.account.addresses.index', [
|
||||
'addresses' => auth()->user()->addresses->keyBy('id'),
|
||||
'defaultAddress' => auth()->user()->defaultAddress,
|
||||
'countries' => Country::supported(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(SaveAddressRequest $request)
|
||||
{
|
||||
$address = auth()->user()->addresses()->create($request->all());
|
||||
|
||||
return response()->json([
|
||||
'address' => $address,
|
||||
'message' => trans('account::messages.address_saved'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(SaveAddressRequest $request, $id)
|
||||
{
|
||||
$address = Address::find($id);
|
||||
$address->update($request->all());
|
||||
|
||||
return response()->json([
|
||||
'address' => $address,
|
||||
'message' => trans('account::messages.address_saved'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
auth()->user()->addresses()->find($id)->delete();
|
||||
|
||||
return response()->json([
|
||||
'message' => trans('account::messages.address_deleted'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
class AccountDashboardController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('public.account.dashboard.index', [
|
||||
'account' => auth()->user(),
|
||||
'recentOrders' => auth()->user()->recentOrders(5),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\Address\Entities\DefaultAddress;
|
||||
|
||||
class AccountDefaultAddressController extends Controller
|
||||
{
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Support\Renderable
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
DefaultAddress::updateOrCreate(
|
||||
['customer_id' => auth()->id()],
|
||||
['address_id' => request('address_id')]
|
||||
);
|
||||
|
||||
return trans('account::messages.default_address_updated');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
use Modules\Order\Entities\Order;
|
||||
|
||||
class AccountDownloadsController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('public.account.downloads.index', [
|
||||
'downloads' => $this->getDownloads(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$file = $this->getDownloads()->firstWhere('id', decrypt($id));
|
||||
|
||||
if (is_null($file) || ! file_exists($file->realPath())) {
|
||||
return back()->with('error', trans('storefront::account.downloads.no_file_found'));
|
||||
}
|
||||
|
||||
return response()->download($file->realPath(), $file->filename);
|
||||
}
|
||||
|
||||
private function getDownloads()
|
||||
{
|
||||
return auth()->user()
|
||||
->orders()
|
||||
->with('downloads')
|
||||
->where('status', Order::COMPLETED)
|
||||
->latest()
|
||||
->get()
|
||||
->pluck('downloads.*.file')
|
||||
->flatten()
|
||||
->unique('id');
|
||||
}
|
||||
}
|
||||
38
Modules/Account/Http/Controllers/AccountOrdersController.php
Normal file
38
Modules/Account/Http/Controllers/AccountOrdersController.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
class AccountOrdersController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$orders = auth()->user()
|
||||
->orders()
|
||||
->latest()
|
||||
->paginate(20);
|
||||
|
||||
return view('public.account.orders.index', compact('orders'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$order = auth()->user()
|
||||
->orders()
|
||||
->with(['products', 'coupon', 'taxes'])
|
||||
->where('id', $id)
|
||||
->firstOrFail();
|
||||
|
||||
return view('public.account.orders.show', compact('order'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
use Modules\User\Http\Requests\UpdateProfileRequest;
|
||||
|
||||
class AccountProfileController
|
||||
{
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
return view('public.account.profile.edit', [
|
||||
'account' => auth()->user(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Modules\User\Http\Requests\UpdateProfileRequest $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(UpdateProfileRequest $request)
|
||||
{
|
||||
$request->bcryptPassword($request);
|
||||
|
||||
auth()->user()->update($request->all());
|
||||
|
||||
return back()->with('success', trans('account::messages.profile_updated'));
|
||||
}
|
||||
}
|
||||
23
Modules/Account/Http/Controllers/AccountReviewController.php
Normal file
23
Modules/Account/Http/Controllers/AccountReviewController.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
class AccountReviewController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$reviews = auth()->user()
|
||||
->reviews()
|
||||
->withoutGlobalScope('approved')
|
||||
->with('product.files')
|
||||
->whereHas('product')
|
||||
->paginate(20);
|
||||
|
||||
return view('public.account.reviews.index', compact('reviews'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Controllers;
|
||||
|
||||
class AccountWishlistController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('public.account.wishlist.index');
|
||||
}
|
||||
}
|
||||
33
Modules/Account/Http/Requests/SaveAddressRequest.php
Normal file
33
Modules/Account/Http/Requests/SaveAddressRequest.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Account\Http\Requests;
|
||||
|
||||
use Modules\Core\Http\Requests\Request;
|
||||
|
||||
class SaveAddressRequest extends Request
|
||||
{
|
||||
/**
|
||||
* Available attributes.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $availableAttributes = 'account::attributes.addresses';
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'first_name' => ['required'],
|
||||
'last_name' => ['required'],
|
||||
'address_1' => ['required'],
|
||||
'city' => ['required'],
|
||||
'zip' => ['required'],
|
||||
'country' => ['required'],
|
||||
'state' => ['required'],
|
||||
];
|
||||
}
|
||||
}
|
||||
13
Modules/Account/Resources/lang/en/attributes.php
Normal file
13
Modules/Account/Resources/lang/en/attributes.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'addresses' => [
|
||||
'first_name' => 'First Name',
|
||||
'last_name' => 'Last Name',
|
||||
'address_1' => 'Address Line 1',
|
||||
'city' => 'City',
|
||||
'zip' => 'Postcode / ZIP',
|
||||
'country' => 'Country',
|
||||
'state' => 'State / Province',
|
||||
],
|
||||
];
|
||||
8
Modules/Account/Resources/lang/en/messages.php
Normal file
8
Modules/Account/Resources/lang/en/messages.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'profile_updated' => 'Your profile has been updated.',
|
||||
'default_address_updated' => 'The default address has been updated.',
|
||||
'address_saved' => 'The address has been saved.',
|
||||
'address_deleted' => 'The address has been deleted.',
|
||||
];
|
||||
27
Modules/Account/Routes/public.php
Normal file
27
Modules/Account/Routes/public.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware('auth')->group(function () {
|
||||
Route::get('account', 'AccountDashboardController@index')->name('account.dashboard.index');
|
||||
|
||||
Route::get('account/profile', 'AccountProfileController@edit')->name('account.profile.edit');
|
||||
Route::put('account/profile', 'AccountProfileController@update')->name('account.profile.update');
|
||||
|
||||
Route::get('account/orders', 'AccountOrdersController@index')->name('account.orders.index');
|
||||
Route::get('account/orders/{id}', 'AccountOrdersController@show')->name('account.orders.show');
|
||||
|
||||
Route::get('account/downloads', 'AccountDownloadsController@index')->name('account.downloads.index');
|
||||
Route::get('account/downloads/{id}', 'AccountDownloadsController@show')->name('account.downloads.show');
|
||||
|
||||
Route::get('account/wishlist', 'AccountWishlistController@index')->name('account.wishlist.index');
|
||||
|
||||
Route::get('account/reviews', 'AccountReviewController@index')->name('account.reviews.index');
|
||||
|
||||
Route::get('addresses', 'AccountAddressController@index')->name('account.addresses.index');
|
||||
Route::post('addresses', 'AccountAddressController@store')->name('account.addresses.store');
|
||||
Route::put('addresses/{id}', 'AccountAddressController@update')->name('account.addresses.update');
|
||||
Route::delete('addresses/{id}', 'AccountAddressController@destroy')->name('account.addresses.destroy');
|
||||
|
||||
Route::post('addresses/change-default-address', 'AccountDefaultAddressController@update')->name('account.change_default_address');
|
||||
});
|
||||
27
Modules/Account/composer.json
Normal file
27
Modules/Account/composer.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "fleetcart/account",
|
||||
"description": "The FleetCart Account Module.",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Envay Soft",
|
||||
"email": "envaysoft@gmail.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^8.0.2"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Modules\\Account\\": ""
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"sort-packages": true
|
||||
},
|
||||
"minimum-stability": "dev"
|
||||
}
|
||||
6
Modules/Account/module.json
Normal file
6
Modules/Account/module.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "Account",
|
||||
"alias": "account",
|
||||
"description": "The FleetCart Account Module.",
|
||||
"priority": 100
|
||||
}
|
||||
Reference in New Issue
Block a user