Untitled
unknown
php
2 years ago
16 kB
7
Indexable
public function checkWhatsappVerification($whatsappVerificationId, FlasherInterface $flasher, Request $request)
{
// if useragent from whatsapp return 200
if (strpos($request->header('User-Agent'), 'WhatsApp') !== false) {
return response()->json(['status' => 'success'], 200);
}
$whatsappVerification = whatsapp_verification::where('id', $whatsappVerificationId)->first();
if ($whatsappVerification) {
$whatsapp = $whatsappVerification->phone_number;
$insertData = json_decode($whatsappVerification->biodata, true);
// update placement test status
Placement_tests::where('whatsapp', $whatsapp)->update(['status' => 'registered']);
// collect required data
$schedule = $insertData['student_schedule'];
$payment = $insertData['student_payment'];
$class = $insertData['student_class'];
// get package data id
if ($payment == 'cash') {
$package = Package_list::where('package_name', strtoupper($class))->where('package_installment_period', '=', 1)->first()->toArray();
} else {
$package = Package_list::where('package_name', strtoupper($class))->where('package_installment_period', '!=', 1)->first()->toArray();
}
// get batch registration id
// TODO : check code again prevent error
// $batchRegistration = Batch_registration::where('id', $schedule)->where('package_id', $package['package_id'])->first()->toArray();
$batchRegistration = Batch_registration::where([
['batch_date', '=', $schedule],
['package_id', '=', $package['package_id']]
])->first()->toArray();
// unset unnecessary data
unset($insertData['student_schedule']);
unset($insertData['student_payment']);
unset($insertData['student_class']);
// dd($schedule, $payment, $class, $package, $batchRegistration);
// save to database
// create student biodata
// try {
// dd($insertData);
try {
$student = Student::create($insertData);
} catch (\Throwable $th) {
\Log::error('Error create student', [$th->getMessage()]);
$flasher->addError('Terjadi kesalahan saat menyimpan data, silahkan coba lagi.');
return redirect(route('register.view'));
}
// create installment data
try {
// get first month installment by batch date
// TODO : check code again prevent error
$BatchDate = $batchRegistration;
$BatchDate = Carbon::parse($BatchDate['batch_date'])->format('Y-m-d');
// Loop installment period by package installment period
for ($i = 0; $i < $package['package_installment_period']; $i++) {
$nextMonth = Carbon::parse($BatchDate)->addMonths($i + 1);
$firstMonday = $nextMonth->firstOfMonth(Carbon::MONDAY);
// Check if the first day is not Monday, add 1 week
if ($firstMonday->dayOfWeek !== Carbon::MONDAY) {
$firstMonday = $firstMonday->next(Carbon::MONDAY);
}
$hit = $i + 1;
$installment[$i] = Installment::create([
'student_id' => $student->student_id,
'batch_registration_id' => $batchRegistration['id'],
'installment_price' => $batchRegistration['batch_price'],
'installment_discount' => $batchRegistration['batch_discount'],
'installment_discount_time' => 0,
'installment_desc' => "Pembayaran ke-$hit Wkwk Japanese Course",
'installment_period' => $hit,
'installment_due_date' => $firstMonday,
'installment_unix_due_date' => $firstMonday->timestamp,
]);
}
} catch (\Throwable $th) {
throw $th;
$flasher->addError('Gagal membuat data cicilan');
return die("Something went wrong");
}
// $flasher->addSuccess('Sukses insert data');
// $flasher->addSuccess('UUID : '.$student->student_id);
// Xendit::setApiKey(env("XENDIT_DEMO_SECRET_KEY"));
// Xendit::setApiKey(env("XENDIT_PRODUCTION_SECRET_KEY"));
// if env is production, use this
if (env('APP_ENV') == 'production') {
Xendit::setApiKey(env("XENDIT_PRODUCTION_SECRET_KEY"));
} else {
Xendit::setApiKey(env("XENDIT_DEMO_SECRET_KEY"));
}
$params = [
"external_id" => $installment[0]->installment_id,
"payer_email" => $student->student_email,
"description" => $installment[0]->installment_desc,
'callback_url' => url(''),
"amount" => $installment[0]->installment_price,
];
$createInvoice = \Xendit\Invoice::create($params);
// save data trx to SQL
$xendit_payment = [
'id' => $createInvoice['id'],
'external_id' => $createInvoice['external_id'],
'student_id' => $student->student_id,
'user_id' => $createInvoice['user_id'],
'payer_email' => $createInvoice['payer_email'],
'description' => $createInvoice['description'],
'amount' => $createInvoice['amount'],
'invoice_url' => $createInvoice['invoice_url'],
'status' => $createInvoice['status'],
'expiry_date' => $createInvoice['expiry_date'],
'currency' => 'IDR',
];
XenditPayment::create($xendit_payment);
// return redirect($createInvoice['invoice_url']);
// } catch (\Illuminate\Database\QueryException $e) {
// $errorCode = $e->errorInfo[1];
// if ($errorCode == '1062') {
// $flasher->addError("Data sudah terdaftar!");
// } else {
// // return response()->json(['database'=>$e->errorInfo,'postForm'=>$request->all()],400);
// }
// }
// convert iso8601 to readable date
// $createInvoice['expiry_date'] = Carbon::parse($createInvoice['expiry_date'])->setTimezone('UTC');
// $createInvoice['expiry_date']->setTimezone('Asia/Jakarta');
// $createInvoice['expiry_date']->locale('id')->settings(['formatFunction' => 'translatedFormat'])->format('l, j F Y');
// send payment link to whatsapp
$message = "Berikut kami sertakan link pembayaran yang berada di paling bawah pesan ini, harap di ingat link pembayaran ini hanya berlaku sampai " . Carbon::parse($createInvoice['expiry_date'])->locale('id')->settings(['formatFunction' => 'translatedFormat'])->format('l, j F Y h:i A') . ". Jika link pembayaran sudah kadaluwarsa mohon hubungi aku kembali yaa\n\n" . $createInvoice['invoice_url'];
sendWhatsapp($whatsapp, $message);
// delete record from whatsapp_verification
$whatsappVerification->delete();
// delete session package_reff
$request->session()->forget('package_reff');
// dd($whatsapp,$insertData);
return redirect($createInvoice['invoice_url']);
// return redirect()->back();
} else {
$flasher->addError('Data sudah diinputkan kedalam database.');
return redirect(route('register.view'));
}
}public function checkWhatsappVerification($whatsappVerificationId, FlasherInterface $flasher, Request $request)
{
// if useragent from whatsapp return 200
if (strpos($request->header('User-Agent'), 'WhatsApp') !== false) {
return response()->json(['status' => 'success'], 200);
}
$whatsappVerification = whatsapp_verification::where('id', $whatsappVerificationId)->first();
if ($whatsappVerification) {
$whatsapp = $whatsappVerification->phone_number;
$insertData = json_decode($whatsappVerification->biodata, true);
// update placement test status
Placement_tests::where('whatsapp', $whatsapp)->update(['status' => 'registered']);
// collect required data
$schedule = $insertData['student_schedule'];
$payment = $insertData['student_payment'];
$class = $insertData['student_class'];
// get package data id
if ($payment == 'cash') {
$package = Package_list::where('package_name', strtoupper($class))->where('package_installment_period', '=', 1)->first()->toArray();
} else {
$package = Package_list::where('package_name', strtoupper($class))->where('package_installment_period', '!=', 1)->first()->toArray();
}
// get batch registration id
// TODO : check code again prevent error
// $batchRegistration = Batch_registration::where('id', $schedule)->where('package_id', $package['package_id'])->first()->toArray();
$batchRegistration = Batch_registration::where([
['batch_date', '=', $schedule],
['package_id', '=', $package['package_id']]
])->first()->toArray();
// unset unnecessary data
unset($insertData['student_schedule']);
unset($insertData['student_payment']);
unset($insertData['student_class']);
// dd($schedule, $payment, $class, $package, $batchRegistration);
// save to database
// create student biodata
// try {
// dd($insertData);
try {
$student = Student::create($insertData);
} catch (\Throwable $th) {
\Log::error('Error create student', [$th->getMessage()]);
$flasher->addError('Terjadi kesalahan saat menyimpan data, silahkan coba lagi.');
return redirect(route('register.view'));
}
// create installment data
try {
// get first month installment by batch date
// TODO : check code again prevent error
$BatchDate = $batchRegistration;
$BatchDate = Carbon::parse($BatchDate['batch_date'])->format('Y-m-d');
// Loop installment period by package installment period
for ($i = 0; $i < $package['package_installment_period']; $i++) {
$nextMonth = Carbon::parse($BatchDate)->addMonths($i + 1);
$firstMonday = $nextMonth->firstOfMonth(Carbon::MONDAY);
// Check if the first day is not Monday, add 1 week
if ($firstMonday->dayOfWeek !== Carbon::MONDAY) {
$firstMonday = $firstMonday->next(Carbon::MONDAY);
}
$hit = $i + 1;
$installment[$i] = Installment::create([
'student_id' => $student->student_id,
'batch_registration_id' => $batchRegistration['id'],
'installment_price' => $batchRegistration['batch_price'],
'installment_discount' => $batchRegistration['batch_discount'],
'installment_discount_time' => 0,
'installment_desc' => "Pembayaran ke-$hit Wkwk Japanese Course",
'installment_period' => $hit,
'installment_due_date' => $firstMonday,
'installment_unix_due_date' => $firstMonday->timestamp,
]);
}
} catch (\Throwable $th) {
throw $th;
$flasher->addError('Gagal membuat data cicilan');
return die("Something went wrong");
}
// $flasher->addSuccess('Sukses insert data');
// $flasher->addSuccess('UUID : '.$student->student_id);
// Xendit::setApiKey(env("XENDIT_DEMO_SECRET_KEY"));
// Xendit::setApiKey(env("XENDIT_PRODUCTION_SECRET_KEY"));
// if env is production, use this
if (env('APP_ENV') == 'production') {
Xendit::setApiKey(env("XENDIT_PRODUCTION_SECRET_KEY"));
} else {
Xendit::setApiKey(env("XENDIT_DEMO_SECRET_KEY"));
}
$params = [
"external_id" => $installment[0]->installment_id,
"payer_email" => $student->student_email,
"description" => $installment[0]->installment_desc,
'callback_url' => url(''),
"amount" => $installment[0]->installment_price,
];
$createInvoice = \Xendit\Invoice::create($params);
// save data trx to SQL
$xendit_payment = [
'id' => $createInvoice['id'],
'external_id' => $createInvoice['external_id'],
'student_id' => $student->student_id,
'user_id' => $createInvoice['user_id'],
'payer_email' => $createInvoice['payer_email'],
'description' => $createInvoice['description'],
'amount' => $createInvoice['amount'],
'invoice_url' => $createInvoice['invoice_url'],
'status' => $createInvoice['status'],
'expiry_date' => $createInvoice['expiry_date'],
'currency' => 'IDR',
];
XenditPayment::create($xendit_payment);
// return redirect($createInvoice['invoice_url']);
// } catch (\Illuminate\Database\QueryException $e) {
// $errorCode = $e->errorInfo[1];
// if ($errorCode == '1062') {
// $flasher->addError("Data sudah terdaftar!");
// } else {
// // return response()->json(['database'=>$e->errorInfo,'postForm'=>$request->all()],400);
// }
// }
// convert iso8601 to readable date
// $createInvoice['expiry_date'] = Carbon::parse($createInvoice['expiry_date'])->setTimezone('UTC');
// $createInvoice['expiry_date']->setTimezone('Asia/Jakarta');
// $createInvoice['expiry_date']->locale('id')->settings(['formatFunction' => 'translatedFormat'])->format('l, j F Y');
// send payment link to whatsapp
$message = "Berikut kami sertakan link pembayaran yang berada di paling bawah pesan ini, harap di ingat link pembayaran ini hanya berlaku sampai " . Carbon::parse($createInvoice['expiry_date'])->locale('id')->settings(['formatFunction' => 'translatedFormat'])->format('l, j F Y h:i A') . ". Jika link pembayaran sudah kadaluwarsa mohon hubungi aku kembali yaa\n\n" . $createInvoice['invoice_url'];
sendWhatsapp($whatsapp, $message);
// delete record from whatsapp_verification
$whatsappVerification->delete();
// delete session package_reff
$request->session()->forget('package_reff');
// dd($whatsapp,$insertData);
return redirect($createInvoice['invoice_url']);
// return redirect()->back();
} else {
$flasher->addError('Data sudah diinputkan kedalam database.');
return redirect(route('register.view'));
}
}Editor is loading...