diff --git a/app/Http/Controllers/Admin/APIs/Customer_API/RestaurantControllerApi.php b/app/Http/Controllers/Admin/APIs/Customer_API/RestaurantControllerApi.php index 19b8990..c2d08c2 100644 --- a/app/Http/Controllers/Admin/APIs/Customer_API/RestaurantControllerApi.php +++ b/app/Http/Controllers/Admin/APIs/Customer_API/RestaurantControllerApi.php @@ -170,4 +170,32 @@ class RestaurantControllerApi extends Controller return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); } } + + /** + * Created By : Sayli Raut + * Created at : 04 June 2024 + * Use : To redeem restaurant. + */ + public function redeemRestaurant(Request $request) + { + try { + $token = readHeaderToken(); + if ($token) { + $customerIamId = $token['sub']; + $validator = Validator::make($request->all(), [ + 'id' => 'required', + ]); + + if ($validator->fails()) { + return jsonResponseWithErrorMessageApi($validator->errors()->first(), 400); + } + return $this->RestaurantApiServices->redeemRestaurant($customerIamId, $request); + } else { + return jsonResponseWithErrorMessageApi(__('auth.user_deleted'), 409); + } + } catch (\Exception $e) { + Log::error('Passport function failed: ' . $e->getMessage()); + return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); + } + } } diff --git a/app/Models/RedeemRestaurant.php b/app/Models/RedeemRestaurant.php new file mode 100644 index 0000000..b737e53 --- /dev/null +++ b/app/Models/RedeemRestaurant.php @@ -0,0 +1,27 @@ +where('restaurant_xid', $restaurant->id) ->first(); - if (!$existingFavourite) { - return jsonResponseWithErrorMessage(__('auth.data_not_found'), 404); - } + if (!$existingFavourite) { + return jsonResponseWithErrorMessage(__('auth.data_not_found'), 404); + } if ($existingFavourite) { $existingFavourite->delete(); } @@ -181,7 +182,6 @@ class RestaurantApiServices return jsonResponseWithSuccessMessageApi(__('auth.restaurant_search'), $restaurants, 200); - } catch (Exception $ex) { Log::error('Search from favourite restaurant service failed: ' . $ex->getMessage()); return response()->json([ @@ -190,4 +190,30 @@ class RestaurantApiServices } } + + public function redeemRestaurant($customerIamId, $request) + { + try { + $restaurantId = $request->id; + + $restaurant = ManageRestaurant::with('operatingHours')->where('short_id', $restaurantId)->first(); + + if ($restaurant) { + $redeemRestaurant = new RedeemRestaurant(); + $redeemRestaurant->iam_principal_xid = $customerIamId; + $redeemRestaurant->manage_restaurants_xid = $restaurant->id; + $redeemRestaurant->is_redeem = 1; // Redeem restaurant + $redeemRestaurant->redeem_date = now(); + $redeemRestaurant->is_redeemption_undone = 0; + $redeemRestaurant->redeemption_undone_date = null; + $redeemRestaurant->save(); + } else { + return jsonResponseWithErrorMessageApi(__('auth.restaurant_not_found'), 404); + } + return jsonResponseWithSuccessMessageApi(__('success.redeem_voucher'), $redeemRestaurant, 200); + } catch (Exception $ex) { + Log::error('Restaurant Reedem service failed: ' . $ex->getMessage()); + return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500); + } + } } diff --git a/database/migrations/2024_06_04_115811_create_redeem_restaurant.php b/database/migrations/2024_06_04_115811_create_redeem_restaurant.php new file mode 100644 index 0000000..73c8fb0 --- /dev/null +++ b/database/migrations/2024_06_04_115811_create_redeem_restaurant.php @@ -0,0 +1,40 @@ +id(); + $table->unsignedBigInteger('iam_principal_xid'); + $table->foreign('iam_principal_xid')->references('id')->on('iam_principal')->onDelete('cascade'); + $table->unsignedBigInteger('manage_restaurants_xid'); + $table->foreign('manage_restaurants_xid')->references('id')->on('manage_restaurants')->onDelete('cascade'); + $table->boolean('is_active')->default(1)->comment('1=Active, 0=Expired'); + $table->boolean('is_redeem')->default(0)->comment('1=Redeem, 0=Not Redeem'); + $table->integer('count')->default(0); + $table->timestamp('redeem_date')->nullable(); + $table->boolean('is_redeemption_undone')->default(0); + $table->timestamp('redeemption_undone_date')->nullable(); + $table->integer('created_by')->nullable(); + $table->integer('modified_by')->nullable(); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('redeem_restaurant'); + } +}; diff --git a/routes/customer_api.php b/routes/customer_api.php index 229c5ea..5950075 100644 --- a/routes/customer_api.php +++ b/routes/customer_api.php @@ -52,6 +52,7 @@ Route::middleware(['customerApiBasicAuth'])->group(function () { Route::get('/v1/list-of-coordinates', [RestaurantControllerApi::class, 'getCoordinates']); Route::post('/v1/remove-from-favourite', [RestaurantControllerApi::class, 'removeFromFavourite']); Route::post('/v1/search-from-favourite', [RestaurantControllerApi::class, 'searchFromFavourite']); + Route::post('/v1/redeem-restaurant', [RestaurantControllerApi::class, 'redeemRestaurant']);