@@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\APIs\RestaurantApi;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Services\APIs\RestaurantService\RestAuthApiService;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class RestAuthApiController extends Controller
|
||||||
|
{
|
||||||
|
protected $RestAuthApiService;
|
||||||
|
|
||||||
|
public function __construct(RestAuthApiService $RestAuthApiService)
|
||||||
|
{
|
||||||
|
$this->RestAuthApiService = $RestAuthApiService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function viewresyaurant()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$response = $this->RestAuthApiService->viewresyaurant();
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('success.data_fetched_successfully'), $response, 200);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Log::error('FAW get data controller function failed: ' . $e->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function restRegister(Request $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
'first_name' => 'required|string|min:2|max:100',
|
||||||
|
'last_name' => 'required|string|min:2|max:100',
|
||||||
|
'role' => 'required|string|min:2|max:100',
|
||||||
|
'restaurant_xid' => 'required',
|
||||||
|
'date_of_birth' => 'required|date',
|
||||||
|
'email_address' => [
|
||||||
|
'required',
|
||||||
|
'string',
|
||||||
|
'email',
|
||||||
|
'max:100',
|
||||||
|
Rule::unique('iam_principal')->where(function ($query) {
|
||||||
|
return $query->where('principal_type_xid', 4)->whereNull('deleted_at');
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
'phone_number' => 'required|min:10',
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
$validationErrors = $validator->errors()->all();
|
||||||
|
Log::error("Registration validation error: " . implode(", ", $validationErrors));
|
||||||
|
return jsonResponseWithErrorMessageApi($validationErrors, 403);
|
||||||
|
}
|
||||||
|
return $this->RestAuthApiService->restRegister($request);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
Log::error("Registration API Failed: " . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessage(__('error_message.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,12 +4,151 @@ namespace App\Http\Controllers\Admin;
|
|||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use App\Models\IamPrincipal;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Models\ManageRestaurant;
|
||||||
|
|
||||||
|
|
||||||
class DashboardController extends Controller
|
class DashboardController extends Controller
|
||||||
{
|
{
|
||||||
public function index(){
|
// public function showDashboard(){
|
||||||
|
|
||||||
|
|
||||||
return view('Admin.dashboard');
|
// return view('Admin.dashboard');
|
||||||
|
// }
|
||||||
|
public function showDashboard()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
// Fetching data for sorting by day
|
||||||
|
// $dailyData = OrderedPassport::select(DB::raw("COUNT(*) as count"), DB::raw("DATE(created_at) as date"))
|
||||||
|
// ->whereBetween('created_at', [now()->subDays(7), now()]) // Fetch data for the last 7 days
|
||||||
|
// ->groupBy(DB::raw("DATE(created_at)"))
|
||||||
|
// ->orderBy(DB::raw("DATE(created_at)"))
|
||||||
|
// ->pluck('count', 'date')
|
||||||
|
// ->toArray();
|
||||||
|
|
||||||
|
// Ensure that $dailyData contains zeros for days with no data
|
||||||
|
$start_date = now()->subDays(7)->startOfDay();
|
||||||
|
$end_date = now()->endOfDay();
|
||||||
|
$formattedDailyData = [];
|
||||||
|
while ($start_date <= $end_date) {
|
||||||
|
$formattedDailyData[$start_date->format('Y-m-d')] = isset($dailyData[$start_date->format('Y-m-d')]) ? $dailyData[$start_date->format('Y-m-d')] : 0;
|
||||||
|
$start_date->addDay();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default sales chart data (monthly)
|
||||||
|
// $defaultData = OrderedPassport::select(DB::raw("COUNT(*) as count"), DB::raw("MONTH(created_at) as month"))
|
||||||
|
// ->whereYear('created_at', date('Y'))
|
||||||
|
// ->groupBy(DB::raw("MONTH(created_at)"))
|
||||||
|
// ->orderBy(DB::raw("MONTH(created_at)"))
|
||||||
|
// ->pluck('count', 'month')
|
||||||
|
// ->toArray();
|
||||||
|
|
||||||
|
// Ensure that $defaultData contains zeros for months with no data
|
||||||
|
$months = range(1, 12);
|
||||||
|
$formattedDefaultData = [];
|
||||||
|
foreach ($months as $month) {
|
||||||
|
$formattedDefaultData[$month] = isset($defaultData[$month]) ? $defaultData[$month] : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// $quarterlyData = OrderedPassport::select(
|
||||||
|
// DB::raw("COUNT(*) as count"),
|
||||||
|
// DB::raw("QUARTER(created_at) as quarter")
|
||||||
|
// )
|
||||||
|
// ->whereYear('created_at', date('Y'))
|
||||||
|
// ->groupBy(DB::raw("QUARTER(created_at)"))
|
||||||
|
// ->orderBy(DB::raw("QUARTER(created_at)"))
|
||||||
|
// ->pluck('count', 'quarter')
|
||||||
|
// ->toArray();
|
||||||
|
|
||||||
|
// Ensure that $quarterlyData contains zeros for quarters with no data
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!isset($quarterlyData[$i])) {
|
||||||
|
$quarterlyData[$i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetching data for yearly option
|
||||||
|
// $yearlyData = OrderedPassport::select(DB::raw("COUNT(*) as count"), DB::raw("YEAR(created_at) as year"))
|
||||||
|
// ->groupBy(DB::raw("YEAR(created_at)"))
|
||||||
|
// ->pluck('count', 'year')
|
||||||
|
// ->toArray();
|
||||||
|
//
|
||||||
|
// Monthly data
|
||||||
|
$dataMonthlyWithType3 = IamPrincipal::select(DB::raw("COUNT(*) as count"), DB::raw("MONTH(created_at) as month"))
|
||||||
|
->whereIn('principal_type_xid', [3])
|
||||||
|
->whereYear('created_at', date('Y'))
|
||||||
|
->groupBy(DB::raw("MONTH(created_at)"))
|
||||||
|
->orderBy(DB::raw("MONTH(created_at)"))
|
||||||
|
->pluck('count', 'month')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$dataMonthlyWithType4 = IamPrincipal::select(DB::raw("COUNT(*) as count"), DB::raw("MONTH(created_at) as month"))
|
||||||
|
->whereIn('principal_type_xid', [4])
|
||||||
|
->whereYear('created_at', date('Y'))
|
||||||
|
->groupBy(DB::raw("MONTH(created_at)"))
|
||||||
|
->orderBy(DB::raw("MONTH(created_at)"))
|
||||||
|
->pluck('count', 'month')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Quarterly data
|
||||||
|
$dataQuarterlyWithType3 = IamPrincipal::select(
|
||||||
|
DB::raw("COUNT(*) as count"),
|
||||||
|
DB::raw("QUARTER(created_at) as quarter")
|
||||||
|
)
|
||||||
|
->whereIn('principal_type_xid', [3])
|
||||||
|
->groupBy(DB::raw("QUARTER(created_at)"))
|
||||||
|
->orderBy(DB::raw("QUARTER(created_at)"))
|
||||||
|
->pluck('count', 'quarter')
|
||||||
|
->toArray();
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!isset($dataQuarterlyWithType3[$i])) {
|
||||||
|
$dataQuarterlyWithType3[$i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$dataQuarterlyWithType4 = IamPrincipal::select(
|
||||||
|
DB::raw("COUNT(*) as count"),
|
||||||
|
DB::raw("QUARTER(created_at) as quarter")
|
||||||
|
)
|
||||||
|
->whereIn('principal_type_xid', [4])
|
||||||
|
->groupBy(DB::raw("QUARTER(created_at)"))
|
||||||
|
->orderBy(DB::raw("QUARTER(created_at)"))
|
||||||
|
->pluck('count', 'quarter')
|
||||||
|
->toArray();
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!isset($dataQuarterlyWithType4[$i])) {
|
||||||
|
$dataQuarterlyWithType4[$i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Yearly data
|
||||||
|
$dataYearlyWithType3 = IamPrincipal::select(DB::raw("COUNT(*) as count"), DB::raw("YEAR(created_at) as year"))
|
||||||
|
->whereIn('principal_type_xid', [3])
|
||||||
|
->groupBy(DB::raw("YEAR(created_at)"))
|
||||||
|
->pluck('count', 'year')
|
||||||
|
->toArray();
|
||||||
|
// dd($dataYearlyWithType3);
|
||||||
|
|
||||||
|
$dataYearlyWithType4 = IamPrincipal::select(DB::raw("COUNT(*) as count"), DB::raw("YEAR(created_at) as year"))
|
||||||
|
->whereIn('principal_type_xid', [4])
|
||||||
|
->groupBy(DB::raw("YEAR(created_at)"))
|
||||||
|
->pluck('count', 'year')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
|
||||||
|
$customerCount = IamPrincipal::where('principal_type_xid', '=', 3)->count();
|
||||||
|
// $activePassports = ManagePassport::where('is_active', 1)->take(12)->get();
|
||||||
|
// $restaurantCount = ManageRestaurant::where('is_redeem', 1)->count();
|
||||||
|
$restaurantCount = ManageRestaurant::where('is_active', 1)->count();
|
||||||
|
|
||||||
|
// $recent_transaction = OrderedPassport::with('order', 'order_passport', 'carts.passport', 'iamPrincipal')->get()->toArray();
|
||||||
|
// $datas = MyPassportVoucher::with('passportVouchers', 'passportData', 'customer')->get()->toArray();
|
||||||
|
|
||||||
|
// Pass the data to the view
|
||||||
|
// return view('Admin.dashboard', compact('customerCount', 'activePassports', 'restaurantCount', 'recent_transaction', 'datas', 'formattedDefaultData', 'quarterlyData', 'yearlyData', 'dataMonthlyWithType3', 'dataMonthlyWithType4', 'dataQuarterlyWithType3', 'dataQuarterlyWithType4', 'dataYearlyWithType3', 'dataYearlyWithType4','formattedDailyData'));
|
||||||
|
return view('Admin.dashboard', compact('customerCount','restaurantCount','dataMonthlyWithType3','dataMonthlyWithType4','dataQuarterlyWithType3', 'dataQuarterlyWithType4', 'dataYearlyWithType3', 'dataYearlyWithType4'));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,30 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
class ManageRestaurant extends Model
|
class ManageRestaurant extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
protected $table='manage_restaurants';
|
||||||
|
protected $fillable=[
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'description',
|
||||||
|
'restaurant_id',
|
||||||
|
'address',
|
||||||
|
'image',
|
||||||
|
'bio',
|
||||||
|
'try_on_1',
|
||||||
|
'try_on_2',
|
||||||
|
'try_on_3',
|
||||||
|
'try_on_4',
|
||||||
|
'exclusion',
|
||||||
|
'latitude',
|
||||||
|
'longtitude',
|
||||||
|
'is_active',
|
||||||
|
'created_by',
|
||||||
|
'modified_by',
|
||||||
|
'deleted_at',
|
||||||
|
'created_at',
|
||||||
|
'updated_at'
|
||||||
|
|
||||||
|
];
|
||||||
public function operatingHours()
|
public function operatingHours()
|
||||||
{
|
{
|
||||||
return $this->hasMany(OperatingHour::class, 'manage_restaurant_xid');
|
return $this->hasMany(OperatingHour::class, 'manage_restaurant_xid');
|
||||||
|
|||||||
248
app/Services/APIs/RestaurantService/RedeemApiService.php
Normal file
248
app/Services/APIs/RestaurantService/RedeemApiService.php
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\APIs\RestaurantService;
|
||||||
|
|
||||||
|
use App\Helpers\onesignalhelper;
|
||||||
|
use App\Models\admin\ManageVoucherModel;
|
||||||
|
use App\Models\IamPrincipal;
|
||||||
|
use App\Models\IamPrincipalRestaurantRole;
|
||||||
|
use App\Models\MyPassportVoucher;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class RedeemApiService
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getRedemedData($restIamId)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$rest = IamPrincipal::findOrFail($restIamId);
|
||||||
|
$data['user_detail'] = IamPrincipal::select('id', 'first_name', 'last_name', 'email_address', 'phone_number', 'date_of_birth')->find($rest->id);
|
||||||
|
|
||||||
|
$restaurantRoles = IamPrincipalRestaurantRole::select('id', 'principal_xid', 'restaurant_xid', 'role')->where('principal_xid', $rest->id)->get();
|
||||||
|
|
||||||
|
$restaurantDetail = [];
|
||||||
|
foreach ($restaurantRoles as $role) {
|
||||||
|
$restaurantImage = ManageVoucherModel::select('id', 'coupon_name', 'description', 'thumbnail_image', 'image', 'location_name')->find($role->restaurant_xid);
|
||||||
|
if ($restaurantImage) {
|
||||||
|
$restaurantImage->thumbnail_image = ListingImageUrl('voucher_thumbnail_images', $restaurantImage->thumbnail_image);
|
||||||
|
$restaurantImage->image = ListingImageUrl('voucher_images', $restaurantImage->image);
|
||||||
|
}
|
||||||
|
$restaurantDetail[] = $restaurantImage;
|
||||||
|
|
||||||
|
$redeemedVouchers = [];
|
||||||
|
$redemptionUndoneVouchers = [];
|
||||||
|
|
||||||
|
$vouchers = MyPassportVoucher::select('id', 'order_xid', 'iam_principal_xid', 'manage_passports_xid', 'manage_vouchers_xid', 'is_redeem', 'count', 'redeem_date', 'is_redeemption_undone')
|
||||||
|
->where('manage_vouchers_xid', $role->restaurant_xid)
|
||||||
|
->where('is_redeem', 1)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$redeemptionUndone = MyPassportVoucher::select('id', 'order_xid', 'iam_principal_xid', 'manage_passports_xid', 'manage_vouchers_xid', 'is_redeem', 'count', 'redeem_date', 'is_redeemption_undone', 'redeemption_undone_date')
|
||||||
|
->where('manage_vouchers_xid', $role->restaurant_xid)
|
||||||
|
->where([['is_redeem', 0], ['is_redeemption_undone', 1]])
|
||||||
|
->get();
|
||||||
|
|
||||||
|
foreach ($vouchers as $voucher) {
|
||||||
|
$userDetail = IamPrincipal::select('id', 'first_name', 'email_address', 'profile_photo', 'address_line1')
|
||||||
|
->where('id', $voucher->iam_principal_xid)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($userDetail) {
|
||||||
|
if ($userDetail->profile_photo) {
|
||||||
|
$userDetail->profile_photo = ListingImageUrl('profile_image', $userDetail->profile_photo);
|
||||||
|
} else {
|
||||||
|
$userDetail->profile_photo = asset('public/assets/img/blankProfile.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
$voucher->user_detail = $userDetail;
|
||||||
|
$redeemedVouchers[] = $voucher;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Log::error('User detail not found for IAM principal ID: ' . $voucher->iam_principal_xid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($redeemptionUndone as $undone) {
|
||||||
|
$userDetail = IamPrincipal::select('id', 'first_name', 'email_address', 'profile_photo', 'address_line1')
|
||||||
|
->where('id', $undone->iam_principal_xid)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($userDetail) {
|
||||||
|
if ($userDetail->profile_photo) {
|
||||||
|
$userDetail->profile_photo = ListingImageUrl('profile_image', $userDetail->profile_photo);
|
||||||
|
} else {
|
||||||
|
$userDetail->profile_photo = asset('public/assets/img/blankProfile.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
$undone->user_detail = $userDetail;
|
||||||
|
$redemptionUndoneVouchers[] = $undone;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Log::error('User detail not found for IAM principal ID: ' . $undone->iam_principal_xid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$restaurantDetail['redeemed_vouchers'] = $redeemedVouchers;
|
||||||
|
$restaurantDetail['redemption_undone_vouchers'] = $redemptionUndoneVouchers;
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.User_details_fetch'), $restaurantDetail, 200);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
Log::error('Restaurant Get data service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function undoRedemption($restIamId, $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$voucherDetail = MyPassportVoucher::with('passportData', 'voucherData')->where('id', $request->voucher_id)->first();
|
||||||
|
if ($voucherDetail) {
|
||||||
|
$voucherDetail->update([
|
||||||
|
'is_redeem' => 0,
|
||||||
|
'redeem_date' => null,
|
||||||
|
'is_redeemption_undone' => 1,
|
||||||
|
'redeemption_undone_date' => now(),
|
||||||
|
|
||||||
|
]);
|
||||||
|
$imagePath = ListingImageUrl('voucher_images', $voucherDetail->voucherData->image);
|
||||||
|
$customerTitle = "Your voucher was successfully undo redemption for " . $voucherDetail->passportData->passport_name;
|
||||||
|
$customerMessage = $voucherDetail->voucherData->coupon_name . " Voucher Undo Redemption Successfully";
|
||||||
|
$customerContentType = 'Voucher_UndoRedemption';
|
||||||
|
$customerImageUrl = $imagePath;
|
||||||
|
$customerData = IamPrincipal::where('id', $voucherDetail->iam_principal_xid)->where('notification_status', 1)->where('principal_type_xid', 3)->first();
|
||||||
|
if ($customerData) {
|
||||||
|
$pushNotificationToCustomer = onesignalhelper::sendNotificationApi(
|
||||||
|
$customerData->one_signal_player_id,
|
||||||
|
$customerTitle,
|
||||||
|
$customerMessage,
|
||||||
|
$customerContentType,
|
||||||
|
$customerImageUrl,
|
||||||
|
$id = null
|
||||||
|
);
|
||||||
|
|
||||||
|
onesignalhelper::StoreNotificationDetails($customerData->id, $customerContentType, $customerTitle, $customerImageUrl);
|
||||||
|
}
|
||||||
|
$restUser = IamPrincipal::where('id', $restIamId)->where('notification_status', 1)->where('principal_type_xid', 4)->first();
|
||||||
|
if ($restUser) {
|
||||||
|
$restImagePath = ListingImageUrl('voucher_images', $voucherDetail->voucherData->image);
|
||||||
|
$restTitle = "voucher Undo redemption successful for " . $voucherDetail->passportData->passport_name;
|
||||||
|
$restMessage = $voucherDetail->voucherData->coupon_name . " Voucher Undo Redemption Successfully";
|
||||||
|
$restContentType = 'Voucher_UndoRedemption';
|
||||||
|
$restImageUrl = $restImagePath;
|
||||||
|
|
||||||
|
$pushNotificationToCustomer = onesignalhelper::restSendNotificationApi(
|
||||||
|
$restUser->one_signal_player_id,
|
||||||
|
$restTitle,
|
||||||
|
$restMessage,
|
||||||
|
$restContentType,
|
||||||
|
$restImageUrl,
|
||||||
|
$id = null
|
||||||
|
);
|
||||||
|
|
||||||
|
onesignalhelper::StoreNotificationDetails($restUser->id, $restContentType, $restTitle, $restImageUrl);
|
||||||
|
}
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.data_updated_successfully'), 200);
|
||||||
|
} else {
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.voucher_not_found'), 404);
|
||||||
|
}
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
Log::error('Restaurant update profile service failed: ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function searchRedemption($restIamId, $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$searchQuery = $request->input('search_data');
|
||||||
|
|
||||||
|
$rest = IamPrincipal::findOrFail($restIamId);
|
||||||
|
$data['user_detail'] = IamPrincipal::select('id', 'first_name', 'last_name', 'email_address', 'phone_number', 'date_of_birth')->find($rest->id);
|
||||||
|
|
||||||
|
$restaurantRoles = IamPrincipalRestaurantRole::select('id', 'principal_xid', 'restaurant_xid', 'role')->where('principal_xid', $rest->id)->get();
|
||||||
|
|
||||||
|
$restaurantDetail = [];
|
||||||
|
foreach ($restaurantRoles as $role) {
|
||||||
|
$restaurantImage = ManageVoucherModel::select('id', 'coupon_name', 'description', 'thumbnail_image', 'image', 'location_name')->find($role->restaurant_xid);
|
||||||
|
if ($restaurantImage) {
|
||||||
|
$restaurantImage->thumbnail_image = ListingImageUrl('voucher_thumbnail_images', $restaurantImage->thumbnail_image);
|
||||||
|
$restaurantImage->image = ListingImageUrl('voucher_images', $restaurantImage->image);
|
||||||
|
}
|
||||||
|
$restaurantDetail[] = $restaurantImage;
|
||||||
|
|
||||||
|
$redeemedVouchers = [];
|
||||||
|
$redemptionUndoneVouchers = [];
|
||||||
|
|
||||||
|
$vouchers = MyPassportVoucher::select('id', 'order_xid', 'iam_principal_xid', 'manage_passports_xid', 'manage_vouchers_xid', 'is_redeem', 'count', 'redeem_date', 'is_redeemption_undone')
|
||||||
|
->where('manage_vouchers_xid', $role->restaurant_xid)
|
||||||
|
->where('is_redeem', 1)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
foreach ($vouchers as $voucher) {
|
||||||
|
$userDetail = IamPrincipal::select('id', 'first_name', 'email_address', 'profile_photo', 'address_line1')
|
||||||
|
->where('id', $voucher->iam_principal_xid)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($userDetail && (stripos($userDetail->first_name, $searchQuery) !== false || stripos($voucher->id, $searchQuery) !== false || stripos($voucher->redeem_date, $searchQuery) !== false)) {
|
||||||
|
if ($userDetail->profile_photo) {
|
||||||
|
$userDetail->profile_photo = ListingImageUrl('profile_image', $userDetail->profile_photo);
|
||||||
|
} else {
|
||||||
|
$userDetail->profile_photo = asset('public/assets/img/blankProfile.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
$voucher->user_detail = $userDetail;
|
||||||
|
$redeemedVouchers[] = $voucher;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Log::error('User detail not found for IAM principal ID: ' . $voucher->iam_principal_xid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$redeemptionUndone = MyPassportVoucher::select('id', 'order_xid', 'iam_principal_xid', 'manage_passports_xid', 'manage_vouchers_xid', 'is_redeem', 'count', 'redeem_date', 'is_redeemption_undone', 'redeemption_undone_date')
|
||||||
|
->where('manage_vouchers_xid', $role->restaurant_xid)
|
||||||
|
->where([['is_redeem', 0], ['is_redeemption_undone', 1]])
|
||||||
|
->get();
|
||||||
|
|
||||||
|
foreach ($redeemptionUndone as $undone) {
|
||||||
|
$userDetail = IamPrincipal::select('id', 'first_name', 'email_address', 'profile_photo', 'address_line1')
|
||||||
|
->where('id', $undone->iam_principal_xid)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($userDetail && (stripos($userDetail->first_name, $searchQuery) !== false || stripos($undone->id, $searchQuery) !== false || stripos($undone->redeemption_undone_date, $searchQuery) !== false)) {
|
||||||
|
if ($userDetail->profile_photo) {
|
||||||
|
$userDetail->profile_photo = ListingImageUrl('profile_image', $userDetail->profile_photo);
|
||||||
|
} else {
|
||||||
|
$userDetail->profile_photo = asset('public/assets/img/blankProfile.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
$undone->user_detail = $userDetail;
|
||||||
|
$redemptionUndoneVouchers[] = $undone;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Log::error('User detail not found for IAM principal ID: ' . $undone->iam_principal_xid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($searchQuery)) {
|
||||||
|
$restaurantDetail['redeemed_vouchers'] = $redeemedVouchers;
|
||||||
|
$restaurantDetail['redemption_undone_vouchers'] = $redemptionUndoneVouchers;
|
||||||
|
}
|
||||||
|
|
||||||
|
$restaurantDetail['redeemed_vouchers'] = $redeemedVouchers;
|
||||||
|
$restaurantDetail['redemption_undone_vouchers'] = $redemptionUndoneVouchers;
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.User_details_fetch'), $restaurantDetail, 200);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
Log::error('Restaurant Get data service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
364
app/Services/APIs/RestaurantService/RestAuthApiService.php
Normal file
364
app/Services/APIs/RestaurantService/RestAuthApiService.php
Normal file
@@ -0,0 +1,364 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\APIs\RestaurantService;
|
||||||
|
|
||||||
|
use App\Models\admin\ManageRestaurant;
|
||||||
|
use App\Models\admin\ManageVoucherModel;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use App\Models\IamPrincipal;
|
||||||
|
use App\Models\IamPrincipalOtp;
|
||||||
|
use App\Models\IamPrincipalRestaurantRole;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
use Illuminate\Database\QueryException;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Throwable;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class RestAuthApiService
|
||||||
|
{
|
||||||
|
public function viewresyaurant()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data = ManageVoucherModel::select('id', 'coupon_name')->where('is_active', 1)->get()->toArray();
|
||||||
|
return $data;
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Terms and condition Get service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function restRegister($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
$restaurantId = $request->input('restaurant_xid');
|
||||||
|
|
||||||
|
// Fetch the restaurant details based on the selected restaurantId
|
||||||
|
$selectedRestaurant = ManageVoucherModel::find($restaurantId);
|
||||||
|
|
||||||
|
if (!$selectedRestaurant) {
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.restaurant_data_not_found'), 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new restaurant user record
|
||||||
|
$restaurantuser = IamPrincipal::create([
|
||||||
|
'one_signal_player_id' => $request->one_signal_player_id,
|
||||||
|
'first_name' => $request->first_name,
|
||||||
|
'last_name' => $request->last_name,
|
||||||
|
'email_address' => $request->email_address,
|
||||||
|
// 'password' => Hash::make('Cheers@123'),
|
||||||
|
'principal_type_xid' => 4, //4 for restaurant
|
||||||
|
'principal_source_xid' => 2, //2 for mobile
|
||||||
|
'phone_number' => $request->phone_number,
|
||||||
|
'date_of_birth' => $request->date_of_birth,
|
||||||
|
'is_active' => '0',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$restaurantUserRole = IamPrincipalRestaurantRole::create([
|
||||||
|
'principal_xid' => $restaurantuser->id,
|
||||||
|
'role' => $request->role,
|
||||||
|
'restaurant_xid' => $restaurantId,
|
||||||
|
]);
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
// $token = auth()->login($restaurantuser);
|
||||||
|
|
||||||
|
// Return response with user details, access token, and status
|
||||||
|
$response = [
|
||||||
|
'user' => $restaurantuser,
|
||||||
|
// 'restaurant_details' => $restaurantId,
|
||||||
|
// 'access_token' => $token,
|
||||||
|
'token_type' => 'bearer',
|
||||||
|
'status' => 'Your request has been sent. Kindly check your email.'
|
||||||
|
];
|
||||||
|
return jsonResponseWithSuccessMessage(__('auth.Rest_user_created'), $response, 200);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
// Rollback transaction in case of an error
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Restaurant Registration Failed ' . $e->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.authentication_failed'), 403);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function login($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$credentials = [
|
||||||
|
'email_address' => $request->email_address,
|
||||||
|
'password' => $request->password,
|
||||||
|
];
|
||||||
|
|
||||||
|
$isExistEmail = IamPrincipal::where('email_address', $request->email_address)
|
||||||
|
->where('principal_type_xid', 4)
|
||||||
|
->whereNull('deleted_at')
|
||||||
|
->first();
|
||||||
|
if ($isExistEmail == null) {
|
||||||
|
Log::error('Email not exist');
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.incorrect_email_passport'), 403);
|
||||||
|
}
|
||||||
|
if ($isExistEmail && !(Hash::check($request->password, $isExistEmail->password))) {
|
||||||
|
Log::error('Entered Password is wrong.');
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.incorrect_email_passport'), 403);
|
||||||
|
}
|
||||||
|
if (!$token = auth()->login($isExistEmail)) {
|
||||||
|
Log::error('Customer Login Failed');
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.authentication_failed'), 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
$isExistEmail->one_signal_player_id = $request->one_signal_player_id;
|
||||||
|
$isExistEmail->save();
|
||||||
|
$response = [
|
||||||
|
'userId' => $isExistEmail->id,
|
||||||
|
'access_token' => $token,
|
||||||
|
];
|
||||||
|
return jsonResponseWithSuccessMessage(__('auth.data_fetched_successfully'), $response, 200);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
|
||||||
|
|
||||||
|
Log::error('Customer Login Failed ' . $e->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.authentication_failed'), 403);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected function responseWithToken($token, $isExistEmail)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'message' => 'You have logged in successfully',
|
||||||
|
'access_token' => $token,
|
||||||
|
'token_type' => 'bearer',
|
||||||
|
'status' => 'success',
|
||||||
|
'iam_principal_id' => $isExistEmail->id
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function restForgotPassword($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
$user = IamPrincipal::where('email_address', $request->email_address)
|
||||||
|
->where('principal_type_xid', 4)
|
||||||
|
->whereNull('deleted_at')
|
||||||
|
->first();
|
||||||
|
//use this for both customer and restaurant just change principal_type_xid 4
|
||||||
|
if ($user == null) {
|
||||||
|
Log::error('Email not exist');
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.incorrect_email'), 403);
|
||||||
|
}
|
||||||
|
// Define the generateOTP function
|
||||||
|
$otp = $this->generateOTP();
|
||||||
|
|
||||||
|
IamPrincipalOTP::updateOrCreate(
|
||||||
|
['principal_xid' => $user->id],
|
||||||
|
[
|
||||||
|
'otp_code' => $otp,
|
||||||
|
'otp_purpose' => 'forgot password',
|
||||||
|
'valid_till' => Carbon::now()->addMinutes(2),
|
||||||
|
'is_used' => 0,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
// $this->email_address = $user->email_address;
|
||||||
|
|
||||||
|
$mail = Mail::send(
|
||||||
|
'frontend.Mail.customer_forgot_password_mail',
|
||||||
|
[
|
||||||
|
'user' => $user,
|
||||||
|
'otp_code' => $otp,
|
||||||
|
'valid_till' => Carbon::now()->addMinutes(2)
|
||||||
|
],
|
||||||
|
function ($message) use ($user) {
|
||||||
|
$message->to($user->email_address);
|
||||||
|
$message->subject('Forgot Password Mail Page');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
//sendmail end
|
||||||
|
$response = ['iam_principal_xid' => $user->id];
|
||||||
|
DB::commit();
|
||||||
|
Log::info('Customer Forgot Password otp sent successfully');
|
||||||
|
return jsonResponseWithSuccessMessage(__('auth.otp_sent_successfully'), $response, 200);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Customer Forgot Password OTP function failed: ' . $e->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function restVerifyOTP($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
// Retrieve the user's OTP record
|
||||||
|
$User = IamPrincipal::where('email_address', $request->email_address)
|
||||||
|
->where('principal_type_xid', 4)
|
||||||
|
->whereNull('deleted_at')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
|
||||||
|
$iamPrincipal = IamPrincipalOTP::where('principal_xid', $User->id)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
// Check if OTP record exists for the user
|
||||||
|
$errors = [];
|
||||||
|
|
||||||
|
if (!$iamPrincipal) {
|
||||||
|
$errors[] = __('auth.failed_to_verify_otp');
|
||||||
|
return jsonResponseWithErrorMessageApi(
|
||||||
|
$errors,403
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the provided OTP matches the stored OTP
|
||||||
|
if ($iamPrincipal->otp_code !== $request->otp) {
|
||||||
|
$errors[] = __('auth.invalid_otp');
|
||||||
|
return jsonResponseWithErrorMessageApi(
|
||||||
|
$errors,403
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the OTP is still valid
|
||||||
|
if (Carbon::now()->gt($iamPrincipal->valid_till)) {
|
||||||
|
$errors[] = __('auth.otp_expired');
|
||||||
|
return jsonResponseWithErrorMessageApi(
|
||||||
|
$errors,403
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the OTP has already been used
|
||||||
|
if ($iamPrincipal->is_used === 1) {
|
||||||
|
$errors[] = __('auth.otp_already_used');
|
||||||
|
return jsonResponseWithErrorMessageApi(
|
||||||
|
$errors,403
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Mark OTP as used
|
||||||
|
$iamPrincipal->is_used = 1;
|
||||||
|
$iamPrincipal->save();
|
||||||
|
DB::commit();
|
||||||
|
$response = [
|
||||||
|
'iam_principal_xid' => $User->id
|
||||||
|
];
|
||||||
|
Log::info('Customer OTP verified successfully');
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.otp_verified'), $response, 200);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function restChangePassword($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
$User = IamPrincipal::where('id', $request->iam_principal_xid)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
|
||||||
|
$User->password = Hash::make($request->password);
|
||||||
|
$User->save();
|
||||||
|
DB::commit();
|
||||||
|
return $User;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage());
|
||||||
|
return response()->json(__('something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public function restResendOtp($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
// Retrieve the user's OTP record
|
||||||
|
$iamPrincipal = IamPrincipalOTP::where('principal_xid', $request->iam_principal_xid)
|
||||||
|
->first();
|
||||||
|
$user = IamPrincipal::where('id', $request->iam_principal_xid)
|
||||||
|
->where('is_active', '1')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
// Check if OTP record exists for the user
|
||||||
|
if (!$iamPrincipal) {
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.not_found_otp'), 203);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the allowed resend interval (2 minutes)
|
||||||
|
$allowedResendInterval = Carbon::now()->subMinutes(2);
|
||||||
|
|
||||||
|
// Check if the user can resend OTP only after a 2-minute interval
|
||||||
|
if ($iamPrincipal->updated_at >= $allowedResendInterval) {
|
||||||
|
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.try_resend_otp'), 429);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate a new OTP for the user
|
||||||
|
$otp = $this->generateOTP();
|
||||||
|
|
||||||
|
// Update the OTP record with the new OTP and validity
|
||||||
|
$iamPrincipal->principal_xid = $request->iam_principal_xid;
|
||||||
|
$iamPrincipal->otp_code = $otp;
|
||||||
|
$iamPrincipal->otp_purpose = $request->otp_purpose;
|
||||||
|
$iamPrincipal->valid_till = Carbon::now()->addMinutes(2);
|
||||||
|
$iamPrincipal->is_used = 0;
|
||||||
|
$iamPrincipal->save();
|
||||||
|
|
||||||
|
|
||||||
|
// $this->email_address = $user->email_address;
|
||||||
|
|
||||||
|
$mail = Mail::send(
|
||||||
|
'frontend.Mail.customer_forgot_password_mail',
|
||||||
|
[
|
||||||
|
'user' => $user,
|
||||||
|
'otp_code' => $otp,
|
||||||
|
'valid_till' => Carbon::now()->addMinutes(2)
|
||||||
|
],
|
||||||
|
function ($message) use ($user) {
|
||||||
|
$message->to($user->email_address);
|
||||||
|
$message->subject('Forgot Password Mail Page');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
$response = [
|
||||||
|
'iam_principal_xid' => $iamPrincipal->principal_xid,
|
||||||
|
'email_address' => $user->email_address
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.otp_resend_sent_successfully'), $response, 200);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage());
|
||||||
|
return response()->json(__('something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateOTP()
|
||||||
|
{
|
||||||
|
// Define the length of the OTP
|
||||||
|
$otpLength = 4;
|
||||||
|
|
||||||
|
// Generate a random OTP with $otpLength digits
|
||||||
|
$otp = '';
|
||||||
|
for ($i = 0; $i < $otpLength; $i++) {
|
||||||
|
$otp .= rand(0, 9);
|
||||||
|
}
|
||||||
|
return $otp;
|
||||||
|
}
|
||||||
|
}
|
||||||
176
app/Services/APIs/RestaurantService/RestCMSService.php
Normal file
176
app/Services/APIs/RestaurantService/RestCMSService.php
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\APIs\RestaurantService;
|
||||||
|
|
||||||
|
use App\Models\admin\Aboutus;
|
||||||
|
use App\Models\admin\AboutUsCategory;
|
||||||
|
use App\Models\admin\ManageContactus;
|
||||||
|
use App\Models\admin\NewsArticle;
|
||||||
|
use App\Models\admin\PrivacyPolicy;
|
||||||
|
use App\Models\Faq;
|
||||||
|
use App\Models\IamPrincipal;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Exception;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class RestCMSService
|
||||||
|
{
|
||||||
|
public function RestGetFaq()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data['customer'] = Faq::select('id', 'question', 'answers')
|
||||||
|
->where([['is_active', '1'], ['faq_category_id', '1']])
|
||||||
|
->get()
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$data['restaurant'] = Faq::select('id', 'question', 'answers')
|
||||||
|
->where([['is_active', '1'], ['faq_category_id', '2']])
|
||||||
|
->get()
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Faq Get service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function RestAboutUs()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data['customer'] = Aboutus::select('id', 'title', 'thumbnail_image', 'description', 'aboutus_category_xid')
|
||||||
|
->where('aboutus_category_xid', '1')
|
||||||
|
->get()
|
||||||
|
->map(function ($item) {
|
||||||
|
$item['description'] = strip_tags($item['description']);
|
||||||
|
return $item;
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$data['restaurant'] = Aboutus::select('id', 'title', 'thumbnail_image', 'description', 'aboutus_category_xid')
|
||||||
|
->where('aboutus_category_xid', '2')
|
||||||
|
->get()
|
||||||
|
->map(function ($item) {
|
||||||
|
$item['description'] = strip_tags($item['description']);
|
||||||
|
return $item;
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
foreach ($data['customer'] as $k => $val) {
|
||||||
|
$data['customer'][$k]['thumbnail_image'] = ListingImageUrl('about_images', $val['thumbnail_image']);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($data['restaurant'] as $k => $val) {
|
||||||
|
$data['restaurant'][$k]['thumbnail_image'] = ListingImageUrl('about_images', $val['thumbnail_image']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('About us Get service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function RestPrivacyPolicy()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data['customer'] = PrivacyPolicy::select('id', 'description')
|
||||||
|
->where('terms_category_id', '1')
|
||||||
|
->get()
|
||||||
|
->map(function ($item) {
|
||||||
|
$item['description'] = strip_tags($item['description']);
|
||||||
|
return $item;
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$data['restaurant'] = PrivacyPolicy::select('id', 'description')
|
||||||
|
->where('terms_category_id', '2')
|
||||||
|
->get()
|
||||||
|
->map(function ($item) {
|
||||||
|
$item['description'] = strip_tags($item['description']);
|
||||||
|
return $item;
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
return $data;
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Privacy policy Get service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function RestNewsArticles()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$data['customer'] = NewsArticle::select('id', 'name', 'description', 'thumbnail_image', 'image')
|
||||||
|
->where([['is_active', '1'], ['news_articles_category_xid', '1']])
|
||||||
|
->get()
|
||||||
|
->map(function ($item) {
|
||||||
|
$item['description'] = strip_tags($item['description']);
|
||||||
|
return $item;
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$data['restaurant'] = NewsArticle::select('id', 'name', 'description', 'thumbnail_image', 'image')
|
||||||
|
->where([['is_active', '1'], ['news_articles_category_xid', '2']])
|
||||||
|
->get()
|
||||||
|
->map(function ($item) {
|
||||||
|
$item['description'] = strip_tags($item['description']);
|
||||||
|
return $item;
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
//thumbnail_image for 'customer' data
|
||||||
|
foreach ($data['customer'] as $k => $val) {
|
||||||
|
$data['customer'][$k]['thumbnail_image'] = ListingImageUrl('news_article_thumb', $val['thumbnail_image']);
|
||||||
|
$data['customer'][$k]['image'] = ListingImageUrl('news_article', $val['image']);
|
||||||
|
}
|
||||||
|
|
||||||
|
//thumbnail_image for 'restaurant' data
|
||||||
|
foreach ($data['restaurant'] as $k => $val) {
|
||||||
|
$data['restaurant'][$k]['thumbnail_image'] = ListingImageUrl('news_article_thumb', $val['thumbnail_image']);
|
||||||
|
$data['restaurant'][$k]['image'] = ListingImageUrl('news_article', $val['image']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('News and articles Get service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function RestContactUs($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
//create user_data
|
||||||
|
$user_data = IamPrincipal::where('id', $request['iam_principal_id'])->first();
|
||||||
|
if ($user_data) {
|
||||||
|
// Create a new instance of ManageContactus model
|
||||||
|
$contact = new ManageContactus();
|
||||||
|
$contact->principal_xid = $user_data->id;
|
||||||
|
$contact->name = $request->name;
|
||||||
|
$contact->email = $request->email;
|
||||||
|
$contact->message = $request->message;
|
||||||
|
// Save the contact data
|
||||||
|
$contact->save();
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
//response data
|
||||||
|
Log::info('Contact form data Created successfully');
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('success.save_data'), [], 201);
|
||||||
|
} else {
|
||||||
|
Log::error('Contact not found in addVendorContactForm.');
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.validation_failed'), 403);
|
||||||
|
}
|
||||||
|
} catch (Throwable $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Contact API failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
213
app/Services/APIs/RestaurantService/RestaurantApiService.php
Normal file
213
app/Services/APIs/RestaurantService/RestaurantApiService.php
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\APIs\RestaurantService;
|
||||||
|
|
||||||
|
use App\Models\admin\ManageRestaurant;
|
||||||
|
use App\Models\admin\ManageVoucherModel;
|
||||||
|
use App\Models\IamPrincipal;
|
||||||
|
use App\Models\IamPrincipalRestaurantRole;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
use Illuminate\Database\QueryException;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Throwable;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class RestaurantApiService
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getRestProfileDetail($restIamId)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
// Fetch user details
|
||||||
|
$userDetail = IamPrincipal::select('id', 'first_name', 'last_name', 'email_address', 'phone_number', 'date_of_birth', 'profile_photo')
|
||||||
|
->findOrFail($restIamId);
|
||||||
|
|
||||||
|
// Set profile photo
|
||||||
|
if ($userDetail->profile_photo) {
|
||||||
|
$userDetail->profile_photo = ListingImageUrl('profile_image', $userDetail->profile_photo);
|
||||||
|
} else {
|
||||||
|
$userDetail->profile_photo = asset('public/assets/img/blankProfile.png');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find restaurant roles associated with the user
|
||||||
|
$restaurantRoles = IamPrincipalRestaurantRole::select('id', 'principal_xid', 'restaurant_xid', 'role')
|
||||||
|
->where('principal_xid', $userDetail->id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// $restaurantDetails = [];
|
||||||
|
|
||||||
|
foreach ($restaurantRoles as $restaurantRole) {
|
||||||
|
$restaurant = ManageVoucherModel::select('id', 'coupon_name', 'description', 'coupon_id', 'thumbnail_image', 'image', 'location_name', 'bio', 'try_on_1', 'try_on_2', 'try_on_3', 'try_on_4', 'try_on_5', 'phone_number')
|
||||||
|
->where('id', $restaurantRole->restaurant_xid)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($restaurant) {
|
||||||
|
$restaurant->image = ListingImageUrl('voucher_images', $restaurant->image);
|
||||||
|
$restaurant->thumbnail_image = ListingImageUrl('voucher_thumbnail_images', $restaurant->thumbnail_image);
|
||||||
|
$restaurant->description = strip_tags($restaurant->description);
|
||||||
|
|
||||||
|
// $restaurantDetails[] = $restaurant;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct response
|
||||||
|
$response = [
|
||||||
|
'user_detail' => $userDetail,
|
||||||
|
'restaurant_details' => $restaurant,
|
||||||
|
];
|
||||||
|
|
||||||
|
// Return JSON response with success message
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.User_details_fetch'), $response, 200);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
// Log error and return error response
|
||||||
|
Log::error('Restaurant Get data service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function updateRestaurantDetail($restIamId, $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
$data = IamPrincipal::findOrFail($restIamId);
|
||||||
|
if (!$data) {
|
||||||
|
DB::rollBack();
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.user_not_found'), 404);
|
||||||
|
}
|
||||||
|
$restaurantRoles = IamPrincipalRestaurantRole::select('id', 'principal_xid', 'restaurant_xid', 'role')->where('principal_xid', $restIamId)->get();
|
||||||
|
if ($restaurantRoles->isEmpty()) {
|
||||||
|
DB::rollBack();
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.restaurant_data_not_found'), 404);
|
||||||
|
}
|
||||||
|
$restaurantRole = $restaurantRoles->first();
|
||||||
|
$restaurant = ManageVoucherModel::findOrFail($restaurantRole->restaurant_xid);
|
||||||
|
if (!$restaurant) {
|
||||||
|
DB::rollBack();
|
||||||
|
return jsonResponseWithErrorMessageApi(__('error_message.restaurant_data_not_found'), 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$restaurant->update([
|
||||||
|
'coupon_name' => $request['restaurant_name'],
|
||||||
|
'description' => $request['description'],
|
||||||
|
'location_name' => $request['location'],
|
||||||
|
'bio' => $request['bio'],
|
||||||
|
'try_on_1' => $request['try_on_1'],
|
||||||
|
'try_on_2' => $request['try_on_2'],
|
||||||
|
'try_on_3' => $request['try_on_3'],
|
||||||
|
'try_on_4' => $request['try_on_4'],
|
||||||
|
'try_on_5' => $request['try_on_5'],
|
||||||
|
'phone_number' => $request['phone_number'],
|
||||||
|
]);
|
||||||
|
$restaurant->description = strip_tags($restaurant->description);
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.data_updated_successfully'), $restaurant, 200);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Restaurant update profile service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function updateRestProfileDetail($restIamId, $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
$data = IamPrincipal::select('id', 'first_name', 'last_name', 'email_address', 'phone_number', 'date_of_birth')->findOrFail($restIamId);
|
||||||
|
if (!$data) {
|
||||||
|
DB::rollBack();
|
||||||
|
return jsonResponseWithErrorMessage(__('error_message.user_details_not_found'), 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->has('image')) {
|
||||||
|
$image = $request->image;
|
||||||
|
$tnormalImage = saveSingleImageWithoutCrop($image, 'profile_image', null);
|
||||||
|
$data->update(['profile_photo' => $tnormalImage]);
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
}
|
||||||
|
if ($request->has('first_name')) {
|
||||||
|
$data->first_name = $request->first_name;
|
||||||
|
$data->save();
|
||||||
|
DB::commit();
|
||||||
|
}
|
||||||
|
if ($request->has('last_name')) {
|
||||||
|
$data->last_name = $request->last_name;
|
||||||
|
$data->save();
|
||||||
|
DB::commit();
|
||||||
|
}
|
||||||
|
if ($request->has('date_of_birth')) {
|
||||||
|
$data->date_of_birth = $request->date_of_birth;
|
||||||
|
$data->save();
|
||||||
|
DB::commit();
|
||||||
|
}
|
||||||
|
if ($request->has('phone_number')) {
|
||||||
|
$data->phone_number = $request->phone_number;
|
||||||
|
$data->save();
|
||||||
|
DB::commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->has('email_address')) {
|
||||||
|
$email = $request->input('email_address');
|
||||||
|
if ($email !== $data->email_address) {
|
||||||
|
$existingUser = IamPrincipal::where('email_address', $email)
|
||||||
|
->where('id', '!=', $restIamId)
|
||||||
|
->whereNull('deleted_at')
|
||||||
|
->where('principal_type_xid', 4)
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
if ($existingUser) {
|
||||||
|
DB::rollBack();
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.email_already_exist'), 400);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// $data->update([
|
||||||
|
// 'first_name' => $request['first_name'],
|
||||||
|
// 'last_name' => $request['last_name'],
|
||||||
|
// 'email_address' => $request['email_address'],
|
||||||
|
// 'phone_number' => $request['phone_number'],
|
||||||
|
// 'date_of_birth' => $request['date_of_birth'],
|
||||||
|
// ]);
|
||||||
|
$data->save();
|
||||||
|
DB::commit();
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.data_updated_successfully'), $data, 200);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
|
||||||
|
Log::error('Restaurant update profile service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function resetRestPassword($restIamId, $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
|
$user = IamPrincipal::findOrFail($restIamId);
|
||||||
|
if (!Hash::check($request->current_password, $user->password)) {
|
||||||
|
DB::rollBack();
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.invalid_current_passsword'), 403);
|
||||||
|
} else {
|
||||||
|
$user->update([
|
||||||
|
'password' => Hash::make($request->new_password)
|
||||||
|
]);
|
||||||
|
DB::commit();
|
||||||
|
return jsonResponseWithSuccessMessageApi(__('auth.password_updated_successfully'), $user);
|
||||||
|
}
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Update password service failed : ' . $ex->getMessage());
|
||||||
|
return jsonResponseWithErrorMessageApi(__('auth.something_went_wrong'), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5>No of Customers</h5>
|
<h5>No of Customers</h5>
|
||||||
<h2 class="m-0 font-weight-bold">08</h2>
|
<h2 class="m-0 font-weight-bold">{{ $customerCount }}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5>No of Restaurants</h5>
|
<h5>No of Restaurants</h5>
|
||||||
<h2 class="m-0 font-weight-bold">05</h2>
|
<h2 class="m-0 font-weight-bold">{{ $restaurantCount }}</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||||
<h5>User Graph</h5>
|
<h5>User Graph</h5>
|
||||||
<select class="form-control w-25" name="" id="">
|
<select class="form-control w-25" id="graph-filter">
|
||||||
<option value="" selected>Monthly</option>
|
<option value="" selected>Monthly</option>
|
||||||
<option value="">Quarterly</option>
|
<option value="">Quarterly</option>
|
||||||
<option value="">Yearly</option>
|
<option value="">Yearly</option>
|
||||||
@@ -664,5 +664,58 @@
|
|||||||
// --------- Sales chart ends ------------
|
// --------- Sales chart ends ------------
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Add event listener to the filter select element
|
||||||
|
document.getElementById('graph-filter').addEventListener('change', function(event) {
|
||||||
|
var selectedFilter = event.target.value;
|
||||||
|
userChartData = getUserChartData(selectedFilter); // Get data based on selected filter
|
||||||
|
userCategories = getUserChartCategories(selectedFilter); // Update x-axis categories
|
||||||
|
|
||||||
|
userChart.updateSeries(userChartData); // Update chart data
|
||||||
|
userChart.updateOptions({
|
||||||
|
xaxis: {
|
||||||
|
categories: userCategories
|
||||||
|
}
|
||||||
|
}); // Update chart options
|
||||||
|
});
|
||||||
|
// Function to fetch data based on selected filter
|
||||||
|
function getUserChartData(filter) {
|
||||||
|
switch (filter) {
|
||||||
|
case 'monthly':
|
||||||
|
return [{
|
||||||
|
name: 'Customer',
|
||||||
|
data: <?php echo json_encode(array_values($dataMonthlyWithType3)); ?>
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Restaurant',
|
||||||
|
data: <?php echo json_encode(array_values($dataMonthlyWithType4)); ?>
|
||||||
|
}
|
||||||
|
];
|
||||||
|
case 'quarterly':
|
||||||
|
return [{
|
||||||
|
name: 'Customer',
|
||||||
|
data: <?php echo json_encode(array_values($dataQuarterlyWithType3)); ?>
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Restaurant',
|
||||||
|
data: <?php echo json_encode(array_values($dataQuarterlyWithType4)); ?>
|
||||||
|
}
|
||||||
|
];
|
||||||
|
case 'yearly':
|
||||||
|
return [{
|
||||||
|
name: 'Customer',
|
||||||
|
data: <?php echo json_encode(array_values($dataYearlyWithType3)); ?>
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Restaurant',
|
||||||
|
data: <?php echo json_encode(array_values($dataYearlyWithType4)); ?>
|
||||||
|
}
|
||||||
|
];
|
||||||
|
default:
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -30,18 +30,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
|
||||||
<a href="{{ route('manage.newLetter') }}">
|
|
||||||
<div class="card pointer">
|
|
||||||
<div
|
|
||||||
class="card-body d-flex flex-column justify-content-center align-items-center card-cms">
|
|
||||||
<img width="50" height="50" src="{{ asset('public/assets/img/quill_inbox-newsletter.svg') }}"
|
|
||||||
alt="">
|
|
||||||
<h4 class="m-0">Newsletter</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<a href="{{ route('manage.aboutUs') }}">
|
<a href="{{ route('manage.aboutUs') }}">
|
||||||
<div class="card pointer">
|
<div class="card pointer">
|
||||||
@@ -88,6 +77,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <div class="col-4">
|
||||||
|
<a href="{{ route('manage.newLetter') }}">
|
||||||
|
<div class="card pointer">
|
||||||
|
<div
|
||||||
|
class="card-body d-flex flex-column justify-content-center align-items-center card-cms">
|
||||||
|
<img width="50" height="50" src="{{ asset('public/assets/img/quill_inbox-newsletter.svg') }}"
|
||||||
|
alt="">
|
||||||
|
<h4 class="m-0">Newsletter</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<a class="d-flex align-items-center justify-content-center pl-2" href="{{ route('manage.Newarticles') }}">
|
<a class="d-flex align-items-center justify-content-center pl-2" href="{{ route('manage.Newarticles') }}">
|
||||||
<img class="back-btn" src="{{ asset('assets/img/left-arrow.svg') }}">
|
<img class="back-btn" src="{{ asset('public/assets/img/left-arrow.svg') }}">
|
||||||
<h6 class="card-title p-0">Add News & Articles </h6>
|
<h6 class="card-title p-0">Add News & Articles </h6>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
54
routes/restaurant_api.php
Normal file
54
routes/restaurant_api.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Http\Controllers\APIs\RestaurantApi\RedeemControllerApi;
|
||||||
|
use App\Http\Controllers\APIs\RestaurantApi\RestaurantControllerApi;
|
||||||
|
use App\Http\Controllers\APIs\RestaurantApi\RestAuthApiController;
|
||||||
|
use App\Http\Controllers\APIs\RestaurantApi\RestCMSController;
|
||||||
|
use App\Http\Controllers\APIs\RestaurantApi\RestNotificationController;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
|
||||||
|
Route::middleware(['restaurantApiBasicAuth'])->group(function () {
|
||||||
|
// Define your routes here
|
||||||
|
Route::get('/v1/list-restaurant', [RestAuthApiController::class, 'viewresyaurant']);
|
||||||
|
Route::post('/v1/rest-register', [RestAuthApiController::class, 'restRegister']);
|
||||||
|
Route::post('/v1/rest-login', [RestAuthApiController::class, 'login']);
|
||||||
|
Route::post('/v1/rest-forgot-password', [RestAuthApiController::class, 'restForgotPassword']);
|
||||||
|
Route::post('/v1/rest-verify-otp', [RestAuthApiController::class, 'restVerifyOTP']);
|
||||||
|
Route::post('/v1/rest-change-password', [RestAuthApiController::class, 'restChangePassword']);
|
||||||
|
Route::post('/v1/rest-resend-otp', [RestAuthApiController::class, 'restResendOtp']);
|
||||||
|
|
||||||
|
// Route::group(['middleware' => ['restaurant.jwt.verify']], function () {
|
||||||
|
// //*******************************************************Restaurant profile********************************************************
|
||||||
|
// Route::get('/v1/fetch-restaurant-profile', [RestaurantControllerApi::class, 'getRestProfileDetail']);
|
||||||
|
// Route::post('/v1/update-restaurant-profile', [RestaurantControllerApi::class, 'updateRestProfileDetail']);
|
||||||
|
// Route::post('/v1/update-restaurant-detail', [RestaurantControllerApi::class, 'updateRestaurantDetail']);
|
||||||
|
// Route::post('/v1/reset-restaurant-password', [RestaurantControllerApi::class, 'resetRestPassword']);
|
||||||
|
// Route::post('/v1/restaurant-logout', [RestaurantControllerApi::class, 'restaurantLogout']);
|
||||||
|
// Route::post('/v1/restaurant-delete_account', [RestaurantControllerApi::class, 'restDeleteAccount']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// //*******************************************************Redeemption Data********************************************************
|
||||||
|
|
||||||
|
// Route::get('/v1/fetch-redeem-data', [RedeemControllerApi::class, 'getRedemedData']);
|
||||||
|
// Route::post('/v1/undo-redemption', [RedeemControllerApi::class, 'undoRedemption']);
|
||||||
|
// Route::post('/v1/search-Redemption-data', [RedeemControllerApi::class, 'searchRedemption']);
|
||||||
|
|
||||||
|
// //*******************************************************CMS********************************************************
|
||||||
|
|
||||||
|
// Route::get('/v1/list-of-restaurant-faqs', [RestCMSController::class, 'RestGetFaq']);
|
||||||
|
// Route::get('/v1/list-of-restaurant-about-us', [RestCMSController::class, 'RestAboutUs']);
|
||||||
|
// Route::get('/v1/list-of-restaurant-privacy-policy', [RestCMSController::class, 'RestPrivacyPolicy']);
|
||||||
|
// Route::get('/v1/list-of-restaurant-news-articles', [RestCMSController::class, 'RestNewsArticles']);
|
||||||
|
// Route::post('/v1/restaurant-contact-us', [RestCMSController::class, 'RestContactUs']);
|
||||||
|
|
||||||
|
|
||||||
|
// //*******************************************************notification********************************************************
|
||||||
|
// Route::get('/v1/get-notification', [RestNotificationController::class, 'getRestNotificationApi']);
|
||||||
|
// Route::post('/v1/send-notification', [RestNotificationController::class, 'sendRestNotificationApi']);
|
||||||
|
// Route::post('/v1/alert-notification', [RestNotificationController::class, 'sendAlertNotificationApi']);
|
||||||
|
// });
|
||||||
|
});
|
||||||
@@ -35,7 +35,8 @@ Route::get('/logout', [LoginController::class, 'logout'])->name('logout');
|
|||||||
Route::group(['middleware' => ['checkStatus']], function () {
|
Route::group(['middleware' => ['checkStatus']], function () {
|
||||||
|
|
||||||
|
|
||||||
Route::get('/dashboard', [DashboardController ::class, 'index'])->name('dashboard');
|
// Route::get('/dashboard', [DashboardController ::class, 'index'])->name('dashboard');
|
||||||
|
Route::get('/dashboard', [DashboardController::class, 'showDashboard'])->name('dashboard');
|
||||||
|
|
||||||
Route::get('/profile', [ManageProfileController ::class, 'index'])->name('profile');
|
Route::get('/profile', [ManageProfileController ::class, 'index'])->name('profile');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user