addresses and recipients
This commit is contained in:
parent
f9ca86130b
commit
af06fcfc5b
|
|
@ -2,31 +2,100 @@
|
|||
|
||||
namespace Sarga\API\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Sarga\API\Http\Requests\AddressRequest;
|
||||
use Sarga\API\Http\Requests\RecipientRequest;
|
||||
use Sarga\API\Http\Resources\Customer\AddressResource;
|
||||
use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\AddressController;
|
||||
use Webkul\RestApi\Http\Resources\V1\Shop\Customer\CustomerAddressResource;
|
||||
|
||||
|
||||
class Addresses extends AddressController
|
||||
{
|
||||
/**
|
||||
* Store address.
|
||||
* Get customer addresses.
|
||||
*
|
||||
* @param \Webkul\Customer\Http\Requests\CustomerAddressRequest $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create(AddressRequest $request)
|
||||
public function index(Request $request)
|
||||
{
|
||||
$addresses = $request->user()
|
||||
->addresses()
|
||||
->where('address_type','customer')
|
||||
->get();
|
||||
|
||||
return response([
|
||||
'data' => AddressResource::collection($addresses),
|
||||
]);
|
||||
}
|
||||
|
||||
public function recipients(Request $request){
|
||||
|
||||
$addresses = $request->user()
|
||||
->addresses()
|
||||
->where('address_type','recipient')
|
||||
->get();
|
||||
|
||||
return response([
|
||||
'data' => AddressResource::collection($addresses),
|
||||
]);
|
||||
}
|
||||
|
||||
public function createAddress(AddressRequest $request)
|
||||
{
|
||||
$data = $request->all();
|
||||
$data['address1'] = implode(PHP_EOL, array_filter($data['address1']));
|
||||
$data['customer_id'] = $request->user()->id;
|
||||
$data['country'] = 'Turkmenistan';
|
||||
$data['postcode'] = '0000';
|
||||
// $data['country'] = 'Turkmenistan';
|
||||
// $data['postcode'] = '0000';
|
||||
$data['first_name'] = $request->user()->first_name;
|
||||
$data['last_name'] = $request->user()->last_name;
|
||||
$data['company_name'] = $request->get('note');
|
||||
$data['address_type'] = 'customer';
|
||||
|
||||
$customerAddress = $this->customerAddressRepository->create($data);
|
||||
|
||||
return response([
|
||||
'data' => new CustomerAddressResource($customerAddress),
|
||||
'data' => new AddressResource($customerAddress),
|
||||
'message' => 'Your address has been created successfully.',
|
||||
]);
|
||||
}
|
||||
|
||||
public function createRecipient(RecipientRequest $request){
|
||||
$data = $request->all();
|
||||
$data['address_type'] = 'recipient';
|
||||
$data['customer_id'] = $request->user()->id;
|
||||
$data['address1'] = 'recipient';
|
||||
$data['city'] = 'recipient';
|
||||
|
||||
$customerAddress = $this->customerAddressRepository->create($data);
|
||||
|
||||
return response([
|
||||
'data' => new AddressResource($customerAddress),
|
||||
'message' => 'Your recipient has been created successfully.',
|
||||
]);
|
||||
}
|
||||
|
||||
public function updateAddress(AddressRequest $request, int $id)
|
||||
{
|
||||
$data = $request->all();
|
||||
$data['address1'] = implode(PHP_EOL, array_filter($data['address1']));
|
||||
$data['company_name'] = $request->get('note');
|
||||
$customerAddress = $this->customerAddressRepository->update($data, $id);
|
||||
|
||||
return response([
|
||||
'data' => new AddressResource($customerAddress),
|
||||
'message' => 'Your address has been updated successfully.',
|
||||
]);
|
||||
}
|
||||
|
||||
public function updateRecipient(RecipientRequest $request, int $id)
|
||||
{
|
||||
$recipient = $this->customerAddressRepository->update($request->all(), $id);
|
||||
|
||||
return response([
|
||||
'data' => new AddressResource($recipient),
|
||||
'message' => 'Your recipient has been updated successfully.',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?php namespace Sarga\API\Http\Requests;
|
||||
|
||||
use Webkul\Core\Contracts\Validations\Address;
|
||||
use Webkul\Core\Contracts\Validations\AlphaNumericSpace;
|
||||
use Webkul\Core\Contracts\Validations\PhoneNumber;
|
||||
use Webkul\Customer\Http\Requests\CustomerAddressRequest;
|
||||
use Webkul\Customer\Rules\VatIdRule;
|
||||
|
||||
class AddressRequest extends CustomerAddressRequest
|
||||
{
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'note' => [new AlphaNumericSpace,'max:191'],
|
||||
'address1' => ['required', 'array'],
|
||||
'state' => ['required', new AlphaNumericSpace],
|
||||
'city' => ['required'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<?php namespace Sarga\API\Http\Requests;
|
||||
|
||||
use Webkul\Core\Contracts\Validations\Address;
|
||||
use Webkul\Core\Contracts\Validations\AlphaNumericSpace;
|
||||
use Webkul\Core\Contracts\Validations\PhoneNumber;
|
||||
use Webkul\Customer\Http\Requests\CustomerAddressRequest;
|
||||
use Webkul\Customer\Rules\VatIdRule;
|
||||
|
||||
class RecipientRequest extends CustomerAddressRequest
|
||||
{
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'first_name' => ['required', new AlphaNumericSpace],
|
||||
'last_name' => ['required', new AlphaNumericSpace],
|
||||
'phone' => ['required', new PhoneNumber],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace Sarga\API\Http\Resources\Customer;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class AddressResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'note' => $this->company_name,
|
||||
'address1' => explode(PHP_EOL, $this->address1),
|
||||
'state' => $this->state,
|
||||
'city' => $this->city,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
namespace Sarga\API\Http\Resources\Customer;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class AddressResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'first_name' => $this->first_name,
|
||||
'last_name' => $this->last_name,
|
||||
'phone' => $this->phone,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -67,10 +67,16 @@ Route::group(['prefix' => 'api'], function () {
|
|||
* Customer address routes.
|
||||
*/
|
||||
Route::get('addresses', [Addresses::class, 'index']);
|
||||
Route::post('addresses', [Addresses::class, 'create']);
|
||||
Route::get('addresses/{id}', [Addresses::class, 'show']);
|
||||
Route::put('addresses/{id}', [Addresses::class, 'update']);
|
||||
Route::post('addresses', [Addresses::class, 'createAddress']);
|
||||
Route::put('addresses/{id}', [Addresses::class, 'updateAddress']);
|
||||
Route::delete('addresses/{id}', [Addresses::class, 'destroy']);
|
||||
/**
|
||||
* Recipients
|
||||
*/
|
||||
Route::get('recipients', [Addresses::class, 'recipients']);
|
||||
Route::post('recipients', [Addresses::class, 'createRecipient']);
|
||||
Route::put('recipients/{id}', [Addresses::class, 'updateRecipient']);
|
||||
Route::delete('recipients/{id}', [Addresses::class, 'destroy']);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue