<?php // Code within app\Helpers\Helper.php
namespace App\Helpers;
use App\Models\AppConfig;
use App\Models\Contacts;
use App\Models\Language;
use DateTime;
use DateTimeZone;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Session;
class Helper
{
/**
* @return array
*/
public static function applClasses(): array
{
if (config('app.theme_layout_type') == 'vertical') {
$data = config('custom.vertical');
} else {
$data = config('custom.horizontal');
}
// default data array
$DefaultData = [
'mainLayoutType' => 'vertical',
'theme' => 'light',
'sidebarCollapsed' => false,
'navbarColor' => '',
'horizontalMenuType' => 'floating',
'verticalMenuNavbarType' => 'floating',
'footerType' => 'static', //footer
'layoutWidth' => 'boxed',
'showMenu' => true,
'bodyClass' => '',
'pageClass' => '',
'pageHeader' => true,
'contentLayout' => 'default',
'blankPage' => false,
'defaultLanguage' => env('APP_LOCALE'),
'direction' => env('MIX_CONTENT_DIRECTION'),
];
// if any key missing of array from custom.php file it will be merged and set a default value from dataDefault array and store in data variable
$data = array_merge($DefaultData, $data);
// All options available in the template
$allOptions = [
'mainLayoutType' => ['vertical', 'horizontal'],
'theme' => ['light' => 'light', 'dark' => 'dark-layout', 'bordered' => 'bordered-layout', 'semi-dark' => 'semi-dark-layout'],
'sidebarCollapsed' => [true, false],
'showMenu' => [true, false],
'layoutWidth' => ['full', 'boxed'],
'navbarColor' => ['bg-primary', 'bg-info', 'bg-warning', 'bg-success', 'bg-danger', 'bg-dark'],
'horizontalMenuType' => ['floating' => 'navbar-floating', 'static' => 'navbar-static', 'sticky' => 'navbar-sticky'],
'horizontalMenuClass' => ['static' => '', 'sticky' => 'fixed-top', 'floating' => 'floating-nav'],
'verticalMenuNavbarType' => ['floating' => 'navbar-floating', 'static' => 'navbar-static', 'sticky' => 'navbar-sticky', 'hidden' => 'navbar-hidden'],
'navbarClass' => ['floating' => 'floating-nav', 'static' => 'navbar-static-top', 'sticky' => 'fixed-top', 'hidden' => 'd-none'],
'footerType' => ['static' => 'footer-static', 'sticky' => 'footer-fixed', 'hidden' => 'footer-hidden'],
'pageHeader' => [true, false],
'contentLayout' => ['default', 'content-left-sidebar', 'content-right-sidebar', 'content-detached-left-sidebar', 'content-detached-right-sidebar'],
'blankPage' => [false, true],
'sidebarPositionClass' => ['content-left-sidebar' => 'sidebar-left', 'content-right-sidebar' => 'sidebar-right', 'content-detached-left-sidebar' => 'sidebar-detached sidebar-left', 'content-detached-right-sidebar' => 'sidebar-detached sidebar-right', 'default' => 'default-sidebar-position'],
'contentsidebarClass' => ['content-left-sidebar' => 'content-right', 'content-right-sidebar' => 'content-left', 'content-detached-left-sidebar' => 'content-detached content-right', 'content-detached-right-sidebar' => 'content-detached content-left', 'default' => 'default-sidebar'],
'defaultLanguage' => ['en' => 'en', 'fr' => 'fr', 'pt' => 'pt', 'af' => 'af', 'ar' => 'ar', 'es' => 'es', 'it' => 'it', 'ko' => 'ko', 'sl' => 'sl', 'zh' => 'zh'],
'direction' => ['ltr', 'rtl'],
];
//if mainLayoutType value empty or not match with default options in custom.php config file then set a default value
foreach ($allOptions as $key => $value) {
if (array_key_exists($key, $DefaultData)) {
if (gettype($DefaultData[$key]) === gettype($data[$key])) {
// data key should be string
if (is_string($data[$key])) {
// data key should not be empty
if (true) {
// data key should not be existed inside allOptions array's sub array
if ( ! array_key_exists($data[$key], $value)) {
// ensure that passed value should be match with any of allOptions array value
$result = array_search($data[$key], $value, 'strict');
if (empty($result) && $result !== 0) {
$data[$key] = $DefaultData[$key];
}
}
}
}
} else {
$data[$key] = $DefaultData[$key];
}
}
}
//layout classes
$layoutClasses = [
'theme' => $data['theme'],
'layoutTheme' => $allOptions['theme'][$data['theme']],
'sidebarCollapsed' => $data['sidebarCollapsed'],
'showMenu' => $data['showMenu'],
'layoutWidth' => $data['layoutWidth'],
'verticalMenuNavbarType' => $allOptions['verticalMenuNavbarType'][$data['verticalMenuNavbarType']],
'navbarClass' => $allOptions['navbarClass'][$data['verticalMenuNavbarType']],
'navbarColor' => $data['navbarColor'],
'horizontalMenuType' => $allOptions['horizontalMenuType'][$data['horizontalMenuType']],
'horizontalMenuClass' => $allOptions['horizontalMenuClass'][$data['horizontalMenuType']],
'footerType' => $allOptions['footerType'][$data['footerType']],
'sidebarClass' => '',
'bodyClass' => $data['bodyClass'],
'pageClass' => $data['pageClass'],
'pageHeader' => $data['pageHeader'],
'blankPage' => $data['blankPage'],
'blankPageClass' => '',
'contentLayout' => $data['contentLayout'],
'sidebarPositionClass' => $allOptions['sidebarPositionClass'][$data['contentLayout']],
'contentsidebarClass' => $allOptions['contentsidebarClass'][$data['contentLayout']],
'mainLayoutType' => $data['mainLayoutType'],
'defaultLanguage' => $allOptions['defaultLanguage'][$data['defaultLanguage']],
'direction' => $data['direction'],
];
// set default language if session hasn't locale value the set default language
if ( ! Session::has('locale')) {
app()->setLocale(env('APP_LOCALE'));
}
// sidebar Collapsed
if ($layoutClasses['sidebarCollapsed'] == 'true') {
$layoutClasses['sidebarClass'] = "menu-collapsed";
}
// blank page class
if ($layoutClasses['blankPage'] == 'true') {
$layoutClasses['blankPageClass'] = "blank-page";
}
return $layoutClasses;
}
/**
* @param $pageConfigs
*
* @return bool
*/
public static function updatePageConfig($pageConfigs): bool
{
$demo = config('app.theme_layout_type');
if (isset($pageConfigs)) {
if (count($pageConfigs) > 0) {
foreach ($pageConfigs as $config => $val) {
Config::set('custom.'.$demo.'.'.$config, $val);
}
}
}
return false;
}
/**
* @return string
*/
public static function home_route(): string
{
if (Gate::allows('access backend')) {
return route('admin.home');
}
return route('user.home');
}
/**
* @param Request $request
*
* @return bool
*/
public static function is_admin_route(Request $request): bool
{
$action = $request->route()->getAction();
return 'App\Http\Controllers\Admin' === $action['namespace'];
}
/**
* @param string $value
*
* @return mixed
*/
public static function app_config(string $value = '')
{
$conf = AppConfig::where('setting', $value)->first();
return $conf->value;
}
/**
* Get all countries.
*
* @return array
*/
public static function countries(): array
{
$countries = [];
$countries[] = ['code' => 'AF', 'name' => 'Afghanistan', 'd_code' => '+93'];
$countries[] = ['code' => 'AL', 'name' => 'Albania', 'd_code' => '+355'];
$countries[] = ['code' => 'DZ', 'name' => 'Algeria', 'd_code' => '+213'];
$countries[] = ['code' => 'AS', 'name' => 'American Samoa', 'd_code' => '+1'];
$countries[] = ['code' => 'AD', 'name' => 'Andorra', 'd_code' => '+376'];
$countries[] = ['code' => 'AO', 'name' => 'Angola', 'd_code' => '+244'];
$countries[] = ['code' => 'AI', 'name' => 'Anguilla', 'd_code' => '+1'];
$countries[] = ['code' => 'AG', 'name' => 'Antigua', 'd_code' => '+1'];
$countries[] = ['code' => 'AR', 'name' => 'Argentina', 'd_code' => '+54'];
$countries[] = ['code' => 'AM', 'name' => 'Armenia', 'd_code' => '+374'];
$countries[] = ['code' => 'AW', 'name' => 'Aruba', 'd_code' => '+297'];
$countries[] = ['code' => 'AU', 'name' => 'Australia', 'd_code' => '+61'];
$countries[] = ['code' => 'AT', 'name' => 'Austria', 'd_code' => '+43'];
$countries[] = ['code' => 'AZ', 'name' => 'Azerbaijan', 'd_code' => '+994'];
$countries[] = ['code' => 'BH', 'name' => 'Bahrain', 'd_code' => '+973'];
$countries[] = ['code' => 'BD', 'name' => 'Bangladesh', 'd_code' => '+880'];
$countries[] = ['code' => 'BB', 'name' => 'Barbados', 'd_code' => '+1'];
$countries[] = ['code' => 'BY', 'name' => 'Belarus', 'd_code' => '+375'];
$countries[] = ['code' => 'BE', 'name' => 'Belgium', 'd_code' => '+32'];
$countries[] = ['code' => 'BZ', 'name' => 'Belize', 'd_code' => '+501'];
$countries[] = ['code' => 'BJ', 'name' => 'Benin', 'd_code' => '+229'];
$countries[] = ['code' => 'BM', 'name' => 'Bermuda', 'd_code' => '+1'];
$countries[] = ['code' => 'BT', 'name' => 'Bhutan', 'd_code' => '+975'];
$countries[] = ['code' => 'BO', 'name' => 'Bolivia', 'd_code' => '+591'];
$countries[] = ['code' => 'BA', 'name' => 'Bosnia and Herzegovina', 'd_code' => '+387'];
$countries[] = ['code' => 'BW', 'name' => 'Botswana', 'd_code' => '+267'];
$countries[] = ['code' => 'BR', 'name' => 'Brazil', 'd_code' => '+55'];
$countries[] = ['code' => 'IO', 'name' => 'British Indian Ocean Territory', 'd_code' => '+246'];
$countries[] = ['code' => 'VG', 'name' => 'British Virgin Islands', 'd_code' => '+1'];
$countries[] = ['code' => 'BN', 'name' => 'Brunei', 'd_code' => '+673'];
$countries[] = ['code' => 'BG', 'name' => 'Bulgaria', 'd_code' => '+359'];
$countries[] = ['code' => 'BF', 'name' => 'Burkina Faso', 'd_code' => '+226'];
$countries[] = ['code' => 'MM', 'name' => 'Burma Myanmar', 'd_code' => '+95'];
$countries[] = ['code' => 'BI', 'name' => 'Burundi', 'd_code' => '+257'];
$countries[] = ['code' => 'KH', 'name' => 'Cambodia', 'd_code' => '+855'];
$countries[] = ['code' => 'CM', 'name' => 'Cameroon', 'd_code' => '+237'];
$countries[] = ['code' => 'CA', 'name' => 'Canada', 'd_code' => '+1'];
$countries[] = ['code' => 'CV', 'name' => 'Cape Verde', 'd_code' => '+238'];
$countries[] = ['code' => 'KY', 'name' => 'Cayman Islands', 'd_code' => '+1'];
$countries[] = ['code' => 'CF', 'name' => 'Central African Republic', 'd_code' => '+236'];
$countries[] = ['code' => 'TD', 'name' => 'Chad', 'd_code' => '+235'];
$countries[] = ['code' => 'CL', 'name' => 'Chile', 'd_code' => '+56'];
$countries[] = ['code' => 'CN', 'name' => 'China', 'd_code' => '+86'];
$countries[] = ['code' => 'CO', 'name' => 'Colombia', 'd_code' => '+57'];
$countries[] = ['code' => 'KM', 'name' => 'Comoros', 'd_code' => '+269'];
$countries[] = ['code' => 'CK', 'name' => 'Cook Islands', 'd_code' => '+682'];
$countries[] = ['code' => 'CR', 'name' => 'Costa Rica', 'd_code' => '+506'];
$countries[] = ['code' => 'CI', 'name' => "Côte d'Ivoire", 'd_code' => '+225'];
$countries[] = ['code' => 'HR', 'name' => 'Croatia', 'd_code' => '+385'];
$countries[] = ['code' => 'CU', 'name' => 'Cuba', 'd_code' => '+53'];
$countries[] = ['code' => 'CY', 'name' => 'Cyprus', 'd_code' => '+357'];
$countries[] = ['code' => 'CZ', 'name' => 'Czech Republic', 'd_code' => '+420'];
$countries[] = ['code' => 'CD', 'name' => 'Democratic Republic of Congo', 'd_code' => '+243'];
$countries[] = ['code' => 'DK', 'name' => 'Denmark', 'd_code' => '+45'];
$countries[] = ['code' => 'DJ', 'name' => 'Djibouti', 'd_code' => '+253'];
$countries[] = ['code' => 'DM', 'name' => 'Dominica', 'd_code' => '+1'];
$countries[] = ['code' => 'DO', 'name' => 'Dominican Republic', 'd_code' => '+1'];
$countries[] = ['code' => 'EC', 'name' => 'Ecuador', 'd_code' => '+593'];
$countries[] = ['code' => 'EG', 'name' => 'Egypt', 'd_code' => '+20'];
$countries[] = ['code' => 'SV', 'name' => 'El Salvador', 'd_code' => '+503'];
$countries[] = ['code' => 'GQ', 'name' => 'Equatorial Guinea', 'd_code' => '+240'];
$countries[] = ['code' => 'ER', 'name' => 'Eritrea', 'd_code' => '+291'];
$countries[] = ['code' => 'EE', 'name' => 'Estonia', 'd_code' => '+372'];
$countries[] = ['code' => 'ET', 'name' => 'Ethiopia', 'd_code' => '+251'];
$countries[] = ['code' => 'FK', 'name' => 'Falkland Islands', 'd_code' => '+500'];
$countries[] = ['code' => 'FO', 'name' => 'Faroe Islands', 'd_code' => '+298'];
$countries[] = ['code' => 'FM', 'name' => 'Federated States of Micronesia', 'd_code' => '+691'];
$countries[] = ['code' => 'FJ', 'name' => 'Fiji', 'd_code' => '+679'];
$countries[] = ['code' => 'FI', 'name' => 'Finland', 'd_code' => '+358'];
$countries[] = ['code' => 'FR', 'name' => 'France', 'd_code' => '+33'];
$countries[] = ['code' => 'GF', 'name' => 'French Guiana', 'd_code' => '+594'];
$countries[] = ['code' => 'PF', 'name' => 'French Polynesia', 'd_code' => '+689'];
$countries[] = ['code' => 'GA', 'name' => 'Gabon', 'd_code' => '+241'];
$countries[] = ['code' => 'GE', 'name' => 'Georgia', 'd_code' => '+995'];
$countries[] = ['code' => 'DE', 'name' => 'Germany', 'd_code' => '+49'];
$countries[] = ['code' => 'GH', 'name' => 'Ghana', 'd_code' => '+233'];
$countries[] = ['code' => 'GI', 'name' => 'Gibraltar', 'd_code' => '+350'];
$countries[] = ['code' => 'GR', 'name' => 'Greece', 'd_code' => '+30'];
$countries[] = ['code' => 'GL', 'name' => 'Greenland', 'd_code' => '+299'];
$countries[] = ['code' => 'GD', 'name' => 'Grenada', 'd_code' => '+1'];
$countries[] = ['code' => 'GP', 'name' => 'Guadeloupe', 'd_code' => '+590'];
$countries[] = ['code' => 'GU', 'name' => 'Guam', 'd_code' => '+1'];
$countries[] = ['code' => 'GT', 'name' => 'Guatemala', 'd_code' => '+502'];
$countries[] = ['code' => 'GN', 'name' => 'Guinea', 'd_code' => '+224'];
$countries[] = ['code' => 'GW', 'name' => 'Guinea-Bissau', 'd_code' => '+245'];
$countries[] = ['code' => 'GY', 'name' => 'Guyana', 'd_code' => '+592'];
$countries[] = ['code' => 'HT', 'name' => 'Haiti', 'd_code' => '+509'];
$countries[] = ['code' => 'HN', 'name' => 'Honduras', 'd_code' => '+504'];
$countries[] = ['code' => 'HK', 'name' => 'Hong Kong', 'd_code' => '+852'];
$countries[] = ['code' => 'HU', 'name' => 'Hungary', 'd_code' => '+36'];
$countries[] = ['code' => 'IS', 'name' => 'Iceland', 'd_code' => '+354'];
$countries[] = ['code' => 'IN', 'name' => 'India', 'd_code' => '+91'];
$countries[] = ['code' => 'ID', 'name' => 'Indonesia', 'd_code' => '+62'];
$countries[] = ['code' => 'IR', 'name' => 'Iran', 'd_code' => '+98'];
$countries[] = ['code' => 'IQ', 'name' => 'Iraq', 'd_code' => '+964'];
$countries[] = ['code' => 'IE', 'name' => 'Ireland', 'd_code' => '+353'];
$countries[] = ['code' => 'IL', 'name' => 'Israel', 'd_code' => '+972'];
$countries[] = ['code' => 'IT', 'name' => 'Italy', 'd_code' => '+39'];
$countries[] = ['code' => 'JM', 'name' => 'Jamaica', 'd_code' => '+1'];
$countries[] = ['code' => 'JP', 'name' => 'Japan', 'd_code' => '+81'];
$countries[] = ['code' => 'JO', 'name' => 'Jordan', 'd_code' => '+962'];
$countries[] = ['code' => 'KZ', 'name' => 'Kazakhstan', 'd_code' => '+7'];
$countries[] = ['code' => 'KE', 'name' => 'Kenya', 'd_code' => '+254'];
$countries[] = ['code' => 'KI', 'name' => 'Kiribati', 'd_code' => '+686'];
$countries[] = ['code' => 'XK', 'name' => 'Kosovo', 'd_code' => '+381'];
$countries[] = ['code' => 'KW', 'name' => 'Kuwait', 'd_code' => '+965'];
$countries[] = ['code' => 'KG', 'name' => 'Kyrgyzstan', 'd_code' => '+996'];
$countries[] = ['code' => 'LA', 'name' => 'Laos', 'd_code' => '+856'];
$countries[] = ['code' => 'LV', 'name' => 'Latvia', 'd_code' => '+371'];
$countries[] = ['code' => 'LB', 'name' => 'Lebanon', 'd_code' => '+961'];
$countries[] = ['code' => 'LS', 'name' => 'Lesotho', 'd_code' => '+266'];
$countries[] = ['code' => 'LR', 'name' => 'Liberia', 'd_code' => '+231'];
$countries[] = ['code' => 'LY', 'name' => 'Libya', 'd_code' => '+218'];
$countries[] = ['code' => 'LI', 'name' => 'Liechtenstein', 'd_code' => '+423'];
$countries[] = ['code' => 'LT', 'name' => 'Lithuania', 'd_code' => '+370'];
$countries[] = ['code' => 'LU', 'name' => 'Luxembourg', 'd_code' => '+352'];
$countries[] = ['code' => 'MO', 'name' => 'Macau', 'd_code' => '+853'];
$countries[] = ['code' => 'MK', 'name' => 'Macedonia', 'd_code' => '+389'];
$countries[] = ['code' => 'MG', 'name' => 'Madagascar', 'd_code' => '+261'];
$countries[] = ['code' => 'MW', 'name' => 'Malawi', 'd_code' => '+265'];
$countries[] = ['code' => 'MY', 'name' => 'Malaysia', 'd_code' => '+60'];
$countries[] = ['code' => 'MV', 'name' => 'Maldives', 'd_code' => '+960'];
$countries[] = ['code' => 'ML', 'name' => 'Mali', 'd_code' => '+223'];
$countries[] = ['code' => 'MT', 'name' => 'Malta', 'd_code' => '+356'];
$countries[] = ['code' => 'MH', 'name' => 'Marshall Islands', 'd_code' => '+692'];
$countries[] = ['code' => 'MQ', 'name' => 'Martinique', 'd_code' => '+596'];
$countries[] = ['code' => 'MR', 'name' => 'Mauritania', 'd_code' => '+222'];
$countries[] = ['code' => 'MU', 'name' => 'Mauritius', 'd_code' => '+230'];
$countries[] = ['code' => 'YT', 'name' => 'Mayotte', 'd_code' => '+262'];
$countries[] = ['code' => 'MX', 'name' => 'Mexico', 'd_code' => '+52'];
$countries[] = ['code' => 'MD', 'name' => 'Moldova', 'd_code' => '+373'];
$countries[] = ['code' => 'MC', 'name' => 'Monaco', 'd_code' => '+377'];
$countries[] = ['code' => 'MN', 'name' => 'Mongolia', 'd_code' => '+976'];
$countries[] = ['code' => 'ME', 'name' => 'Montenegro', 'd_code' => '+382'];
$countries[] = ['code' => 'MS', 'name' => 'Montserrat', 'd_code' => '+1'];
$countries[] = ['code' => 'MA', 'name' => 'Morocco', 'd_code' => '+212'];
$countries[] = ['code' => 'MZ', 'name' => 'Mozambique', 'd_code' => '+258'];
$countries[] = ['code' => 'NA', 'name' => 'Namibia', 'd_code' => '+264'];
$countries[] = ['code' => 'NR', 'name' => 'Nauru', 'd_code' => '+674'];
$countries[] = ['code' => 'NP', 'name' => 'Nepal', 'd_code' => '+977'];
$countries[] = ['code' => 'NL', 'name' => 'Netherlands', 'd_code' => '+31'];
$countries[] = ['code' => 'AN', 'name' => 'Netherlands Antilles', 'd_code' => '+599'];
$countries[] = ['code' => 'NC', 'name' => 'New Caledonia', 'd_code' => '+687'];
$countries[] = ['code' => 'NZ', 'name' => 'New Zealand', 'd_code' => '+64'];
$countries[] = ['code' => 'NI', 'name' => 'Nicaragua', 'd_code' => '+505'];
$countries[] = ['code' => 'NE', 'name' => 'Niger', 'd_code' => '+227'];
$countries[] = ['code' => 'NG', 'name' => 'Nigeria', 'd_code' => '+234'];
$countries[] = ['code' => 'NU', 'name' => 'Niue', 'd_code' => '+683'];
$countries[] = ['code' => 'NF', 'name' => 'Norfolk Island', 'd_code' => '+672'];
$countries[] = ['code' => 'KP', 'name' => 'North Korea', 'd_code' => '+850'];
$countries[] = ['code' => 'MP', 'name' => 'Northern Mariana Islands', 'd_code' => '+1'];
$countries[] = ['code' => 'NO', 'name' => 'Norway', 'd_code' => '+47'];
$countries[] = ['code' => 'OM', 'name' => 'Oman', 'd_code' => '+968'];
$countries[] = ['code' => 'PK', 'name' => 'Pakistan', 'd_code' => '+92'];
$countries[] = ['code' => 'PW', 'name' => 'Palau', 'd_code' => '+680'];
$countries[] = ['code' => 'PS', 'name' => 'Palestine', 'd_code' => '+970'];
$countries[] = ['code' => 'PA', 'name' => 'Panama', 'd_code' => '+507'];
$countries[] = ['code' => 'PG', 'name' => 'Papua New Guinea', 'd_code' => '+675'];
$countries[] = ['code' => 'PY', 'name' => 'Paraguay', 'd_code' => '+595'];
$countries[] = ['code' => 'PE', 'name' => 'Peru', 'd_code' => '+51'];
$countries[] = ['code' => 'PH', 'name' => 'Philippines', 'd_code' => '+63'];
$countries[] = ['code' => 'PL', 'name' => 'Poland', 'd_code' => '+48'];
$countries[] = ['code' => 'PT', 'name' => 'Portugal', 'd_code' => '+351'];
$countries[] = ['code' => 'PR', 'name' => 'Puerto Rico', 'd_code' => '+1'];
$countries[] = ['code' => 'QA', 'name' => 'Qatar', 'd_code' => '+974'];
$countries[] = ['code' => 'CG', 'name' => 'Republic of the Congo', 'd_code' => '+242'];
$countries[] = ['code' => 'RE', 'name' => 'Réunion', 'd_code' => '+262'];
$countries[] = ['code' => 'RO', 'name' => 'Romania', 'd_code' => '+40'];
$countries[] = ['code' => 'RU', 'name' => 'Russia', 'd_code' => '+7'];
$countries[] = ['code' => 'RW', 'name' => 'Rwanda', 'd_code' => '+250'];
$countries[] = ['code' => 'BL', 'name' => 'Saint Barthélemy', 'd_code' => '+590'];
$countries[] = ['code' => 'SH', 'name' => 'Saint Helena', 'd_code' => '+290'];
$countries[] = ['code' => 'KN', 'name' => 'Saint Kitts and Nevis', 'd_code' => '+1'];
$countries[] = ['code' => 'MF', 'name' => 'Saint Martin', 'd_code' => '+590'];
$countries[] = ['code' => 'PM', 'name' => 'Saint Pierre and Miquelon', 'd_code' => '+508'];
$countries[] = ['code' => 'VC', 'name' => 'Saint Vincent and the Grenadines', 'd_code' => '+1'];
$countries[] = ['code' => 'WS', 'name' => 'Samoa', 'd_code' => '+685'];
$countries[] = ['code' => 'SM', 'name' => 'San Marino', 'd_code' => '+378'];
$countries[] = ['code' => 'ST', 'name' => 'São Tomé and Príncipe', 'd_code' => '+239'];
$countries[] = ['code' => 'SA', 'name' => 'Saudi Arabia', 'd_code' => '+966'];
$countries[] = ['code' => 'SN', 'name' => 'Senegal', 'd_code' => '+221'];
$countries[] = ['code' => 'RS', 'name' => 'Serbia', 'd_code' => '+381'];
$countries[] = ['code' => 'SC', 'name' => 'Seychelles', 'd_code' => '+248'];
$countries[] = ['code' => 'SL', 'name' => 'Sierra Leone', 'd_code' => '+232'];
$countries[] = ['code' => 'SG', 'name' => 'Singapore', 'd_code' => '+65'];
$countries[] = ['code' => 'SK', 'name' => 'Slovakia', 'd_code' => '+421'];
$countries[] = ['code' => 'SI', 'name' => 'Slovenia', 'd_code' => '+386'];
$countries[] = ['code' => 'SB', 'name' => 'Solomon Islands', 'd_code' => '+677'];
$countries[] = ['code' => 'SO', 'name' => 'Somalia', 'd_code' => '+252'];
$countries[] = ['code' => 'ZA', 'name' => 'South Africa', 'd_code' => '+27'];
$countries[] = ['code' => 'KR', 'name' => 'South Korea', 'd_code' => '+82'];
$countries[] = ['code' => 'ES', 'name' => 'Spain', 'd_code' => '+34'];
$countries[] = ['code' => 'LK', 'name' => 'Sri Lanka', 'd_code' => '+94'];
$countries[] = ['code' => 'LC', 'name' => 'St. Lucia', 'd_code' => '+1'];
$countries[] = ['code' => 'SD', 'name' => 'Sudan', 'd_code' => '+249'];
$countries[] = ['code' => 'SR', 'name' => 'Suriname', 'd_code' => '+597'];
$countries[] = ['code' => 'SZ', 'name' => 'Swaziland', 'd_code' => '+268'];
$countries[] = ['code' => 'SE', 'name' => 'Sweden', 'd_code' => '+46'];
$countries[] = ['code' => 'CH', 'name' => 'Switzerland', 'd_code' => '+41'];
$countries[] = ['code' => 'SY', 'name' => 'Syria', 'd_code' => '+963'];
$countries[] = ['code' => 'TW', 'name' => 'Taiwan', 'd_code' => '+886'];
$countries[] = ['code' => 'TJ', 'name' => 'Tajikistan', 'd_code' => '+992'];
$countries[] = ['code' => 'TZ', 'name' => 'Tanzania', 'd_code' => '+255'];
$countries[] = ['code' => 'TH', 'name' => 'Thailand', 'd_code' => '+66'];
$countries[] = ['code' => 'BS', 'name' => 'The Bahamas', 'd_code' => '+1'];
$countries[] = ['code' => 'GM', 'name' => 'The Gambia', 'd_code' => '+220'];
$countries[] = ['code' => 'TL', 'name' => 'Timor-Leste', 'd_code' => '+670'];
$countries[] = ['code' => 'TG', 'name' => 'Togo', 'd_code' => '+228'];
$countries[] = ['code' => 'TK', 'name' => 'Tokelau', 'd_code' => '+690'];
$countries[] = ['code' => 'TO', 'name' => 'Tonga', 'd_code' => '+676'];
$countries[] = ['code' => 'TT', 'name' => 'Trinidad and Tobago', 'd_code' => '+1'];
$countries[] = ['code' => 'TN', 'name' => 'Tunisia', 'd_code' => '+216'];
$countries[] = ['code' => 'TR', 'name' => 'Turkey', 'd_code' => '+90'];
$countries[] = ['code' => 'TM', 'name' => 'Turkmenistan', 'd_code' => '+993'];
$countries[] = ['code' => 'TC', 'name' => 'Turks and Caicos Islands', 'd_code' => '+1'];
$countries[] = ['code' => 'TV', 'name' => 'Tuvalu', 'd_code' => '+688'];
$countries[] = ['code' => 'UG', 'name' => 'Uganda', 'd_code' => '+256'];
$countries[] = ['code' => 'UA', 'name' => 'Ukraine', 'd_code' => '+380'];
$countries[] = ['code' => 'AE', 'name' => 'United Arab Emirates', 'd_code' => '+971'];
$countries[] = ['code' => 'GB', 'name' => 'United Kingdom', 'd_code' => '+44'];
$countries[] = ['code' => 'US', 'name' => 'United States', 'd_code' => '+1'];
$countries[] = ['code' => 'UY', 'name' => 'Uruguay', 'd_code' => '+598'];
$countries[] = ['code' => 'VI', 'name' => 'US Virgin Islands', 'd_code' => '+1'];
$countries[] = ['code' => 'UZ', 'name' => 'Uzbekistan', 'd_code' => '+998'];
$countries[] = ['code' => 'VU', 'name' => 'Vanuatu', 'd_code' => '+678'];
$countries[] = ['code' => 'VA', 'name' => 'Vatican City', 'd_code' => '+39'];
$countries[] = ['code' => 'VE', 'name' => 'Venezuela', 'd_code' => '+58'];
$countries[] = ['code' => 'VN', 'name' => 'Vietnam', 'd_code' => '+84'];
$countries[] = ['code' => 'WF', 'name' => 'Wallis and Futuna', 'd_code' => '+681'];
$countries[] = ['code' => 'YE', 'name' => 'Yemen', 'd_code' => '+967'];
$countries[] = ['code' => 'ZM', 'name' => 'Zambia', 'd_code' => '+260'];
$countries[] = ['code' => 'ZW', 'name' => 'Zimbabwe', 'd_code' => '+263'];
return $countries;
}
/**
* get timezone list
*
* @return array
* @throws Exception
*/
public static function timezoneList(): array
{
$timezoneIdentifiers = DateTimeZone::listIdentifiers();
$utcTime = new DateTime('now', new DateTimeZone('UTC'));
$tempTimezones = [];
foreach ($timezoneIdentifiers as $timezoneIdentifier) {
$currentTimezone = new DateTimeZone($timezoneIdentifier);
$tempTimezones[] = [
'offset' => $currentTimezone->getOffset($utcTime),
'identifier' => $timezoneIdentifier,
];
}
usort($tempTimezones, function ($a, $b) {
return ($a['offset'] == $b['offset'])
? strcmp($a['identifier'], $b['identifier'])
: $a['offset'] - $b['offset'];
});
$timezoneList = [];
foreach ($tempTimezones as $tz) {
$sign = ($tz['offset'] > 0) ? '+' : '-';
$offset = gmdate('H:i', abs($tz['offset']));
$timezoneList[$tz['identifier']] = '(UTC '.$sign.$offset.') '.
$tz['identifier'];
}
return $timezoneList;
}
/**
* Check if exec() function is available.
*
* @return bool
*/
public static function exec_enabled(): bool
{
try {
// make a small test
// exec('ls');
return function_exists('exec') && ! in_array('exec', array_map('trim', explode(', ', ini_get('disable_functions'))));
} catch (Exception) {
return false;
}
}
/**
* application menu
*
* @return array[]
*/
public static function menuData(): array
{
return [
"admin" => [
[
"url" => url(config('app.admin_path')."/dashboard"),
'slug' => config('app.admin_path')."/dashboard",
"name" => "Dashboard",
"i18n" => "Dashboard",
"icon" => "home",
"access" => "access backend",
],
[
"url" => "",
"name" => "Customer",
"icon" => "users",
"i18n" => "Customer",
"access" => "view customer|view subscription",
"submenu" => [
[
"url" => url(config('app.admin_path')."/customers"),
'slug' => config('app.admin_path')."/customers",
"name" => "Customers",
"i18n" => "Customers",
"access" => "view customer",
"icon" => "users",
],
[
"url" => url(config('app.admin_path')."/subscriptions"),
'slug' => config('app.admin_path')."/subscriptions",
"name" => "Subscriptions",
"i18n" => "Subscriptions",
"access" => "view subscription",
"icon" => "credit-card",
],
],
],
[
"url" => "",
"name" => "Plan",
"i18n" => "Plan",
"icon" => "credit-card",
"access" => "manage plans|manage currencies",
"submenu" => [
[
"url" => url(config('app.admin_path')."/plans"),
'slug' => config('app.admin_path')."/plans",
"name" => "Plans",
"i18n" => "Plans",
"access" => "manage plans",
"icon" => "credit-card",
],
[
"url" => url(config('app.admin_path')."/currencies"),
'slug' => config('app.admin_path')."/currencies",
"name" => "Currencies",
"i18n" => "Currencies",
"access" => "manage currencies",
"icon" => "dollar-sign",
],
],
],
[
"url" => "",
"name" => "Sending",
"icon" => "send",
"i18n" => "Sending",
"access" => "view sender_id|view keywords|view sending_servers|view phone_numbers|view tags",
"submenu" => [
[
"url" => url(config('app.admin_path')."/sending-servers"),
'slug' => config('app.admin_path')."/sending-servers",
"name" => "Sending Servers",
"i18n" => "Sending Servers",
"access" => "view sending_servers",
"icon" => "send",
],
[
"url" => url(config('app.admin_path')."/senderid"),
'slug' => config('app.admin_path')."/senderid",
"name" => "Sender ID",
"i18n" => "Sender ID",
"access" => "view sender_id",
"icon" => "book",
],
[
"url" => url(config('app.admin_path')."/phone-numbers"),
'slug' => config('app.admin_path')."/phone-numbers",
"name" => "Numbers",
"i18n" => "Numbers",
"access" => "view phone_numbers",
"icon" => "phone",
],
[
"url" => url(config('app.admin_path')."/keywords"),
'slug' => config('app.admin_path')."/keywords",
"name" => "Keywords",
"i18n" => "Keywords",
"access" => "view keywords",
"icon" => "hash",
],
[
"url" => url(config('app.admin_path')."/tags"),
'slug' => config('app.admin_path')."/tags",
"name" => "Template Tags",
"i18n" => "Template Tags",
"access" => "view tags",
"icon" => "tag",
],
],
],
[
"url" => "",
"name" => "Security",
"i18n" => "Security",
"icon" => "shield",
"access" => "view blacklist|view spam_word",
"submenu" => [
[
"url" => url(config('app.admin_path')."/blacklists"),
'slug' => config('app.admin_path')."/blacklists",
"name" => "Blacklist",
"i18n" => "Blacklist",
"access" => "view blacklist",
"icon" => "user-x",
],
[
"url" => url(config('app.admin_path')."/spam-word"),
'slug' => config('app.admin_path')."/spam-word",
"name" => "Spam Word",
"i18n" => "Spam Word",
"access" => "view spam_word",
"icon" => "x-square",
],
],
],
[
"url" => "",
"name" => "Administrator",
"i18n" => "Administrator",
"icon" => "user",
"access" => "view administrator|view roles",
"submenu" => [
[
"url" => url(config('app.admin_path')."/administrators"),
'slug' => config('app.admin_path')."/administrators",
"name" => "Administrators",
"i18n" => "Administrators",
"access" => "view administrator",
"icon" => "users",
],
[
"url" => url(config('app.admin_path')."/roles"),
'slug' => config('app.admin_path')."/roles",
"name" => "Admin Roles",
"i18n" => "Admin Roles",
"access" => "view roles",
"icon" => "user-check",
],
],
],
[
"url" => "",
"name" => "Settings",
"i18n" => "Settings",
"icon" => "settings",
"access" => "general settings|view languages|view payment_gateways|view email_templates|manage update_application",
"submenu" => [
[
"url" => url(config('app.admin_path')."/settings"),
'slug' => config('app.admin_path')."/settings",
"name" => "All Settings",
"i18n" => "All Settings",
"access" => "general settings",
"icon" => "settings",
],
[
"url" => url(config('app.admin_path')."/countries"),
'slug' => config('app.admin_path')."/countries",
"name" => "Countries",
"i18n" => "Countries",
"access" => "general settings",
"icon" => "map-pin",
],
[
"url" => url(config('app.admin_path')."/languages"),
'slug' => config('app.admin_path')."/languages",
"name" => "Language",
"i18n" => "Language",
"access" => "view languages",
"icon" => "globe",
],
[
"url" => url(config('app.admin_path')."/payment-gateways"),
'slug' => config('app.admin_path')."/payment-gateways",
"name" => "Payment Gateways",
"i18n" => "Payment Gateways",
"access" => "view payment_gateways",
"icon" => "shopping-bag",
],
[
"url" => url(config('app.admin_path')."/email-templates"),
'slug' => config('app.admin_path')."/email-templates",
"name" => "Email Templates",
"i18n" => "Email Templates",
"access" => "view email_templates",
"icon" => "mail",
],
[
"url" => url(config('app.admin_path')."/update-application"),
'slug' => config('app.admin_path')."/update-application",
"name" => "Update Application",
"i18n" => "Update Application",
"access" => "manage update_application",
"icon" => "upload",
],
],
],
[
"url" => "",
"name" => "Reports",
"i18n" => "Reports",
"icon" => "bar-chart-2",
"access" => "view invoices|view sms_history",
"submenu" => [
[
"url" => url(config('app.admin_path')."/invoices"),
'slug' => config('app.admin_path')."/invoices",
"name" => "All Invoices",
"i18n" => "All Invoices",
"access" => "view invoices",
"icon" => "pie-chart",
],
[
"url" => url(config('app.admin_path')."/reports"),
'slug' => config('app.admin_path')."/reports",
"name" => "SMS History",
"i18n" => "SMS History",
"access" => "view sms_history",
"icon" => "bar-chart-2",
],
],
],
[
"url" => url(config('app.admin_path')."/customizer"),
'slug' => config('app.admin_path')."/customizer",
"name" => "Theme Customizer",
"i18n" => "Theme Customizer",
"icon" => "grid",
"access" => "general settings",
],
],
"customer" => [
[
"url" => url("dashboard"),
'slug' => "dashboard",
"name" => "Dashboard",
"i18n" => "Dashboard",
"icon" => "home",
"access" => "access_backend",
],
[
"url" => "",
"name" => "Reports",
"i18n" => "Reports",
"icon" => "bar-chart-2",
"access" => "view_reports",
"submenu" => [
[
"url" => url("reports/all"),
'slug' => "reports/all",
"name" => "All Messages",
"i18n" => "All Messages",
"access" => "view_reports",
"icon" => "bar-chart-2",
],
[
"url" => url("reports/received"),
'slug' => "reports/received",
"name" => "Received Messages",
"i18n" => "Received Messages",
"access" => "view_reports",
"icon" => "phone-incoming",
],
[
"url" => url("reports/sent"),
'slug' => "reports/sent",
"name" => "Sent Messages",
"i18n" => "Sent Messages",
"access" => "view_reports",
"icon" => "phone-outgoing",
],
[
"url" => url("reports/campaigns"),
'slug' => "reports/campaigns",
"name" => "Campaigns",
"i18n" => "Campaigns",
"access" => "view_reports",
"icon" => "pie-chart",
],
],
],
[
"url" => url("contacts"),
'slug' => "contacts",
"name" => "Contacts",
"i18n" => "Contacts",
"icon" => "user",
"access" => "view_contact_group|create_contact_group|update_contact_group|delete_contact_group|view_contact|create_contact|update_contact|delete_contact",
],
[
"url" => "",
"name" => "Sending",
"icon" => "send",
"i18n" => "Sending",
"access" => "create_sending_servers|view_numbers|view_keywords|view_sender_id|sms_template",
"submenu" => [
[
"url" => url("sending-servers"),
'slug' => "sending-servers",
"name" => "Sending Servers",
"i18n" => "Sending Servers",
"access" => "create_sending_servers",
"icon" => "send",
],
[
"url" => url("senderid"),
'slug' => "senderid",
"name" => "Sender ID",
"i18n" => "Sender ID",
"access" => "view_sender_id",
"icon" => "book",
],
[
"url" => url("numbers"),
'slug' => "numbers",
"name" => "Numbers",
"i18n" => "Numbers",
"access" => "view_numbers",
"icon" => "phone",
],
[
"url" => url("keywords"),
'slug' => "keywords",
"name" => "Keywords",
"i18n" => "Keywords",
"access" => "view_keywords",
"icon" => "hash",
],
[
"url" => url("templates"),
'slug' => "templates",
"name" => "SMS Template",
"i18n" => "SMS Template",
"access" => "sms_template",
"icon" => "smartphone",
],
],
],
[
"url" => url("blacklists"),
'slug' => "blacklists",
"name" => "Blacklist",
"i18n" => "Blacklist",
"icon" => "shield",
"access" => "view_blacklist|create_blacklist|update_blacklist|delete_blacklist",
],
[
"url" => "",
"name" => "SMS",
"i18n" => "SMS",
"icon" => "message-square",
"access" => "sms_campaign_builder|sms_quick_send|sms_bulk_messages",
"submenu" => [
[
"url" => url("sms/campaign-builder"),
'slug' => "sms/campaign-builder",
"name" => "Campaign Builder",
"i18n" => "Campaign Builder",
"access" => "sms_campaign_builder",
"icon" => "server",
],
[
"url" => url("sms/quick-send"),
'slug' => "sms/quick-send",
"name" => "Quick Send",
"i18n" => "Quick Send",
"access" => "sms_quick_send",
"icon" => "send",
],
[
"url" => url("sms/import"),
'slug' => "sms/import",
"name" => "Send Using File",
"i18n" => "Send Using File",
"access" => "sms_bulk_messages",
"icon" => "file-text",
],
],
],
[
"url" => "",
"name" => "Voice",
"i18n" => "Voice",
"icon" => "phone-call",
"access" => "voice_campaign_builder|voice_quick_send|voice_bulk_messages",
"submenu" => [
[
"url" => url("voice/campaign-builder"),
'slug' => "voice/campaign-builder",
"name" => "Campaign Builder",
"i18n" => "Campaign Builder",
"access" => "voice_campaign_builder",
"icon" => "server",
],
[
"url" => url("voice/quick-send"),
'slug' => "voice/quick-send",
"name" => "Quick Send",
"i18n" => "Quick Send",
"access" => "voice_quick_send",
"icon" => "send",
],
[
"url" => url("voice/import"),
'slug' => "voice/import",
"name" => "Send Using File",
"i18n" => "Send Using File",
"access" => "voice_bulk_messages",
"icon" => "file-text",
],
],
],
[
"url" => "",
"name" => "MMS",
"i18n" => "MMS",
"icon" => "image",
"access" => "mms_campaign_builder|mms_quick_send|mms_bulk_messages",
"submenu" => [
[
"url" => url("mms/campaign-builder"),
'slug' => "mms/campaign-builder",
"name" => "Campaign Builder",
"i18n" => "Campaign Builder",
"access" => "mms_campaign_builder",
"icon" => "server",
],
[
"url" => url("mms/quick-send"),
'slug' => "mms/quick-send",
"name" => "Quick Send",
"i18n" => "Quick Send",
"access" => "mms_quick_send",
"icon" => "send",
],
[
"url" => url("mms/import"),
'slug' => "mms/import",
"name" => "Send Using File",
"i18n" => "Send Using File",
"access" => "mms_bulk_messages",
"icon" => "file-text",
],
],
],
[
"url" => "",
"name" => "WhatsApp",
"i18n" => "WhatsApp",
"icon" => "message-circle",
"access" => "whatsapp_campaign_builder|whatsapp_quick_send|whatsapp_bulk_messages",
"submenu" => [
[
"url" => url("whatsapp/campaign-builder"),
'slug' => "whatsapp/campaign-builder",
"name" => "Campaign Builder",
"i18n" => "Campaign Builder",
"access" => "whatsapp_campaign_builder",
"icon" => "server",
],
[
"url" => url("whatsapp/quick-send"),
'slug' => "whatsapp/quick-send",
"name" => "Quick Send",
"i18n" => "Quick Send",
"access" => "whatsapp_quick_send",
"icon" => "send",
],
[
"url" => url("whatsapp/import"),
'slug' => "whatsapp/import",
"name" => "Send Using File",
"i18n" => "Send Using File",
"access" => "whatsapp_bulk_messages",
"icon" => "file-text",
],
],
],
[
"url" => url("chat-box"),
'slug' => "chat-box",
"name" => "Chat Box",
"i18n" => "Chat Box",
"icon" => "slack",
"access" => "chat_box",
],
[
"url" => url("developers"),
'slug' => "developers",
"name" => "Developers",
"i18n" => "Developers",
"icon" => "terminal",
"access" => "developers",
],
],
];
}
public static function languages()
{
$lang_count = Language::where('status', 1)->count();
$availLocale = Session::get('available_languages');
if ( ! isset($availLocale) || count($availLocale) !== $lang_count) {
$availLocale = Language::where('status', 1)->cursor()->map(function ($lang) {
return [
'name' => $lang->name,
'code' => $lang->code,
'iso_code' => $lang->iso_code,
];
})->toArray();
Session::put('available_languages', $availLocale);
}
return $availLocale;
}
/**
* make round-robin
*
* @param array $teams
* @param int|null $rounds
* @param bool $shuffle
* @param int|null $seed
*
* @return array
*/
public static function makeRoundRobin(array $teams, int $rounds = null, bool $shuffle = true, int $seed = null): array
{
$teamCount = count($teams);
if ($teamCount < 2) {
return [];
}
//Account for odd number of teams by adding a bye
if ($teamCount % 2 === 1) {
$teams[] = null;
$teamCount += 1;
}
if ($shuffle) {
//Seed shuffle with random_int for better randomness if seed is null
try {
srand($seed ?? random_int(PHP_INT_MIN, PHP_INT_MAX));
} catch (Exception) {
}
shuffle($teams);
} elseif ( ! is_null($seed)) {
//Generate friendly notice that seed is set but shuffle is set to false
trigger_error('Seed parameter has no effect when shuffle parameter is set to false');
}
$halfTeamCount = $teamCount / 2;
if ($rounds === null) {
$rounds = $teamCount - 1;
}
$schedule = [];
for ($round = 1; $round <= $rounds; $round += 1) {
foreach ($teams as $key => $team) {
if ($key >= $halfTeamCount) {
break;
}
$team1 = $team;
$team2 = $teams[$key + $halfTeamCount];
//Home-away swapping
$matchup = $round % 2 === 0 ? [$team1, $team2] : [$team2, $team1];
$schedule[$round][] = $matchup;
}
$itemCount = count($teams);
if ($itemCount < 3) {
return [];
}
$lastIndex = $itemCount - 1;
/**
* Though not technically part of the round-robin algorithm, odd-even
* factor differentiation included to have intuitive behavior for arrays
* with an odd number of elements
*/
$factor = (int) ($itemCount % 2 === 0 ? $itemCount / 2 : ($itemCount / 2) + 1);
$topRightIndex = $factor - 1;
$topRightItem = $teams[$topRightIndex];
$bottomLeftIndex = $factor;
$bottomLeftItem = $teams[$bottomLeftIndex];
for ($i = $topRightIndex; $i > 0; $i -= 1) {
$teams[$i] = $teams[$i - 1];
}
for ($i = $bottomLeftIndex; $i < $lastIndex; $i += 1) {
$teams[$i] = $teams[$i + 1];
}
$teams[1] = $bottomLeftItem;
$teams[$lastIndex] = $topRightItem;
}
return $schedule;
}
/**
* voice regions
*
* @return string[]
*/
public static function voice_regions(): array
{
return [
"de-DE" => "German, Germany",
"en-AU" => "English, Australia",
"en-GB" => "English, UK",
"en-US" => "English, US",
"es-ES" => "Spanish, Spain",
"es-MX" => "Spanish, Mexico",
"es-US" => "Spanish, US",
"fr-CA" => "French, Canada",
"fr-FR" => "French, France",
"is-IS" => "Icelandic, Iceland",
"it-IT" => "Italian, Italy",
"ja-JP" => "Japanese, Japan",
"ko-KR" => "Korean, Korea",
"nl-NL" => "Dutch, Netherlands",
"pl-PL" => "Polish, Poland",
"pt-BR" => "Portuguese, Brazil",
"ro-RO" => "Romanian, Romania",
"ru-RU" => "Russian, Russia",
"zh-CN" => "Chinese (Mandarin",
"da-DK" => "Danish, Denmark",
"en-IN" => "English, Indian",
"cy-GB" => "Welsh, Wales",
"nb-NO" => "Norwegian, Norway",
"pt-PT" => "Portuguese, Portugal",
"sv-SE" => "Swedish, Sweden",
"tr-TR" => "Turkish, Turkey",
"el-GR" => "Greek, Greece",
"zh-HK" => "Chinese, Hong",
"id-ID" => "Indonesian, Indonesia",
"vi-VN" => "Vietnamese, Vietnam",
"th-TH" => "Thai, Thailand",
"ta-IN" => "Tamil, India",
"ms-MY" => "Malay, Malaysia",
];
}
public static function greetingMessage()
{
/* This sets the $time variable to the current hour in the 24-hour clock format */
$time = date("H");
/* If the time is less than 1200 hours, show good morning */
if ($time < "12") {
return __('locale.labels.greeting_message', [
'time' => __('locale.labels.good_morning'),
'name' => auth()->user()->displayName(),
]);
} elseif ($time >= "12" && $time < "17") {
return __('locale.labels.greeting_message', [
'time' => __('locale.labels.good_afternoon'),
'name' => auth()->user()->displayName(),
]);
} elseif ($time >= "17" && $time < "19") {
return __('locale.labels.greeting_message', [
'time' => __('locale.labels.good_evening'),
'name' => auth()->user()->displayName(),
]);
} else {
return __('locale.labels.greeting_message', [
'time' => __('locale.labels.good_night'),
'name' => auth()->user()->displayName(),
]);
}
}
public static function contactName($number)
{
$contact = Contacts::where('phone', $number)->first();
if ($contact && $contact->first_name != null) {
return $contact->first_name.' '.$contact->last_name;
}
return $number;
}
/**
* @param array $items
*
* @return int|string|null
*/
public static function randProb(array $items): int|string|null
{
$totalProbability = 0; // This is defined to keep track of the total amount of entries
foreach ($items as $probability) {
$totalProbability += $probability;
}
$stopAt = rand(0, $totalProbability); // This picks a random entry to select
$currentProbability = 0; // The current entry count, when this reaches $stopAt the winner is chosen
foreach ($items as $item => $probability) { // Go through each possible item
$currentProbability += $probability; // Add the probability to our $currentProbability tracker
if ($currentProbability >= $stopAt) { // When we reach the $stopAt variable, we have found our winner
return $item;
}
}
return null;
}
}