$email, 'role' => $role, 'exp' => $now + ($expiryMinutes * 60), 'iat' => $now, ]; return JWT::encode($payload, $secretKey, 'HS256'); } function stopMessage($data, $mobile, $templates){ $templateId = $data['templateId'] ?? ($data['templateDetails']['templateId'] ?? ''); if(strlen($mobile) == 10){ $mobile_number = $mobile; }else if(strlen($mobile) == 12 ){ $mobile_number = substr($mobile,2); }else{ return false; } $lastMonth = now()->subMonth(); // Get the date representing one month ago $merchantId = \App\ConsumerApplication::where('mobile_number', $mobile_number)->whereDate('created_at', '>=', $lastMonth)->orderByDesc('created_at')->limit(1)->value('merchant_id'); if (empty($merchantId)){ $merchantId = \App\ConsumerApplication::where('co_applicant_mobile_number', $mobile_number)->whereDate('created_at', '>=', $lastMonth)->orderByDesc('created_at')->limit(1)->value('merchant_id'); } if (!empty($merchantId) && ($merchantId==_env("Finsall_id"))){ if (in_array($templateId, $templates)) { return false; } return true; } return false; } function send_sms($mobile_number, $data, $checkUser = false) { if($checkUser){ $isExist = \App\User::where('mobile_number', $mobile_number)->where('id',922)->first(['id']); if (isset($isExist->id)) { return false; } } if (stopMessage($data,$mobile_number,getSMSTemplates())){ return true; } if(!isset($data['service'])){ $data['service'] = false; } $message = isset($data['message']) ? $data['message'] : $data; $messageWhatsapp = urlencode($message); $resobj = new \App\_SMSService(); $resp = $resobj->sms_service($mobile_number, $data); $res = $resp['resp']; $smsLogID = $resp['smsLogID']; if (!isset($data['whatsapp_not']) && !isset($data['OTP'])) { try { $messagetype = ((isset($data['message_type'])) && $data['message_type'] == "payment") ? $data['message_type'] : ""; $start_time = time(); if (!isset($data['message'])){ if (is_array($data)){ $data = array_merge($data, ['message' => $message]); }else{ unset($data); $data['message'] = $message; } }else{ $data['message'] = $message; } if (!isset($data['smsLogID'])){ if (is_array($data)){ $data = array_merge($data, ['smsLogID' => $smsLogID]); }else{ unset($data); $data['smsLogID'] = $smsLogID; } }else{ $data['smsLogID'] = $smsLogID; } // sendWhatsAppMessage($mobile_number, $data, $messagetype); (new \App\Services())->log('Zoko', ['status' => true, 'service_count' => 0, 'start_time' => $start_time]); } catch (\Exception $e) { (new \App\Slack(new \Illuminate\Http\Request(['title' => 'Whatsapp Error', 'fields' => ['mobile_number' => $mobile_number, 'message' => $messageWhatsapp, 'error' => $e->getMessage(), 'line' => $e->getLine(), 'trace' => $e->getTraceAsString(), 'application_id' => $_id, 'id_type' => $id_type]])))->send(); } } return (isset($res) ? $res->getBody() : true); } function sendWhatsAppMessage($mobile_number, $message, $messagetype = ""){ if(strlen($mobile_number) == 10){ $mobile_number = "91" . $mobile_number; }else if(strlen($mobile_number) > 12 || strlen($mobile_number) < 10){ return false; } if (stopMessage($message,$mobile_number,getWhatsAppTemplates())){ return true; } if (isset($message['templateDetails']) &&!is_array($message['templateDetails'])) { $message['templateDetails'] = []; $message['templateDetails']['templateid'] = $message['templateDetails']->templateid ?? ''; } if (!empty($message['templateId']) ||!empty($message['templateDetails']['templateid'])) { $templateId = $message['templateId'] ?? $message['templateDetails']['templateid'] ?? ''; $messageBody = ''; if (!empty($message['messageString'])) { $messageBody = $message['messageString']; } elseif (!empty($message['message'])) { $messageBody = $message['message']; } else { $args = $message['args'] ?? []; $messageBody = Templates::getTemplateBody($templateId, $args); } if (!empty($messageBody) || $messageBody != "") { $request = new \Illuminate\Http\Request([ 'templateId' => $templateId, 'templateArgs' => $message['args'] ?? '', 'caption' => isset($message['caption']) ? $message['caption'] : '', 'templateType' => isset($message['templateType']) ? $message['templateType'] : '', 'message_type' => $messagetype, 'to' => $mobile_number, 'messageString' => $messageBody, 'templateLanguage' => isset($message['templateLanguage']) ? $message['templateLanguage'] : 'en' ]); $whatsApp = new \App\WhatsApp($request); $response = $whatsApp->sendMessage(); $whatsApp->serviceLogs($mobile_number, $request->input(), $response); if((isset($response->statusText) && $response->statusText == 'Accepted') && isset($message['smsLogID']) && $message['smsLogID'] > 0){ \App\SMSLogs::where('id', $message['smsLogID'])->update(['isWhatsapp' => 1]); } } } if ((!isset($response) || !isset($response->statusText)) || (isset($response->statusText) && $response->statusText != 'Accepted')){ //sendWhatsAppFromZoko($mobile_number, $message, $messagetype = ""); } } function getWhatsAppTemplates(){ return ["admin_app_received_1_v2","disbursed_customer_with_doc_wl","disbursement_c1","feedback_c1"]; } function getSMSTemplates(){ return ["1307166902770611470"]; } function sendWhatsAppFromZoko($mobile_number, $message, $messagetype = ""){ if($mobile_number) { $message = is_array($message) ? $message['message'] : $message; $mobile_number_array = explode(",", $mobile_number); if($messagetype == "payment"){ $api_key = "1d5c76ee-2d2f-4413-b8fe-72f32022ec0d"; }else{ $api_key = "516d8057-74b0-4e76-b04a-84151dcbc824"; } foreach ($mobile_number_array as $mobile_number) { if(strlen($mobile_number) < 12){ $mobile_number = "91".$mobile_number; } $data = json_encode(array("messagePlatform" => "WHATSAPP", "messsageType" => "TEXT", "number" => $mobile_number, "message" => urldecode($message), "imageCaption" => "")); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://notify.zoko.io/v1/notification/push", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "apikey: ".$api_key, "accept: application/json", "cache-control: no-cache" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); } } } //function wall_encrypt($message) //{ // $components = explode( '|:|', $message );; // if(!isset($components[1])) { // $max_msg_size = 100000000; // $message = substr($message, 0, $max_msg_size); // // $password = 'CRDRIAF'; // // $salt = sha1(mt_rand()); // // $iv = substr(sha1(mt_rand()), 0, 16); // // $encrypted = openssl_encrypt( // "$message", 'aes-256-cbc', "$salt|:|$password", null, $iv // ); // // return str_replace('/', '*#', "$salt|:|$iv|:|$encrypted"); // }else{ // return $message; // } //} function wall_encrypt($message, $type = false, $key = '') { try { if ($key == ''){ $key ='CRDRIAF'; } $cipher = "AES-128-CBC"; //$ivlen = openssl_cipher_iv_length($cipher = "AES-128-CBC"); //$iv = openssl_random_pseudo_bytes($ivlen); $iv = "lksdasfsaskllopl"; $ciphertext_raw = openssl_encrypt($message, $cipher, $key, $options = OPENSSL_RAW_DATA, $iv); $hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary = true); $value = base64_encode($iv . $hmac . $ciphertext_raw); return $value; }catch (Exception $e){ return $message; } } function wall_decrypt($msg_bundle, $type = false, $key = '') { if ($key == ''){ $key ='CRDRIAF'; } try { $c = base64_decode($msg_bundle); $ivlen = openssl_cipher_iv_length($cipher = "AES-128-CBC"); //AES-256-CBC $iv = substr($c, 0, $ivlen); $hmac = substr($c, $ivlen, $sha2len = 32); $ciphertext_raw = substr($c, $ivlen + $sha2len); $value = openssl_decrypt($ciphertext_raw, $cipher, $key, $options = OPENSSL_RAW_DATA, $iv); $calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary = true); if (hash_equals($hmac, $calcmac)) { return $value; }else{ return ($type) ? false : $msg_bundle; } }catch(Exception $e){ return ($type) ? false : $msg_bundle; } } function is_image($path) { $a = getimagesize($path); $image_type = $a[2]; if (in_array($image_type, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP))) { return true; } return false; } function _env($key, $default = ''){ return env($key) ? wall_decrypt(env($key)) : $default; } function idStringtoArray($id){ if($id != 0) { if (!is_array($id)) { $application_id[] = $id; } else { $application_id = $id; } }else{ $application_id = ""; } return $application_id; } function getHolidayList(){ // $holidays = \App\HolidayList::get(); $holiday_list = array(); // foreach ($holidays as $holiday){ // array_push($holiday_list,$holiday->date); // } return $holiday_list; } function saveComment($_comment, $id, $user_id){ $comment = new \App\Comments(); $comment->application_id = $id; if(\Illuminate\Support\Facades\Input::get('request_review')){ $comment->show_merchant = 1; }else{ $comment->show_merchant = 0; } $comment->user_id = $user_id; $comment->comment = $_comment; $comment->save(); } function Log_file($log){ $fp = fopen(storage_path().'/'.time().'_log_file.txt', 'w'); fwrite($fp, $log."\n"); fclose($fp); } function getAvaibleAdvisor($pincode){ if ($pincode) { $data = \App\Zone::leftJoin("users", \DB::raw("FIND_IN_SET(zones.id,users.zones)"), ">", \DB::raw("'0'"))->whereRaw("FIND_IN_SET($pincode,pincodes)")->whereNull('users.deleted_at')->get(['users.id']); $user_ids = array(); if ($data) { foreach ($data as $users) { if (isset($users->id)) { array_push($user_ids, $users->id); } } } } return isset($user_ids) ? $user_ids : []; } function send_mail($email, $body, $subject){ if($email){ $body = str_replace('
', '', str_replace('Best Regards,', '', str_replace('Team Credit Fair', '', $body))); \Illuminate\Support\Facades\Mail::send('emails.reminders.basic_reminder', ['body'=> $body] , function ($message) use ($email, $subject) { $message->to(explode(',',$email))->subject($subject); }); } } if ( ! function_exists( 'money_format' ) ) { function money_format($format, $number) { $regex = '/%((?:[\^!\-]|\+|\(|\=.)*)([0-9]+)?' . '(?:#([0-9]+))?(?:\.([0-9]+))?([in%])/'; if (setlocale(LC_MONETARY, 0) == 'C') { setlocale(LC_MONETARY, ''); } $locale = localeconv(); preg_match_all($regex, $format, $matches, PREG_SET_ORDER); foreach ($matches as $fmatch) { $value = floatval($number); $flags = array( 'fillchar' => preg_match('/\=(.)/', $fmatch[1], $match) ? $match[1] : ' ', 'nogroup' => preg_match('/\^/', $fmatch[1]) > 0, 'usesignal' => preg_match('/\+|\(/', $fmatch[1], $match) ? $match[0] : '+', 'nosimbol' => preg_match('/\!/', $fmatch[1]) > 0, 'isleft' => preg_match('/\-/', $fmatch[1]) > 0 ); $width = trim($fmatch[2]) ? (int)$fmatch[2] : 0; $left = trim($fmatch[3]) ? (int)$fmatch[3] : 0; $right = trim($fmatch[4]) ? (int)$fmatch[4] : $locale['int_frac_digits']; $conversion = $fmatch[5]; $positive = true; if ($value < 0) { $positive = false; $value *= -1; } $letter = $positive ? 'p' : 'n'; $prefix = $suffix = $cprefix = $csuffix = $signal = ''; $signal = $positive ? $locale['positive_sign'] : $locale['negative_sign']; switch (true) { case $locale["{$letter}_sign_posn"] == 1 && $flags['usesignal'] == '+': $prefix = $signal; break; case $locale["{$letter}_sign_posn"] == 2 && $flags['usesignal'] == '+': $suffix = $signal; break; case $locale["{$letter}_sign_posn"] == 3 && $flags['usesignal'] == '+': $cprefix = $signal; break; case $locale["{$letter}_sign_posn"] == 4 && $flags['usesignal'] == '+': $csuffix = $signal; break; case $flags['usesignal'] == '(': case $locale["{$letter}_sign_posn"] == 0: $prefix = '('; $suffix = ')'; break; } if (!$flags['nosimbol']) { $currency = $cprefix . ($conversion == 'i' ? $locale['int_curr_symbol'] : $locale['currency_symbol']) . $csuffix; } else { $currency = ''; } $space = $locale["{$letter}_sep_by_space"] ? ' ' : ''; $value = number_format( $value, $right, $locale['mon_decimal_point'], $flags['nogroup'] ? '' : $locale['mon_thousands_sep'] ); $value = @explode($locale['mon_decimal_point'], $value); $n = strlen($prefix) + strlen($currency) + strlen($value[0]); if ($left > 0 && $left > $n) { $value[0] = str_repeat($flags['fillchar'], $left - $n) . $value[0]; } $value = implode($locale['mon_decimal_point'], $value); if ($locale["{$letter}_cs_precedes"]) { $value = $prefix . $currency . $space . $value . $suffix; } else { $value = $prefix . $value . $space . $currency . $suffix; } if ($width > 0) { $value = str_pad( $value, $width, $flags['fillchar'], $flags['isleft'] ? STR_PAD_RIGHT : STR_PAD_LEFT ); } $format = str_replace($fmatch[0], $value, $format); } return $format; } if ( ! function_exists( 'updateProgressBar' ) ) { function updateProgressBar($current, $total, $process = 'Process', $length = 50) { $percent = ($total > 0) ? ($current / $total) * 100 : 100; $barLength = max(0, intval($percent / 100 * $length) - 1); $bar = "[" . str_repeat("=", $barLength) . ">"; $bar .= str_repeat(" ", max(0, $length - strlen($bar))) . "]"; $bar .= sprintf(" %d%% (%d/%d)", $percent, $current, $total); echo "\r$process"; echo "\r$bar"; if ($current == $total) { echo PHP_EOL; } } } } function sendFCMNotification($data){ $request = new \Illuminate\Http\Request($data); new \App\FCMNotification($request); } function getPageRoute($request){ $route = Route::getRoutes()->match($request); return $route->uri(); }