id(); if (session()->has('transaction_id')) { $transaction_id = session('transaction_id'); $payment = payment_transaction_master::where('transaction_id', $transaction_id)->first(); if (!$payment) { $payment_details = Mollie::api()->payments()->get($transaction_id); if ($payment_details->isPaid()) { // dd(auth()->user()->first_name); $payment = new payment_transaction_master; $payment->principal_xid = auth()->user()->id; $payment->transaction_id = $payment_details->id; $payment->amount = $payment_details->amount->value; $payment->payment_status = 1; $currency = ''; switch ($payment_details->amount->currency) { case 'USD': $currency = '1'; break; case 'GBP': $currency = '2'; break; default: $currency = '3'; break; } $payment->currency = $currency; if (isset($payment_details->prog_start_date) && isset($payment_details->prog_end_date)) { $payment->start_date = $payment_details->prog_start_date; $payment->end_date = $payment_details->prog_end_date; } else { $payment->start_date = null; $payment->end_date = null; } $payment->save(); if ($payment->id) { session()->forget('transaction_id'); } } elseif ($payment_details->isCanceled()) { $user_data = auth()->user()->first_name; Mail::to(auth()->user()->email)->send(new sendCancellationEmail($user_data)); return response()->json(['error' => 'Payment Failed']); } } } $countries = country::with('programs')->get()->toArray(); foreach ($countries as $key => $value) { if (isset($value['programs']) && !empty($value['programs'])) { $max_week = max(array_column($value['programs'], 'volunteer_weeks')); $min_week = min(array_column($value['programs'], 'volunteer_weeks')); $max_age = max(array_column($value['programs'], 'age_rules')); $countries[$key]['max_min_value'] = $min_week . '-' . $max_week; $countries[$key]['max_age'] = $max_age; } } $latestFaqs = FAQ::latest()->limit(5)->get(); return view('Frontend.Pages.Volunteer.volunteer_countries')->with([ 'faqs' => $latestFaqs, 'country' => $countries, ]); } public function clear(Request $request) { $request->session()->forget('transaction_id'); // Replace 'key' with the actual session key you want to clear return response()->json(['success' => true]); } public function view_country_program($id) { $view_programs = country::with('programs') ->where('id', $id) ->get() ->toArray(); // dd($view_programs); return view('Frontend.Pages.Volunteer.volunteer_countries_program')->with(['view_program' => $view_programs]); } public function view_country_program_detail($id) { $view_programs_detail = program::with('programe_amount', 'programe_country', 'programe_acomadation') ->find($id) ->toArray(); // dd($view_programs_detail); return view('Frontend.Pages.Volunteer.volunteer_countries_program_detail')->with(['view_programs_detail' => $view_programs_detail]); } public function fetch_progm_currency_amount(Request $request) { $durationId = $request->input('duration_id'); $programId = $request->input('program_id'); $convert_to = $request->input('convert_to'); $start_date = $request->input('start_date'); $end_date = $request->input('end_date'); $total_weeks = $request->input('total_week'); $currency = ProgramCurrencyAmount::where('week', $durationId) ->where('programs_xid', $programId) ->pluck('usd_price'); $usdPrice = $currency[0]; if ($convert_to == 1) { $convert_name = 'USD'; } else if ($convert_to == 2) { $convert_name = 'GBP'; } else { $convert_name = 'EUR'; } $fromCurrency = 'GBP'; $apiKey = config('services.exchangerates.api_key'); $baseUrl = 'https://api.apilayer.com/exchangerates_data_api/latest'; $client = new Client(); // $response = $client->get("{$baseUrl}?access_key={$apiKey}"); $response = \Http::get('https://api.freecurrencyapi.com/v1/latest?apikey=fca_live_IUpn22wjq5zhcvRqGix4k6FlOZKo9SOHSAobRtMd'); $data = json_decode($response->getBody(), true); // echo "
";
// print_r($data['data']);
// die;
$conversionRate = $data['data'][$convert_name] / $data['data'][$fromCurrency];
$convertedAmount = $usdPrice * $conversionRate;
return response()->json([
'usd_price' => $usdPrice,
'selected_currency' => $convert_to,
'converted_amount' => $convertedAmount,
'start_date' => $start_date,
'end_date' => $end_date,
'week' => $durationId,
'total_week' => $total_weeks
]);
// } catch (\Exception $e) {
// return response()->json(['error' => 'Currency conversion failed']);
// }
}
public function insert_volunteer_program_detail(Request $request) {
if (Auth::check()) {
$program_age = $request->program_age;
$user_age = Auth::user()->date_of_birth;
$userDateOfBirth = Carbon::parse($user_age);
$currentDate = Carbon::now();
$userAge = $userDateOfBirth->diffInYears($currentDate);
// Check if the user's age matches the program age
if ($userAge >= $program_age) {
$userId = Auth::user()->id;
$user_fname = Auth::user()->first_name;
$user_lname = Auth::user()->last_name;
$iam_principal_group = new iam_principal_group;
$iam_principal_group->programs_xid = $request->input('program_id');
$program = Program::find($request->input('program_id'));
$iam_principal_group->week = $request->input('select_duration');
$iam_principal_group->currency = $request->input('convert_to');
$iam_principal_group->volunteer_with = $request->input('volunteer');
$iam_principal_group->volunteer_group_count = $request->input('member');
$iam_principal_group->volunteer_group_name = $request->input('group_name');
$startDate = Carbon::createFromFormat('m/d/Y', $request->input('start_date'))->format('d-m-y');
$iam_principal_group->start_date = $startDate;
$iam_principal_group->group_member_name = json_encode($request->input('group_member_name'));
$iam_principal_group->group_member_email = json_encode($request->input('group_member_email'));
$iam_principal_group->save();
$MemberNames = $request->input('group_member_name');
$MemberEmails = $request->input('group_member_email');
$groupMemberEmails = is_array($MemberEmails) ? $MemberEmails : json_decode($MemberEmails, true);
Mail::to($groupMemberEmails)->send(new GroupMemberEmail($iam_principal_group,$program,$user_fname,$user_lname));
$iam_principal_group_link = new iam_principal_principal_group_link;
$iam_principal_group_link->principal_xid = $userId;
$iam_principal_group_link->principal_group_xid = $iam_principal_group->id;
$iam_principal_group_link->save();
return response()->json(['success' => true, 'status' => 200]);
} else {
// User's age does not match the program age
return response()->json(['error' => 'Your age does not match the program requirements.'], 401);
}
} else {
// The user is not logged in or authenticated
$userId = null;
return response()->json(['error' => 'Please register to continue using our services.'], 401);
}
}
public function volunteer_program_payment(Request $request) {
$payment = Mollie::api()->payments()->create([
'amount' => [
'currency' => 'USD',
'value' => '200.00',
],
'description' => 'Test payment',
'redirectUrl' => route('view_volunteer_countries'),
]);
session(['transaction_id' => $payment->id]);
return redirect($payment->getCheckoutUrl(), 303);
}
public function paymentStatus(Request $request) {
if (session()->has('transaction_id')) {
$transaction_id = session('transaction_id');
}
$payment = Mollie::api()->payments()->get($transaction_id);
// Process the payment status
if ($payment->isPaid()) {
// Payment is successful
// Do something here
} elseif ($payment->isOpen()) {
// Payment is still open
// Do something here
} elseif ($payment->isCanceled()) {
// Payment is canceled
// Do something here
}
return view('payment.status', compact('payment'));
}
public function check_username(Request $request) {
$email = $request->input('email');
// dd($email);
$exists = User::where('email', $email)
->exists();
return response()->json(['exists' => $exists]);
}
}