You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.6 KiB
67 lines
2.6 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
use App\CentralLogics\CustomerLogic;
|
|
use App\CentralLogics\Helpers;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\BusinessSetting;
|
|
use App\Models\LoyaltyPointTransaction;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class LoyaltyPointController extends Controller
|
|
{
|
|
public function point_transfer(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'point' => 'required|integer|min:1'
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => Helpers::error_processor($validator)], 403);
|
|
}
|
|
|
|
if($request->user()->loyalty_point <= 0 || $request->user()->loyalty_point < (int)BusinessSetting::where('key','loyalty_point_minimum_point')->first()->value || $request->point > $request->user()->loyalty_point) {
|
|
return response()->json(['errors' => [ ['code' => 'point', 'message' => trans('messages.insufficient_point')]]], 203);
|
|
}
|
|
|
|
try
|
|
{
|
|
$wallet_transaction = CustomerLogic::create_wallet_transaction($request->user()->id,$request->point,'loyalty_point',$request->reference);
|
|
CustomerLogic::create_loyalty_point_transaction($request->user()->id, $wallet_transaction->transaction_id, $request->point, 'point_to_wallet');
|
|
if(config('mail.status')) {
|
|
Mail::to($request->user()->email)->send(new \App\Mail\AddFundToWallet($wallet_transaction));
|
|
}
|
|
|
|
return response()->json(['message' => translate('messages.point_to_wallet_transfer_successfully')], 200);
|
|
}catch(\Exception $ex){
|
|
info($ex);
|
|
}
|
|
|
|
return response()->json(['errors' => [ ['code' => 'customer_wallet', 'message' => translate('messages.failed_to_transfer')]]], 203);
|
|
}
|
|
|
|
public function transactions(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'limit' => 'required',
|
|
'offset' => 'required',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => Helpers::error_processor($validator)], 403);
|
|
}
|
|
|
|
$paginator = LoyaltyPointTransaction::where('user_id', $request->user()->id)->latest()->paginate($request->limit, ['*'], 'page', $request->offset);
|
|
|
|
$data = [
|
|
'total_size' => $paginator->total(),
|
|
'limit' => $request->limit,
|
|
'offset' => $request->offset,
|
|
'data' => $paginator->items()
|
|
];
|
|
return response()->json($data, 200);
|
|
}
|
|
}
|
|
|