id()); $request->request->add(['customer_id' => auth('customer')->id()]); parent::__construct(BankAccount::class, [], ['*', BankAccount::$SELECT_STS_STR], null, $query); } public function destroy($id) { $account = BankAccount::findOrFail($id); if ($account->sts != 3 && $account->sts != 2) { throw new UnprocessableEntityHttpException('امکان حذف این کارت بانکی وجود ندارد'); } return parent::destroy($id); } public function listActiveBankAccount() { $query = BankAccount::where('customer_id', auth('customer')->id()) ->whereIn('sts', [1, 2])->get(); return response()->json($query); } public function StoreBankAccount(Request $request) { if (strlen($request->cart_number) != 16) { throw new UnprocessableEntityHttpException('شماره کارت اشتباه می‌باشد.'); } if (BankAccount::where('cart_number', $request->cart_number)->exists()) { throw new UnprocessableEntityHttpException('شماره کارت تکراری می‌باشد.'); } $user = auth()->guard('customer')->user(); if ($user->n_code === null || $user->n_code === '') { throw new UnprocessableEntityHttpException('لطفا شماره ملی خود را در پروفایل کاربری وارد کنید سپس اقدام به ثبت کارت بانکی کنید.'); } if($user->birth_date == null && !isset($request->birth_date)){ throw new UnprocessableEntityHttpException('لطفا تاریخ تولد خود را در پروفایل کاربری وارد کنید سپس اقدام به ثبت کارت بانکی کنید.'); } //with verification in jibit if (app(ConfigService::class)->isJibitCardVerificationEnabled()) { $p1 = $apiData['iban'] = preg_replace('/\D/', '', $request->cart_number); $p2 = $apiData['nationalCode'] = $user->n_code; $p3 = $apiData['birthDate'] = Verta::instance(Carbon::parse($request->birth_date ?? $user->birth_date))->format('Ymd'); // dd($p3); // [$apiData['iban'],$apiData['nationalCode'],$apiData['birthDate']]; $apiData['r'] = $this->jibit('cartMatching', $apiData['iban'], $apiData['nationalCode'], $apiData['birthDate']); try { $logPayload = [ 'cartMatching' => $apiData['r']['cartMatching'] ?? null, 'cartData' => $apiData['r']['cartData'] ?? null, ]; $log = new Log(); $log->customer_id = auth('customer')->id(); $log->data = json_encode($logPayload, JSON_UNESCAPED_UNICODE); $log->save(); } catch (\Exception $e) { \Log::warning('Bank account jibit log save failed', [ 'customer_id' => auth('customer')->id(), 'message' => $e->getMessage(), ]); } if (isset($apiData['r']['cartData'])) { $BA = BankAccount::create([ 'customer_id' => $user->id, 'cart_number' => $apiData['r']['cartData']['number'], 'bank_name' => $apiData['r']['cartData']['ibanInfo']['bank'], 'account_number' => $apiData['r']['cartData']['ibanInfo']['depositNumber'], 'shaba_number' => $apiData['r']['cartData']['ibanInfo']['iban'], 'first_name' => $apiData['r']['cartData']['ibanInfo']['owners'][0]['firstName'], 'last_name' => $apiData['r']['cartData']['ibanInfo']['owners'][0]['lastName'], 'cart_status' => $apiData['r']['cartData']['ibanInfo']['status'], 'sts' => 2, ]); Customer::where('id', $user->id)->update(['birth_date' => $request->birth_date ?? $user->birth_date]); $data = ['success' => true, 'bankAccount' => $BA]; return response()->json($data); } else { $message = "احرازهویت برای شماره کارت کاربر " . $user->name . " توسط جیبیت انجام نشد. لطفا از پنل ادمین اقدام کنید. "; if (self::isSmsNotifEnabled('sms_notif_bank_card_admin')) { User::where('send_sms', 1)->get()->each(function ($admin) use ($message) { $this->SendMessage($admin->mobile, $message); }); } $BA = BankAccount::create([ 'customer_id' => $user->id, 'cart_number' => $request->cart_number, 'first_name' => $user->fname, 'last_name' => $user->lname, 'sts' => 1, ]); throw new UnprocessableEntityHttpException('شماره کارت شما برای ادمین ارسال شد و پس از تایید قابل استفاده می باشد.'); return $apiData; } } $customer = Customer::find(auth('customer')->id()); $message = "کارت جدیدی برای $customer->name ساخته شد منتظر تایید شما هستیم."; $message .= $this->Config('name_fa'); if (self::isSmsNotifEnabled('sms_notif_bank_card_admin')) { User::where('active', 1)->where('send_sms', 1)->get()->each(function ($admin) use ($message) { $this->Send($admin->mobile, $message); }); } $data = $request->only(['account_number', 'bank_name', 'cart_number', 'shaba_number', 'customer_id']); BankAccount::create($data); return response()->json($data); } }