sarga/packages/Sarga/API/Http/Controllers/Addresses.php

133 lines
4.0 KiB
PHP
Raw Normal View History

2022-02-03 08:34:16 +00:00
<?php
namespace Sarga\API\Http\Controllers;
2022-02-07 14:30:10 +00:00
use Illuminate\Http\Request;
2022-02-09 13:23:02 +00:00
use Illuminate\Support\Facades\DB;
2022-02-03 08:34:16 +00:00
use Sarga\API\Http\Requests\AddressRequest;
2022-02-07 14:30:10 +00:00
use Sarga\API\Http\Requests\RecipientRequest;
use Sarga\API\Http\Resources\Customer\AddressResource;
2022-02-07 14:49:07 +00:00
use Sarga\API\Http\Resources\Customer\RecipientResource;
2022-02-03 08:34:16 +00:00
use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\AddressController;
2022-02-07 14:30:10 +00:00
2022-02-03 08:34:16 +00:00
class Addresses extends AddressController
{
/**
2022-02-07 14:30:10 +00:00
* Get customer addresses.
2022-02-03 08:34:16 +00:00
*
2022-02-07 14:30:10 +00:00
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
2022-02-03 08:34:16 +00:00
*/
2022-02-07 14:30:10 +00:00
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){
2022-02-10 08:43:39 +00:00
$addresses = DB::table('addresses')
->where('customer_id',$request->user()->id)
2022-02-07 14:30:10 +00:00
->where('address_type','recipient')
->get();
return response([
2022-02-10 08:45:48 +00:00
'data' => RecipientResource::collection($addresses),
2022-02-07 14:30:10 +00:00
]);
}
public function createAddress(AddressRequest $request)
2022-02-03 08:34:16 +00:00
{
$data = $request->all();
$data['address1'] = implode(PHP_EOL, array_filter($data['address1']));
$data['customer_id'] = $request->user()->id;
2022-02-07 14:30:10 +00:00
// $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';
2022-02-03 08:34:16 +00:00
$customerAddress = $this->customerAddressRepository->create($data);
return response([
2022-02-07 14:30:10 +00:00
'data' => new AddressResource($customerAddress),
2022-02-03 08:34:16 +00:00
'message' => 'Your address has been created successfully.',
]);
}
2022-02-07 14:30:10 +00:00
public function createRecipient(RecipientRequest $request){
2022-03-06 10:54:17 +00:00
//todo use recipient address repository
2022-02-07 14:30:10 +00:00
$data = $request->all();
$data['address_type'] = 'recipient';
$data['customer_id'] = $request->user()->id;
$data['address1'] = 'recipient';
$data['city'] = 'recipient';
return response([
2022-02-07 14:49:07 +00:00
'data' => new RecipientResource($this->customerAddressRepository->create($data)),
2022-02-07 14:30:10 +00:00
'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)
{
2022-03-06 10:54:17 +00:00
//todo use recipient address repository
2022-04-15 10:03:55 +00:00
if(\DB::table('addresses')->where('id',$id)
->where('customer_id',$request->user()->id)
->update($request->all())){
2022-02-09 13:23:02 +00:00
return response([
'message' => 'Your recipient has been updated successfully.',
]);
}
2022-02-07 14:30:10 +00:00
return response([
2022-02-09 13:23:18 +00:00
'error' => 'not found'
2022-02-07 14:30:10 +00:00
]);
2022-02-09 13:23:02 +00:00
2022-02-07 14:30:10 +00:00
}
2022-04-15 10:03:55 +00:00
/**
* Delete customer address.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request, int $id)
{
if(\DB::table('addresses')->where('id',$id)
->where('customer_id',$request->user()->id)
->delete()){
return response([
'message' => 'Item removed successfully.',
]);
}
return response([
'error' => 'not found'
]);
}
2022-02-03 08:34:16 +00:00
}