MERGE_TEST_API_RATE_LIMIT_&OT_ISSUES

This commit is contained in:
Ubuntu 2026-02-23 18:59:34 +05:30
commit e2662624e7
62 changed files with 1183 additions and 300 deletions

View File

@ -20,6 +20,8 @@ use App\Filters\GlobalPostFileUploadGuard;
use App\Filters\SecurityInputFilter;
use App\Filters\AclFilter;
use App\Filters\RateLimitFilter;
use App\Filters\JwtApiRateLimitFilter;
use App\Filters\AuthApiRateLimitFilter;
@ -49,6 +51,8 @@ class Filters extends BaseConfig
'SecurityInputFilter' => SecurityInputFilter::class,
'AclFilter' => AclFilter::class,
'ratelimit' => RateLimitFilter::class,
'AuthApiRateLimitFilter' => AuthApiRateLimitFilter::class,
'JwtApiRateLimitFilter' => JwtApiRateLimitFilter::class,
];
@ -62,7 +66,7 @@ class Filters extends BaseConfig
public array $globals = [
'before' => [
'HttpRequestLog' => ['except' => 'cli/*'],
'AclFilter' => ['except' => ['login', 'logout', 'auth/*', 'oauth2callback','claim-form-download', 'claims-feedback-form', 'autobookstackLogin','/employeeRest/*','processjob']],
'AclFilter' => ['except' => ['login', 'logout', 'auth/*', 'oauth2callback','claim-form-download', 'claims-feedback-form', 'autobookstackLogin','/employeeRest/*','processjob', 'getPreEmployeePolicyCount']],
'Cors',
'SecurityInputFilter' => ['except' => ['/client/notification/create','test_mail'] ],
'GlobalPostFileUploadGuard',

View File

@ -0,0 +1,89 @@
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class RateLimiter extends BaseConfig
{
/*
|--------------------------------------------------------------------------
| JWT / Authenticated API Routes
|--------------------------------------------------------------------------
*/
public array $jwtApi = [
'limit' => 60, // max requests
'window' => 60, // window in seconds
'violation_soft' => 3, // violations before soft block
];
/*
|--------------------------------------------------------------------------
| Auth API Routes (verifyMobile, verifyOTP, etc.)
|--------------------------------------------------------------------------
*/
public array $authApi = [
'limit' => 10, // max requests per window
'window' => 180, // window in seconds (3 min)
'violation_soft' => 3, // failed attempts before soft block
];
/*
|--------------------------------------------------------------------------
| User-Level Progressive Block Durations (seconds)
| 0 = permanent until manual unblock
|--------------------------------------------------------------------------
*/
public array $userBlock = [
'soft_duration' => 0, // permanent, manual unblock only
'medium_duration' => 7200, // 2 hours
'hard_duration' => 86400, // 24 hours
// attempts while at a block level before escalating to next
'medium_trigger' => 1, // attempts during soft → medium
'hard_trigger' => 1, // attempts during medium → hard
];
/*
|--------------------------------------------------------------------------
| IP-Level Throttle & Progressive Block (independent of user)
|--------------------------------------------------------------------------
*/
public array $ipBlock = [
'limit' => 120, // max requests per window
'window' => 60, // window in seconds
'violation_soft' => 5, // violations before soft block
'soft_duration' => 0, // permanent, manual unblock only
'medium_duration' => 7200, // 2 hours
'hard_duration' => 86400, // 24 hours
'medium_trigger' => 1, // attempts during soft → medium
'hard_trigger' => 1, // attempts during medium → hard
];
/*
|--------------------------------------------------------------------------
| Cache Key Prefixes
|--------------------------------------------------------------------------
*/
public array $cacheKeys = [
'ip_count' => 'rl_ip_count_',
'ip_violations' => 'rl_ip_viol_',
'ip_block' => 'rl_ip_block_',
'ip_block_hits' => 'rl_ip_blkhit_',
'user_count' => 'rl_usr_count_',
'user_violations' => 'rl_usr_viol_',
'user_block' => 'rl_usr_block_',
'user_block_hits' => 'rl_usr_blkhit_',
];
/*
|--------------------------------------------------------------------------
| HTTP Status Codes per block level
|--------------------------------------------------------------------------
*/
public array $statusCodes = [
'throttle' => 429,
'soft' => 429,
'medium' => 403,
'hard' => 451,
];
}

View File

@ -454,7 +454,7 @@ $routes->group("/api", ["filter" => [ 'ratelimit' , 'authJWT' ] ], function ($r
// $routes->post("employeeRest/createOrUpdateEmployeePolicySiAmount", "EmployeeRestController::createOrUpdateEmployeePolicySiAmount");
// $routes->post("employeeRest/calculatePremium", "EmployeeRestController::calculatePremium");
// $routes->post("updateMpin", "RestAuthenticationController::updateMpin");
$routes->group("employeeRest", ['filter' => [ 'GlobalPostFileUploadGuard', 'ratelimit' , 'appSignature' , 'authJWT' ] ], function ($routes) {
$routes->group("employeeRest", ['filter' => [ 'GlobalPostFileUploadGuard', 'appSignature' , 'authJWT','JwtApiRateLimitFilter' ] ], function ($routes) {
$routes->post('logout', 'RestAuthenticationController::logout');
@ -507,7 +507,7 @@ $routes->group("employeeRest", ['filter' => [ 'GlobalPostFileUploadGuard', 'rate
});
$routes->group("employeeRest", ['filter' => ['ratelimit' , 'appSignature'] ], function ($routes) {
$routes->group("employeeRest", ['filter' => ['appSignature','AuthApiRateLimitFilter'] ], function ($routes) {
//Employee login api's
$routes->post("verifyEmployeeNumber", "RestAuthenticationController::verifyEmployeeWithMobileNumber");

View File

@ -8,6 +8,7 @@ use App\Libraries\MyLogger;
use App\Libraries\GmailAPI;
use App\Libraries\MyGoogleDrive;
use App\Libraries\DataServiceSqlite;
use App\Libraries\RateLimiterService;
use App\Controllers\Home;
/**
@ -80,5 +81,14 @@ class Services extends BaseService
return new MyGoogleDrive();
}
public static function limiter($getShared = true)
{
if ($getShared) {
return static::getSharedInstance('limiter');
}
return new RateLimiterService();
}
}

View File

@ -410,9 +410,9 @@ class EmployeeController extends AdminController
//endof validation process
if (isset($result['error_summary']) && count($result['error_summary'])) {
if(!$is_post_request){
return ['status' => false, 'message' => 'file rejected with errors', 'file_id' => $file_id];
return ['status' => false, 'message' => 'File rejected with errors', 'file_id' => $file_id];
}else{
return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'file rejected with errors'], 200);
return $this->respond(['dataStatus' => false, 'code' => 404, 'message' => 'File rejected with errors'], 200);
}
}
} else //if file size greater than 1 add the file as job

View File

@ -141,7 +141,7 @@ class EmployeeRestController extends AdminController
return $this->respond(['status' => 'success','code' => 200,'data' => $result, 'AccountManagerDetails'=> isset($AccountManagerDetails[0]) ? $AccountManagerDetails[0] : null ],200);
} else {
$result = "No Match's";
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],404);
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
}
} catch (\Throwable $th) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
@ -162,7 +162,7 @@ class EmployeeRestController extends AdminController
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
} else {
$result = "No Match's";
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],404);
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
}
}
} catch (\Throwable $th) {
@ -190,7 +190,7 @@ class EmployeeRestController extends AdminController
} else {
return $this->respond(['status' => 'failed','code' => 404,'data' => []],404);
return $this->respond(['status' => 'failed','code' => 404,'data' => []],200);
}
} catch (\Throwable $th) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
@ -220,7 +220,7 @@ class EmployeeRestController extends AdminController
return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
} else {
$result = "No Matches";
return $this->respond(['status' => 'failed','code' => 404,'data' => $result], 404);
return $this->respond(['status' => 'failed','code' => 404,'data' => $result], 200);
}
}
} catch (\Exception $e) {
@ -584,7 +584,7 @@ class EmployeeRestController extends AdminController
return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200);
}else{
return $this->respond(['status' => 'failed','code' => 404,'data' => [] ], 404);
return $this->respond(['status' => 'failed','code' => 404,'data' => [] ], 200);
}
@ -615,7 +615,7 @@ class EmployeeRestController extends AdminController
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id, $requestData[0]->emp_code);
}
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 404); }
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 200); }
foreach ($requestData as $key => $value)
{
@ -692,7 +692,7 @@ class EmployeeRestController extends AdminController
if ($empData) {
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $empData], 200);
} else {
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
}
@ -805,7 +805,7 @@ class EmployeeRestController extends AdminController
if ($ClientPolicyData) {
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
} else {
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
}
@ -1211,7 +1211,7 @@ class EmployeeRestController extends AdminController
$this->fileModel->where('id', $file_id)->set(['status' => 'success','reason' => '','error_data' => ''])->update();
return $this->respond(['status' => 'success', 'code' => 200, 'message' => "Success" ], 200);
}else{
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!" ], 404);
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!" ], 200);
}
} catch (\Throwable $th) {
$this->myLogger->logme("error", ($th->getMessage().' --- '.$th->getLine() . '----' . $th->getTraceAsString()));
@ -2168,10 +2168,10 @@ class EmployeeRestController extends AdminController
// return $restAuthController->callThirdPartyGETAPI($queryParams, 'getClientDetails');
// } else {
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
// }
// } else {
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
// }
// } catch (\Exception $e) {
// return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
@ -2189,15 +2189,19 @@ class EmployeeRestController extends AdminController
if (!empty($pre_client_id)) {
if (is_string($pre_client_id) && preg_match('/^[a-f0-9]{32}$/i', $pre_client_id)) {
$client = $this->clientModel->where('MD5(id)', $pre_client_id)->first();
}else{
$client = $this->clientModel->where('id', $pre_client_id)->first();
}
$client = $this->clientModel->where('md5(id)', $pre_client_id)->first();
if ($client) {
$client['client_logo'] = base_url() . 'public/uploads/logo/' . $client['client_logo'];
$clientPolicy = $this->clientPolicyModel
->where('md5(client_id)', $pre_client_id)
->where('client_id', $client['id'] ?? null)
->where('client_branch_id', $pre_branch_id)
->findAll();
@ -2213,7 +2217,7 @@ class EmployeeRestController extends AdminController
], 200);
} else {
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
}
} elseif (!empty($post_client_id)) {
@ -2227,7 +2231,7 @@ class EmployeeRestController extends AdminController
} else {
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
}
} catch (\Exception $e) {
@ -3095,7 +3099,7 @@ class EmployeeRestController extends AdminController
return $employee_data_group_by_family;
}else{
// dd ($employee_data_group_by_family);
return $this->respond(['status' => 'success','code' => (count($employee_data_group_by_family) ? 200 : 404),'data' => [$employee_data_group_by_family] ], 200);
return $this->respond(['status' => 'success','code' => (count($employee_data_group_by_family) ? 200 : 200),'data' => [$employee_data_group_by_family] ], 200);
}
}
@ -3121,7 +3125,7 @@ class EmployeeRestController extends AdminController
}
if(count($policyId) == 0){
return $this->respond(['status' => 'failed','code' => (count($policyId) ? 200 : 404),'data' => [] ], 200);
return $this->respond(['status' => 'failed','code' => (count($policyId) ? 200 : 200),'data' => [] ], 200);
}
@ -3169,9 +3173,9 @@ class EmployeeRestController extends AdminController
if($result)
{
return $this->respond(['status' => 'success','code' => (count($result) ? 200 : 404),'data' => $result ], 200);
return $this->respond(['status' => 'success','code' => (count($result) ? 200 : 200),'data' => $result ], 200);
}else{
return $this->respond(['status' => 'failed','code' => (count($result) ? 200 : 404),'data' => [] ], 200);
return $this->respond(['status' => 'failed','code' => (count($result) ? 200 : 200),'data' => [] ], 200);
}
}
@ -3572,7 +3576,7 @@ class EmployeeRestController extends AdminController
} else {
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],404);
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],200);
}
} catch (\Throwable $th) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
@ -3596,7 +3600,7 @@ class EmployeeRestController extends AdminController
} else {
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],404);
return $this->respond(['status' => 'failed','code' => 404,'data' => 'No Data'],200);
}
} catch (\Throwable $th) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
@ -3657,7 +3661,7 @@ class EmployeeRestController extends AdminController
return $this->respond(['status' => 'failed', 'code' => 400, 'message' => 'Firebase Token is required'], 400);
}
} else {
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => 'Employee not found'], 404);
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => 'Employee not found'], 200);
}
} catch (\Throwable $th) {
log_message('error', 'An error occurred: ' . $th->getMessage());

View File

@ -156,6 +156,7 @@ class MasterController extends AdminController
$this->myLogger->logme('error','Edit Insurer Onboarding function called');
$headerData['page_name'] = 'Edit Insurer Master';
print_r($headerData);die;
$types = array(
(object) array('id' => 'pvt', 'name' => 'PVT'),

View File

@ -142,6 +142,7 @@ class RestAuthenticationController extends AdminController
log_message('error', ' ');
log_message('error', '************************ PRE END ********************************');
$result = ['user_verification' => false , 'message' => "User not found"];
recordRateLimitFailure();
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
}
@ -320,6 +321,7 @@ class RestAuthenticationController extends AdminController
}
$result = ['user_verification' => false , 'message' => "User not found"];
recordRateLimitFailure();
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
}
@ -445,10 +447,12 @@ class RestAuthenticationController extends AdminController
$otp = isset($this->request->getJSON()->otp) ? $this->request->getJSON()->otp : null;
if(empty($otp)){
recordRateLimitFailure();
return $this->respond(['status' => 'OTP is required','code' => 400,'message' => 'OTP is required'], 200);
}
if (empty($mobile_number) && empty($email_id)) {
recordRateLimitFailure();
return $this->respond(['status' => 'failed','code' => 400,'message' => 'Mobile number or Email ID is required'], 200);
}
@ -472,9 +476,11 @@ class RestAuthenticationController extends AdminController
// Call the third-party API function
$apiResponse = $this->callThirdPartyAPI($retailApiParams, 'getVerifiedRetailUserData');
// print_r($apiResponse); die;
recordRateLimitFailure();
return $this->respond(['status' => 'failed', 'code' => 200, 'data' => [], 'post_enrollment' => json_decode($apiResponse, true)], 200);
}
recordRateLimitFailure();
return $this->respond(['status' => 'Invalid OTP','code' => 404,'data' => "", 'message' => "Invalid OTP"],200);
}

View File

@ -0,0 +1,131 @@
<?php
namespace App\Filters;
use App\Libraries\RateLimiterService;
use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
/**
* AuthApiFilter
*
* Applied to API routes that do NOT use JWT e.g. verifyMobileNumber, verifyOTP.
* Identity is extracted from request params: 'email' or 'mobile_number'.
*
* Performs:
* - IP-level throttle + progressive block check (via fingerprint)
* - User-level block check (if identity present in params)
*
* Usage in Routes.php:
* $routes->post('api/auth/verify-otp', 'AuthController::verifyOtp', ['filter' => 'authApiRateLimit']);
*
* Register in app/Config/Filters.php:
* 'AuthApiRateLimitFilter' => \App\Filters\AuthApiRateLimitFilter::class
*/
class AuthApiRateLimitFilter implements FilterInterface
{
protected RateLimiterService $limiter;
public function __construct()
{
$this->limiter = new RateLimiterService();
}
// -------------------------------------------------------------------------
// BEFORE — runs before the controller
// -------------------------------------------------------------------------
public function before(RequestInterface $request, $arguments = null)
{
// $this->limiter->unblockUser('9698262411');die;
$fingerprint = generateFingerprint(exclude_ua: true);
// echo $fingerprint;die;
// 1. IP-level check
$ipResult = $this->limiter->checkIp($fingerprint, 'authApi');
if ($ipResult) {
return $this->jsonResponse($ipResult);
}
// 2. User-level block check (identity may not be present yet on first hit)
$identity = resolveIdentity($request);
// echo $identity;die;
if ($identity) {
$userResult = $this->limiter->checkUser($identity);
if ($userResult) {
return $this->jsonResponse($userResult);
}
}
// Store resolved identity in request for use in after()
if ($identity) {
$request->setGlobal('rateLimitIdentity', $identity);
}
$request->setGlobal('rateLimitFingerprint', $fingerprint);
return null; // pass through
}
// -------------------------------------------------------------------------
// AFTER — runs after the controller; records failures on bad responses
// -------------------------------------------------------------------------
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// Routes where rate-limit failure should be recorded
// $allowedRoutes = [
// 'employeeRest/verifyEmployeeNumber',
// 'employeeRest/getVerifiedUserData',
// 'employeeRest/verifyEmployeeEmailId',
// 'employeeRest/verifyHrWithMobileNumber',
// 'employeeRest/verifyHrWithEmail',
// 'employeeRest/verifyHrWithEmail',
// 'employeeRest/getVerifiedHrData',
// ];
// $currentPath = service('request')->getPath();
// if (!in_array($currentPath, $allowedRoutes)) {
// return; // Don't record failures for unrelated routes
// }
// Only act on failed responses (4xx from auth failures)
$statusCode = $response->getStatusCode();
// print_r($response);die();
if ($statusCode < 400 || $statusCode === 429 || $statusCode === 403 || $statusCode === 451) {
return; // 2xx/3xx = success; 429/403/451 already handled
}
$fingerprint = $request->getVar('rateLimitFingerprint') ?? generateFingerprint(exclude_ua: true);
$identity = $request->getVar('rateLimitIdentity')
?? resolveIdentity($request);
// Record failure at IP level
$this->limiter->recordIpFailure($fingerprint);
// Record failure at user level
if ($identity) {
$this->limiter->recordUserFailure($identity, 'authApi');
}
}
/**
* Build and return a JSON response for blocked/throttled requests.
*/
protected function jsonResponse(array $result): ResponseInterface
{
$response = service('response');
$response->setStatusCode($result['status']);
$response->setContentType('application/json');
$response->setBody(json_encode([
'success' => false,
'error' => [
'code' => strtoupper('RATE_LIMIT_' . $result['level']),
'message' => $result['message'],
'type' => $result['type'] ?? 'request',
],
]));
return $response;
}
}

View File

@ -0,0 +1,154 @@
<?php
namespace App\Filters;
use App\Libraries\RateLimiterService;
use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
/**
* JwtApiFilter
*
* Applied to API routes that require a valid JWT token.
* Identity (email or mobile) is extracted from the JWT payload using
* your existing helper functions: getEmailFromJWT() / getMobileFromJWT().
*
* Performs:
* - IP-level throttle + progressive block check (via fingerprint)
* - User-level throttle + progressive block check (by JWT identity)
*
* Usage in Routes.php:
* $routes->get('api/profile', 'ProfileController::index', ['filter' => 'jwtApiRateLimit']);
*
* Register in app/Config/Filters.php:
* 'JwtApiRateLimitFilter' => \App\Filters\JwtApiRateLimitFilter::class
*/
class JwtApiRateLimitFilter implements FilterInterface
{
protected RateLimiterService $limiter;
public function __construct()
{
$this->limiter = new RateLimiterService();
}
// -------------------------------------------------------------------------
// BEFORE — runs before the controller
// -------------------------------------------------------------------------
public function before(RequestInterface $request, $arguments = null)
{
$fingerprint = generateFingerprint(exclude_ua: true);
// echo $fingerprint;die;
// 1. IP-level throttle + block check
$ipResult = $this->limiter->checkIp($fingerprint, 'jwtApi');
if ($ipResult) {
return $this->jsonResponse($ipResult);
}
// 2. Resolve user identity from JWT
// Uses your existing JWT helper functions.
// If neither returns a value, fall back to IP-only limiting.
// $identity = $this->resolveIdentityFromJwt();
$identity = '';
if ($identity) {
// User-level throttle (request count based for JWT routes)
$userResult = $this->limiter->checkUserThrottle($identity, 'jwtApi');
if ($userResult) {
return $this->jsonResponse($userResult);
}
}
// Stash for after() use
$request->setGlobal('rateLimitFingerprint', $fingerprint);
if ($identity) {
$request->setGlobal('rateLimitIdentity', $identity);
}
return null; // pass through
}
// -------------------------------------------------------------------------
// AFTER — records IP failure on controller-level bad responses
// -------------------------------------------------------------------------
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
$statusCode = $response->getStatusCode();
// Only act on auth-related failures from the controller (401, 422, etc.)
// 429/403/451 are already handled by before(); skip 2xx/3xx.
if ($statusCode < 400 || in_array($statusCode, [429, 403, 451])) {
return;
}
$fingerprint = $request->getGlobal('rateLimitFingerprint') ?? generateFingerprint(exclude_ua: true);
// $identity = $request->getGlobal('rateLimitIdentity') ?? $this->resolveIdentityFromJwt();
$identity = $request->getGlobal('rateLimitIdentity') ?? '';
$this->limiter->recordIpFailure($fingerprint);
if ($identity) {
$this->limiter->recordUserFailure($identity, 'jwtApi');
}
}
// -------------------------------------------------------------------------
// HELPERS
// -------------------------------------------------------------------------
/**
* Resolve user identity from JWT using your existing helper functions.
* Tries email first, then mobile. Returns null if JWT is absent/invalid.
*
* IMPORTANT: Replace getEmailFromJWT() / getMobileFromJWT() with your
* actual function names if they differ.
*/
protected function resolveIdentityFromJwt(): ?string
{
try {
// Try email from JWT
if (function_exists('getEmailFromJWT')) {
$email = getEmailFromJWT();
if ($email) {
return strtolower(trim($email));
}
}
// Try mobile from JWT
if (function_exists('getMobileFromJWT')) {
$mobile = getMobileFromJWT();
if ($mobile) {
return trim($mobile);
}
}
} catch (\Throwable $e) {
// JWT invalid or expired — fall through to IP-only limiting
log_message('debug', '[RateLimiter] JWT identity resolution failed: ' . $e->getMessage());
}
return null;
}
/**
* Build and return a JSON response for blocked/throttled requests.
*/
protected function jsonResponse(array $result): ResponseInterface
{
$response = service('response');
$response->setStatusCode($result['status']);
$response->setContentType('application/json');
$response->setBody(json_encode([
'success' => false,
'error' => [
'code' => strtoupper('RATE_LIMIT_' . $result['level']),
'message' => $result['message'],
'type' => $result['type'] ?? 'request',
],
]));
return $response;
}
}

View File

@ -43,12 +43,16 @@ class EmployeeHelper
if($is_addon_value == 1){ $is_addon_value = 0 ; }else{ $is_addon_value = 1 ; }
$employeeData = $this->employeeModel->where('emp_code',$data[0]->emp_code)
->where('client_id',$data[0]->client_id)
->where('client_branch_id',$data[0]->client_branch_id)
->where('is_active', 1 )
->where('is_addon_value',$is_addon_value)
->findAll();
$employeeData = $this->employeeModel
->join('employee_polices', 'employees.id = employee_polices.employee_id')
->where('employees.emp_code',$data[0]->emp_code)
->where('employees.client_id',$data[0]->client_id)
->where('employees.client_branch_id',$data[0]->client_branch_id)
->where('employees.is_active', 1 )
->where('employee_polices.client_policy_id', $client_policy_id)
->where('employee_polices.is_active', 1)
->where('is_addon_value',$is_addon_value)
->findAll();
$array = $array[0];

View File

@ -15,6 +15,7 @@ class HttpRequestHelper
$data = [
'ip' => $request->getIPAddress(),
'real_ip' => getRealClientIP(),
'platform' => $platform,
'browser' => $browser,
'method' => strtoupper($request->getMethod()),

View File

@ -773,19 +773,110 @@ function getRealClientIP()
return $request->getIPAddress();
}
function generateFingerprint()
function generateFingerprint(bool $exclude_ua = false): string
{
$request = service('request');
$ua = $request->getUserAgent()->getAgentString();
// echo $ua;
// die;
$ip = getRealClientIP();
// echo $ip;die();
// Use only subnet (first 3 blocks) to tolerate IP change
$ipParts = explode('.', $ip);
$ipSubnet = $ipParts[0] . '.' . $ipParts[1] . '.' . $ipParts[2];
// $secret = env('app.sessionFingerprintSalt');
// Normalize localhost
if ($ip === '127.0.0.1' || $ip === '::1') {
$ipGroup = 'localhost';
}
// IPv4 handling
elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$parts = explode('.', $ip);
// Use /24 subnet (first 3 octets)
$ipGroup = $parts[0] . '.' . $parts[1] . '.' . $parts[2];
}
// IPv6 handling
elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
// Use first 4 blocks of IPv6 (rough /64 grouping)
$blocks = explode(':', $ip);
$ipGroup = implode(':', array_slice($blocks, 0, 4));
}
// Fallback
else {
$ipGroup = 'unknown';
}
// return hash('sha256', $ua . '|' . $ipSubnet . '|' . $secret);
return hash('sha256', $ua . '|' . $ipSubnet );
}
// return $ua . '_' . $ipGroup;
if($exclude_ua){
return hash('sha256', $ipGroup);
}
return hash('sha256', $ua . '|' . $ipGroup);
}
/**
* Extract identity from POST body or GET params.
* Looks for 'email' or 'mobile_number'.
*/
function resolveIdentity($request): ?string
{
// Try POST body first
$email = $request->getPost('email');
// print_r($email);die;
$mobile = $request->getPost('mobile_number');
// Fallback to GET params
if (! $email && ! $mobile) {
$email = $request->getGet('email');
$mobile = $request->getGet('mobile_number');
}
// Fallback to JSON params
if (! $email && ! $mobile) {
$req_data = $request->getJSON();
// print_r( $req_data);
$mobile = $req_data->mobile_number ?? null;
// return trim($mobile_number);
$email = $req_data->email ?? null;
if (!$email)
{
$email = $req_data->email_id ?? null;
}
// return trim($email);
}
if ($email) {
return strtolower(trim($email));
}
if ($mobile) {
return trim($mobile);
}
return null;
}
function recordRateLimitFailure(string $context = 'authApi'): void
{
/** @var IncomingRequest $request */
$request = \Config\Services::request();
$limiter = \Config\Services::limiter(); // or your custom limiter service
$fingerprint = $request->getVar('rateLimitFingerprint')
?? generateFingerprint(exclude_ua: true);
$identity = $request->getVar('rateLimitIdentity')
?? resolveIdentity($request);
// Record IP-level failure
$limiter->recordIpFailure($fingerprint);
// Record user-level failure
if (!empty($identity)) {
$limiter->recordUserFailure($identity, $context);
}
}

View File

@ -0,0 +1,386 @@
<?php
namespace App\Libraries;
use Config\RateLimiter as RateLimiterConfig;
use CodeIgniter\Cache\CacheInterface;
/**
* RateLimiterService
*
* Handles all rate limiting logic:
* - IP-level throttle + progressive blocking (soft/medium/hard)
* - User-level progressive blocking (soft/medium/hard) by email or mobile_number
* - Manual block / unblock helpers callable from anywhere
*
* Block levels: 'soft' | 'medium' | 'hard'
* All blocks are MANUAL UNBLOCK ONLY (no auto-expiry on block state).
* Counters and violation counts use cache TTLs; block records do not expire.
*/
class RateLimiterService
{
protected RateLimiterConfig $config;
protected CacheInterface $cache;
public function __construct()
{
$this->config = config('RateLimiter');
$this->cache = \Config\Services::cache();
}
// =========================================================================
// PUBLIC — IP LEVEL
// =========================================================================
/**
* Check & throttle by fingerprint (IP+UA based).
* Returns null on pass, or an array ['level'=>..., 'message'=>...] on block.
*/
public function checkIp(string $fingerprint, string $routeType = 'jwtApi'): ?array
{
// echo $fingerprint;die;
// 1. Is the IP already blocked?
$blockInfo = $this->getIpBlock($fingerprint);
// print_rr($blockInfo);die();
if ($blockInfo) {
// Count hit while blocked → maybe escalate
$this->recordIpBlockHit($fingerprint, $blockInfo['level']);
return $this->blockedResponse('ip', $blockInfo['level']);
}
// 2. Throttle check
$cfg = $this->config->ipBlock;
$countKey = $this->config->cacheKeys['ip_count'] . $fingerprint;
$count = (int) ($this->cache->get($countKey) ?? 0);
if ($count === 0) {
$this->cache->save($countKey, 1, $cfg['window']);
} else {
$this->cache->save($countKey, $count + 1, $cfg['window']);
}
if (($count + 1) > $cfg['limit']) {
// Over limit → record violation
$violated = $this->incrementIpViolation($fingerprint);
if ($violated >= $cfg['violation_soft']) {
$this->blockIp($fingerprint, 'soft');
return $this->blockedResponse('ip', 'soft');
}
return [
'level' => 'throttle',
'message' => 'Too many requests. Please slow down.',
'status' => $this->config->statusCodes['throttle'],
];
}
return null;
}
/**
* Record a "bad outcome" for IP (e.g. controller calls this after failed auth).
* Same escalation path as throttle violations.
*/
public function recordIpFailure(string $fingerprint): ?array
{
$blockInfo = $this->getIpBlock($fingerprint);
if ($blockInfo) {
$this->recordIpBlockHit($fingerprint, $blockInfo['level']);
return $this->blockedResponse('ip', $blockInfo['level']);
}
$violated = $this->incrementIpViolation($fingerprint);
$cfg = $this->config->ipBlock;
if ($violated >= $cfg['violation_soft']) {
$this->blockIp($fingerprint, 'soft');
return $this->blockedResponse('ip', 'soft');
}
return null;
}
/**
* Manually block an IP at a given level.
*/
public function blockIp(string $fingerprint, string $level = 'soft'): void
{
$cfg = $this->config->ipBlock;
$blockKey = $this->config->cacheKeys['ip_block'] . $fingerprint;
$duration = $this->blockDuration($cfg, $level);
$data = [
'level' => $level,
'blocked_at' => time(),
'fingerprint'=> $fingerprint,
'ip' => getRealClientIP(),
];
// Duration 0 = store for 10 years (permanent until manual unblock)
$ttl = $duration > 0 ? $duration : (10 * 365 * 24 * 3600);
$this->cache->save($blockKey, $data, $ttl);
}
/**
* Manually unblock an IP. Clears block, violations, and counters.
*/
public function unblockIp(string $fingerprint): void
{
$keys = $this->config->cacheKeys;
$this->cache->delete($keys['ip_block'] . $fingerprint);
$this->cache->delete($keys['ip_violations'] . $fingerprint);
$this->cache->delete($keys['ip_count'] . $fingerprint);
$this->cache->delete($keys['ip_block_hits'] . $fingerprint);
}
/**
* Get current IP block info or null if not blocked.
*/
public function getIpBlock(string $fingerprint): ?array
{
$blockKey = $this->config->cacheKeys['ip_block'] . $fingerprint;
$data = $this->cache->get($blockKey);
return $data ?: null;
}
// =========================================================================
// PUBLIC — USER LEVEL
// =========================================================================
/**
* Check if a user (by email or mobile) is blocked.
* Returns null on pass, or block response array on block.
*/
public function checkUser(string $identity): ?array
{
$blockInfo = $this->getUserBlock($identity);
if ($blockInfo) {
$this->recordUserBlockHit($identity, $blockInfo['level']);
return $this->blockedResponse('user', $blockInfo['level']);
}
return null;
}
/**
* Record a failed attempt for a user identity.
* Called from controller after() or manually after a failed verification.
* Handles escalation: free soft medium hard
*/
public function recordUserFailure(string $identity, string $routeType = 'authApi'): ?array
{
$blockInfo = $this->getUserBlock($identity);
if ($blockInfo) {
// Already blocked — count hit and maybe escalate
$this->recordUserBlockHit($identity, $blockInfo['level']);
return $this->blockedResponse('user', $blockInfo['level']);
}
// Not blocked yet — increment violation count
$violated = $this->incrementUserViolation($identity, $routeType);
$cfg = $this->config->userBlock;
$routeCfg = $this->config->{$routeType};
if ($violated >= $routeCfg['violation_soft']) {
$this->blockUser($identity, 'soft');
return $this->blockedResponse('user', 'soft');
}
return null;
}
/**
* Manually block a user identity at a given level.
*/
public function blockUser(string $identity, string $level = 'soft'): void
{
$cfg = $this->config->userBlock;
$blockKey = $this->config->cacheKeys['user_block'] . $this->hashIdentity($identity);
$duration = $this->blockDuration($cfg, $level);
$ttl = $duration > 0 ? $duration : (10 * 365 * 24 * 3600);
$data = [
'level' => $level,
'blocked_at' => time(),
'identity' => $identity,
];
$this->cache->save($blockKey, $data, $ttl);
}
/**
* Manually unblock a user identity. Independent does NOT touch IP block.
*/
public function unblockUser(string $identity): void
{
$keys = $this->config->cacheKeys;
$hashed = $this->hashIdentity($identity);
$this->cache->delete($keys['user_block'] . $hashed);
$this->cache->delete($keys['user_violations'] . $hashed);
$this->cache->delete($keys['user_count'] . $hashed);
$this->cache->delete($keys['user_block_hits'] . $hashed);
}
/**
* Get current user block info or null if not blocked.
*/
public function getUserBlock(string $identity): ?array
{
$blockKey = $this->config->cacheKeys['user_block'] . $this->hashIdentity($identity);
$data = $this->cache->get($blockKey);
return $data ?: null;
}
// =========================================================================
// USER THROTTLE (for JWT API routes — request count based)
// =========================================================================
/**
* Throttle check for a known user on JWT routes.
* Increments request counter; if over limit records violation.
*/
public function checkUserThrottle(string $identity, string $routeType = 'jwtApi'): ?array
{
$blockCheck = $this->checkUser($identity);
if ($blockCheck) {
return $blockCheck;
}
$cfg = $this->config->{$routeType};
$hashed = $this->hashIdentity($identity);
$countKey = $this->config->cacheKeys['user_count'] . $hashed;
$count = (int) ($this->cache->get($countKey) ?? 0);
if ($count === 0) {
$this->cache->save($countKey, 1, $cfg['window']);
} else {
$this->cache->save($countKey, $count + 1, $cfg['window']);
}
if (($count + 1) > $cfg['limit']) {
$violated = $this->incrementUserViolation($identity, $routeType);
if ($violated >= $cfg['violation_soft']) {
$this->blockUser($identity, 'soft');
return $this->blockedResponse('user', 'soft');
}
return [
'level' => 'throttle',
'message' => 'Too many requests. Please slow down.',
'status' => $this->config->statusCodes['throttle'],
];
}
return null;
}
// =========================================================================
// PRIVATE HELPERS
// =========================================================================
/**
* Increment IP violation counter and return new count.
*/
protected function incrementIpViolation(string $fingerprint): int
{
$key = $this->config->cacheKeys['ip_violations'] . $fingerprint;
$count = (int) ($this->cache->get($key) ?? 0) + 1;
// Keep violation record for the block window duration
$this->cache->save($key, $count, $this->config->ipBlock['window'] * 10);
return $count;
}
/**
* Record a hit while IP is already blocked; escalate if thresholds met.
*/
protected function recordIpBlockHit(string $fingerprint, string $currentLevel): void
{
$cfg = $this->config->ipBlock;
$hitKey = $this->config->cacheKeys['ip_block_hits'] . $fingerprint;
$hits = (int) ($this->cache->get($hitKey) ?? 0) + 1;
$this->cache->save($hitKey, $hits, 10 * 365 * 24 * 3600);
if ($currentLevel === 'soft' && $hits >= $cfg['medium_trigger']) {
$this->cache->delete($hitKey);
$this->blockIp($fingerprint, 'medium');
} elseif ($currentLevel === 'medium' && $hits >= $cfg['hard_trigger']) {
$this->cache->delete($hitKey);
$this->blockIp($fingerprint, 'hard');
}
}
/**
* Increment user violation counter and return new count.
*/
protected function incrementUserViolation(string $identity, string $routeType): int
{
$hashed = $this->hashIdentity($identity);
$key = $this->config->cacheKeys['user_violations'] . $hashed;
$count = (int) ($this->cache->get($key) ?? 0) + 1;
$window = $this->config->{$routeType}['window'] ?? 180;
$this->cache->save($key, $count, $window * 10);
return $count;
}
/**
* Record a hit while user is already blocked; escalate if thresholds met.
*/
protected function recordUserBlockHit(string $identity, string $currentLevel): void
{
$cfg = $this->config->userBlock;
$hashed = $this->hashIdentity($identity);
$hitKey = $this->config->cacheKeys['user_block_hits'] . $hashed;
$hits = (int) ($this->cache->get($hitKey) ?? 0) + 1;
$this->cache->save($hitKey, $hits, 10 * 365 * 24 * 3600);
if ($currentLevel === 'soft' && $hits >= $cfg['medium_trigger']) {
$this->cache->delete($hitKey);
$this->blockUser($identity, 'medium');
} elseif ($currentLevel === 'medium' && $hits >= $cfg['hard_trigger']) {
$this->cache->delete($hitKey);
$this->blockUser($identity, 'hard');
}
}
/**
* Resolve block duration from config based on level.
*/
protected function blockDuration(array $cfg, string $level): int
{
return match ($level) {
'soft' => $cfg['soft_duration'],
'medium' => $cfg['medium_duration'],
'hard' => $cfg['hard_duration'],
default => 0,
};
}
/**
* Build a standardised blocked response array.
*/
protected function blockedResponse(string $type, string $level): array
{
$messages = [
'soft' => 'Your access has been temporarily suspended. Please contact support.',
'medium' => 'Your access has been restricted due to repeated violations.',
'hard' => 'Your access has been permanently blocked. Please contact support.',
];
return [
'level' => $level,
'type' => $type,
'message' => $messages[$level] ?? 'Access denied.',
'status' => $this->config->statusCodes[$level],
];
}
/**
* Hash user identity (email or mobile) for cache key safety.
*/
protected function hashIdentity(string $identity): string
{
// return strtolower(trim($identity));
return hash('sha256', strtolower(trim($identity)));
}
}

View File

@ -290,7 +290,7 @@ $(document).ready(function () {
var student_id = $(this).attr('data-id');
$.get('<?php echo base_url('user/deactive/');?>'+student_id, function (data) {
console.log(data);
toastr.success('User removed successfully', 'success');
toastr.success('User removed successfully', 'Success');
window.location.reload()
})
}

View File

@ -312,7 +312,7 @@ document.addEventListener("DOMContentLoaded", function () {
<?php endif; ?>
<?php if (session()->has('success')) : ?>
toastr.success('<?= session()->getFlashdata('success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('success') ?>', 'Success');
<?php endif; ?>
var endDatePicker = flatpickr("#opening_date", {
@ -410,7 +410,7 @@ document.addEventListener("DOMContentLoaded", function () {
console.log(res)
if(res.status == true){
toastr.warning(res.message, 'warning');
toastr.warning(res.message, 'Warning');
$('#cd_ac_no').val('');
}
},
@ -446,10 +446,10 @@ document.addEventListener("DOMContentLoaded", function () {
// console.log(res.status == true);
if(res){
if (res.status == true) {
toastr.success('CD removed successfully.', 'success');
toastr.success('CD removed successfully.', 'Success');
location.reload();
} else {
toastr.warning('Failed to remove CD.', 'warning');
toastr.warning('Failed to remove CD.', 'Warning');
}
}
},

View File

@ -609,7 +609,7 @@ $('body').on('click', '.btnBranchEdit', function() {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -811,10 +811,10 @@ function removeClientBranch(element) {
// console.log(res.status == true);
if (res) {
if (res.status == true) {
toastr.success(res.message, 'success');
toastr.success(res.message, 'Success');
location.reload();
} else {
toastr.warning(res.message, 'warning');
toastr.warning(res.message, 'Warning');
}
}
},
@ -824,7 +824,7 @@ function removeClientBranch(element) {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
console.log('Something Wrong!', 'warning');
console.log('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -938,7 +938,7 @@ function validateInput(input, table, field, submitBtnId){
checkDuplicateTableFieldValue(table, field, value, function(isDuplicate) {
if (isDuplicate) {
toastr.warning(message, 'WARNING');
toastr.warning(message, 'Warning');
// $(input).val('')
$('#'+submitBtnId).prop('disabled', true);
} else{
@ -972,7 +972,7 @@ function validateDuplicateByClientBranch(input, field, submitButId) {
if (isLocalDuplicate) {
console.log(`r u n Local`);
console.log(`duplicate found for ${field}`);
toastr.warning(message, 'WARNING');
toastr.warning(message, 'Warning');
$('#' + submitButId).prop('disabled', true);
return;
}
@ -999,7 +999,7 @@ function validateDuplicateByClientBranch(input, field, submitButId) {
if (response.isDuplicate) {
console.log(`r u n Server`);
console.log(`duplicate found for ${field}`);
toastr.warning(message, 'WARNING');
toastr.warning(message, 'Warning');
$('#' + submitButId).prop('disabled', true);
} else {
console.log(`No duplicate for ${field}`);
@ -1044,13 +1044,13 @@ function checkAllFieldsValid(submitButId) {
$('#' + submitButId).prop('disabled', true);
// show correct message based on whats duplicated
if (emailDuplicates && mobileDuplicates) {
toastr.warning("Email and Mobile values are duplicate!", "WARNING");
toastr.warning("Email and Mobile values are duplicate!", "Warning");
console.log('Both Email and Mobile duplicates');
} else if (emailDuplicates) {
toastr.warning("Email duplicate!", "WARNING");
toastr.warning("Email duplicate!", "Warning");
console.log('Cross Check Email duplicates');
} else if (mobileDuplicates) {
toastr.warning("Mobile duplicate!", "WARNING");
toastr.warning("Mobile duplicate!", "Warning");
console.log('Cross Check Mobile duplicates');
}
console.log(`btn Dis - true`);
@ -1096,9 +1096,9 @@ function removeLevelContacts(id){
console.log('Data fetched successfully:', response);
if (response.status == true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
}, function(xhr, status, error) {

View File

@ -212,7 +212,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
@ -333,7 +333,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
@ -438,7 +438,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});

View File

@ -402,7 +402,7 @@
// if(res){
// if (res.status == true) {
// toastr.success('Client removed successfully.', 'success');
// toastr.success('Client removed successfully.', 'Success');
// location.reload();
// } else {
// Swal.fire({
@ -410,7 +410,7 @@
// text: res.message,
// icon: "warning"
// });
// // toastr.warning(res.message, 'warning');
// // toastr.warning(res.message, 'Warning');
// }
// }
// },
@ -419,7 +419,7 @@
// console.error(status, error);
// $('.loader').fadeOut();
// $('.loader-mask').delay(350).fadeOut('slow');
// console.log('Something Wrong!', 'warning');
// console.log('Something Wrong!', 'Warning');
// }
// });
// }
@ -466,15 +466,15 @@
$('.loader-mask').delay(350).fadeOut('slow');
if (res.status == true) {
toastr.success(res.message, 'success');
toastr.success(res.message, 'Success');
location.reload();
} else {
Swal.fire({
title: "warning!",
title: "Warning!",
text: res.message,
icon: "warning"
});
// toastr.warning(res.message, 'warning');
// toastr.warning(res.message, 'Warning');
}
},
error: function (xhr, status, error) {
@ -563,10 +563,10 @@
if(res.status == true){
let client_url = '<?= base_url('client/list/') ?>' + res.client_id + '?client_policy_id=' + res.client_policy_id+'#police-tab';
toastr.success(res.message, 'SUCCESS')
toastr.success(res.message, 'Success')
window.location.href = client_url
}else{
toastr.success(res.message, 'WARNING')
toastr.warning(res.message, 'Warning')
}
$('.close').click()

View File

@ -200,7 +200,7 @@ body {
if(check_client_id[0].value == '' || check_client_id[0].value == null || check_client_id[0].value == 0){
$('#btnBranchAdd').hide();
toastr.warning('Please Add the Client!', 'warning',{timeOut: 2000});
toastr.warning('Please Add the Client!', 'Warning',{timeOut: 2000});
}else{
if ($('#btnBranchBack')[0].style.display == 'none') {
$('#btnBranchAdd').show();
@ -215,7 +215,7 @@ body {
if(check_client_id[0].value == '' || check_client_id[0].value == null || check_client_id[0].value == 0){
$('#relation_form').hide();
toastr.warning('Please Add the Client!', 'warning',{timeOut: 2000});
toastr.warning('Please Add the Client!', 'Warning',{timeOut: 2000});
}else{
$('#relation_form').show();
}
@ -228,7 +228,7 @@ body {
if(check_client_id[0].value == '' || check_client_id[0].value == null || check_client_id[0].value == 0){
$('#BtnAdd').hide();
toastr.warning('Please Add the Client!', 'warning',{timeOut: 2000});
toastr.warning('Please Add the Client!', 'Warning',{timeOut: 2000});
}else{
if ($('#btnPolicyBack')[0].style.display == 'none') {
$('#BtnAdd').show();
@ -243,7 +243,7 @@ body {
if(check_client_id[0].value == '' || check_client_id[0].value == null || check_client_id[0].value == 0){
$('#btnBranchAdd').hide();
toastr.warning('Please Add the Client!', 'warning',{timeOut: 2000});
toastr.warning('Please Add the Client!', 'Warning',{timeOut: 2000});
}else{
if ($('#btnBranchBack')[0].style.display == 'none') {
$('#btnBranchAdd').show();
@ -259,7 +259,7 @@ body {
if(check_client_id[0].value == '' || check_client_id[0].value == null || check_client_id[0].value == 0){
$('#notification-tab').hide();
toastr.warning('Please Add the Client!', 'warning',{timeOut: 2000});
toastr.warning('Please Add the Client!', 'Warning',{timeOut: 2000});
}else{
if ($('#notification-tab')[0].style.display == 'none') {
$('#notification-tab').show();

View File

@ -59,9 +59,9 @@ $(document).ready(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
if (res.status == true) {
toastr.success(res.message, 'SUCCESS');
toastr.success(res.message, 'Success');
} else {
toastr.warning(res.message, 'WARNING');
toastr.warning(res.message, 'Warning');
}
},

View File

@ -332,7 +332,7 @@ input:checked + .slider:before {
</div> -->
<div class="form-group col-md-12">
<label for="disclaimer">Disclaimer<span class="text-danger">*</span></label>
<label for="disclaimer">Disclaimer<span class="text-danger"></span></label>
<textarea class="form-control" placeholder="Enter Disclaimer" name="disclaimer"
id="disclaimer"></textarea>
</div>
@ -1686,7 +1686,7 @@ $('#policy_type').change(function() {
}
if ($(this).val() == 5) {
toastr.warning('Please Change the Policy Terms after Submit the Policy!', 'INFO');
toastr.warning('Please Change the Policy Terms after Submit the Policy!', 'Info');
}
if ($(this).val() == '4' || $(this).val() == '5') {
@ -1891,7 +1891,7 @@ function fetchClientBranch() {
// //console.log(res.data.length);
if (res.data.length == 0) {
toastr.warning('The client does not have any branches.', 'warning');
toastr.warning('The client does not have any branches.', 'Warning');
return;
}
@ -2018,15 +2018,15 @@ function removepolicy(element) {
if (res) {
if (res.status == true) {
toastr.success('Policy removed successfully.', 'success');
toastr.success('Policy removed successfully.', 'Success');
location.reload();
} else {
Swal.fire({
title: "warning!",
title: "Warning!",
text: res.message,
icon: "warning"
});
// toastr.warning('Failed to remove policy', 'warning');
// toastr.warning('Failed to remove policy', 'Warning');
}
}
},
@ -2060,7 +2060,7 @@ $('#policy_no').change(function() {
console.log(res)
if (res.status == true) {
toastr.warning(res.message, 'warning');
toastr.warning(res.message, 'Warning');
$('#policy_no').val('');
}
},
@ -2331,10 +2331,10 @@ function featchClient() {
if (res.status == true) {
let client_url = '<?= base_url('client/list/') ?>' + res.client_id + '?client_policy_id=' +
res.client_policy_id + '#police-tab';
toastr.success(res.message, 'SUCCESS')
toastr.success(res.message, 'Success')
window.location.href = client_url;
} else {
toastr.success(res.message, 'WARNING');
toastr.warning(res.message, 'Warning');
}
$('.close').click()

View File

@ -536,7 +536,7 @@ function get_emp_master_data_for_update_ajax(id) {
$('#gender').prop('disabled', false);
$('#dob').prop('disabled', false);
toastr.warning(res.message, 'WARNING');
toastr.warning(res.message, 'Warning');
}
},
error: function(xhr, status, error) {
@ -583,7 +583,7 @@ function update_emp_master_data_submit_function(event, form) {
$('.loader-mask').delay(350).fadeOut('slow');
if (response.status == true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
$('.close').click();
@ -599,7 +599,7 @@ function update_emp_master_data_submit_function(event, form) {
fetchEmpolyeeList();
} else {
toastr.error(response.message, 'ERROR');
toastr.error(response.message, 'Error');
}
},
error: function(xhr, status, error) {
@ -616,7 +616,7 @@ function update_emp_master_data_submit_function(event, form) {
console.error('Response Text: ', xhr.responseText);
}
toastr.warning('Error uploading file', 'WARNING');
toastr.warning('Error uploading file', 'Warning');
console.error('Upload error:', error);
},
complete: function() {
@ -657,9 +657,9 @@ function send_mail_for_individual_employee_ecard(id) {
$('.loader-mask').delay(350).fadeOut('slow');
if (res.status == true) {
toastr.success(res.message, 'SUCCESS');
toastr.success(res.message, 'Success');
} else {
toastr.error(res.message, 'ERROR');
toastr.error(res.message, 'Error');
}
},
error: function(xhr, status, error) {
@ -698,7 +698,7 @@ function validateInput(input, table, field) {
checkDuplicateTableFieldValue(table, field, data, function(isDuplicate) {
if (isDuplicate) {
toastr.warning(message, 'WARNING');
toastr.warning(message, 'Warning');
$("#btnSubmit").prop('disabled', true);
}else{
$("#btnSubmit").prop('disabled', false);
@ -800,12 +800,12 @@ function get_emp_history(input, emp_id) {
showModal();
} else {
let message = response.message;
toastr.error(message, 'ERROR');
toastr.error(message, 'Error');
}
}, function(xhr, status, error) {
console.error('Error fetching data:', error);
console.error(xhr.responseText);
toastr.error('An error occurred while fetching the report page.', 'ERROR');
toastr.error('An error occurred while fetching the report page.', 'Error');
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
@ -844,7 +844,7 @@ function downloadInception(){
empName: empName
},
success: function(response) {
if (response.status === 'success') {
if (response.status === 'Success') {
$('<a>', {
href: response.downloadUrl,
download: '',

View File

@ -728,9 +728,9 @@ function sendManualEcard(input)
$('.loader-mask').delay(350).fadeOut('slow');
if(res.status == false){
toastr.info(res.message, 'INFO');
toastr.info(res.message, 'Info');
}else{
toastr.success(res.message, 'SUCCESS');
toastr.success(res.message, 'Success');
}
},

View File

@ -183,7 +183,7 @@ $('#file_upload').hide();
$(document).ready(function() {
<?php if (session()->has('success1')): ?>
toastr.success('<?= session()->getFlashdata('success1') ?>', 'success');
toastr.success('<?= session()->getFlashdata('success1') ?>', 'Success');
<?php endif; ?>
// Initialize select2
$("#client_id").select2();
@ -247,22 +247,22 @@ $(document).ready(function() {
if(checkValues() == 'client'){
toastr.warning('Client is Required', 'warning')
toastr.warning('Client is Required', 'Warning')
return false;
}else if(checkValues() == 'policy'){
toastr.warning('Policy is Required', 'warning')
toastr.warning('Policy is Required', 'Warning')
return false;
}else if(checkValues() == 'branch'){
toastr.warning('Branch is Required', 'warning')
toastr.warning('Branch is Required', 'Warning')
return false;
}else if(checkValues() == 'event'){
toastr.warning('Event is Required', 'warning')
toastr.warning('Event is Required', 'Warning')
return false;
}else{
@ -291,7 +291,7 @@ $(document).ready(function() {
// $('#policy_id').mouseover();
console.log('required');
// alert('please choose policy for this uploaing event ');
toastr.warning('please choose policy for this uploaing event', 'warning')
toastr.warning('please choose policy for this uploaing event', 'Warning')
return false;
} else {
@ -330,7 +330,7 @@ $(document).ready(function() {
.data !== "") {
toastr.success(
'File upload successs, Data validation is in-progress',
'success');
'Success');
window.location.reload(true);
} else if (response.code === 404 && response.dataStatus === false) {
console.error('no data found', response);
@ -850,7 +850,7 @@ $('#fetch_enrolled_data').click(function()
var action = $('#upload-action-type').val();
// console.log(client_id + '-' + policy_id);
if (client_id == '0' || policy_id == '0') {
toastr.warning('please select the client and policy for this uploaing event', 'warning')
toastr.warning('please select the client and policy for this uploaing event', 'Warning')
$('#full-width-modal').modal('hide');
return;
}

View File

@ -811,13 +811,13 @@
$('.loader-mask').delay(350).fadeOut('slow');
if (response.code === 200 && response.dataStatus === true && response.data !== "") {
toastr.success('File upload success, Data validation is in-progress', 'success');
toastr.success('File upload success, Data validation is in-progress', 'Success');
setTimeout(function() {
window.location.href = '<?= base_url("employee/upload/") ?>';
}, 600);
} else if (response.code === 404 && response.dataStatus === false) {
console.error('No data found', response);
toastr.error(response.message, 'error');
toastr.error(response.message, 'Error');
setTimeout(function() {
window.location.href = '<?= base_url("employee/upload/") ?>';
}, 600);
@ -908,9 +908,9 @@
$('.loader-mask').delay(350).fadeOut('slow');
if(res.status == false){
toastr.info(res.message, 'INFO');
toastr.info(res.message, 'Info');
}else{
toastr.success(res.message, 'SUCCESS');
toastr.success(res.message, 'Success');
}
},

View File

@ -89,7 +89,7 @@
echo '<a data-id="' . $file['status'] . '" class="reload" href="#">' . $file['status'] . '</a>';
}
} else if ($file['status'] == 'success') {
} else if ($file['status'] == 'Success') {
if ($file['action'] == 'inception' || $file['action'] == 'addition' || $file['action'] == 'dependent_addtion') {
$tool_tip_text = "Live(s) : {$file['employee_count']}" . " | Total premium : ₹ " . format_indian_number($file['total'], 2, ',');
@ -128,7 +128,7 @@
<a class="dropdown-item" href="<?= base_url("util/download-file-list/") . $file['id']; ?>"><i class="mdi mdi-download mr-2 text-muted font-18 vertical-middle"></i>Download</a>
<a data-id="<?php echo $file['id'] ?>" data-toggle="modal" data-target="#full-width-modal-emp-list" class="dropdown-item view_emp_list" href="#"><i class="mdi mdi-eye mr-2 text-muted font-18 vertical-middle"></i>View</a>
<?php if ($file['status'] == 'success') { ?>
<?php if ($file['status'] == 'Success') { ?>
<a data-id="<?php echo $file['id'] ?>" class="dropdown-item truncate2" href="#"><i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Truncate</a>
<?php } ?>
@ -455,7 +455,7 @@ $('#uploadForm').submit(function() {
.data !== "") {
toastr.success(
'File upload successs, Data validation is in-progress',
'success');
'Success');
$('.close').click()
window.location.reload(true);
} else if (response.code === 404 && response.dataStatus === false) {

View File

@ -292,7 +292,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -358,7 +358,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -515,10 +515,10 @@
// console.log(res.status == true);
if(res){
if (res.status == true) {
toastr.success('Insurer branch removed successfully', 'success');
toastr.success('Insurer branch removed successfully', 'Success');
location.reload();
} else {
toastr.warning('Failed to remove insurer branch', 'warning');
toastr.warning('Failed to remove insurer branch', 'Warning');
}
}
},
@ -527,7 +527,7 @@
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Failed to remove insurer branch', 'warning');
toastr.warning('Failed to remove insurer branch', 'Warning');
}
});

View File

@ -440,9 +440,9 @@
$('.loader-mask').delay(350).fadeOut('slow');
if(res.status == false){
toastr.error(res.message, 'ERROR');
toastr.error(res.message, 'Error');
}else{
toastr.success(res.message, 'SUCCESS');
toastr.success(res.message, 'Success');
}
window.location.reload(true);
@ -677,9 +677,9 @@
$('.loader-mask').delay(350).fadeOut('slow');
if(res.status == false){
toastr.error(res.message, 'ERROR');
toastr.error(res.message, 'Error');
}else{
toastr.success(res.message, 'SUCCESS');
toastr.success(res.message, 'Success');
}
window.location.reload(true);

View File

@ -277,10 +277,10 @@ class csvExport {
// console.log(res.status == true);
if(res){
if (res.status == true) {
toastr.success('Insurer removed successfully', 'success');
toastr.success('Insurer removed successfully', 'Success');
location.reload();
} else {
toastr.warning('Failed to remove insurer', 'warning');
toastr.warning('Failed to remove insurer', 'Warning');
}
}
},
@ -289,7 +289,7 @@ class csvExport {
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Failed to remove insurer', 'warning');
toastr.warning('Failed to remove insurer', 'Warning');
}
});
}

View File

@ -59,7 +59,7 @@
if(check_insurer_id[0].value == '' || check_insurer_id[0].value == null || check_insurer_id[0].value == 0){
$('#btnBranchAdd').hide();
toastr.warning('First Add the Insurer!', 'warning',{timeOut: 2000});
toastr.warning('First Add the Insurer!', 'Warning',{timeOut: 2000});
}else{
if ($('#btnBranchBack')[0].style.display == 'none') {
$('#btnBranchAdd').show();

View File

@ -156,7 +156,7 @@
<?php endif; ?>
<?php if (session()->has('success')) : ?>
toastr.success('<?= session()->getFlashdata('success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('success') ?>', 'Success');
<?php endif; ?>
$('#import_excel_btn').hide();
@ -200,7 +200,7 @@
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
$$("#import_export_excel_form")[0].reset()
toastr.success('File Download successs', 'success');
toastr.success('File Download successs', 'Success');
} else if (response.code === 404 && response.status === false) {

View File

@ -961,7 +961,7 @@ maxDate.setDate(today.getDate() + 180);
.data !== "") {
toastr.success(
'File upload successs',
'success');
'Success');
$('.close').click();
window.location.reload(true);
} else if (response.code === 404 && response.dataStatus === false) {

View File

@ -201,7 +201,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -241,7 +241,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -304,7 +304,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
console.log('Something Wrong!', 'warning'); }, 1000);
console.log('Something Wrong!', 'Warning'); }, 1000);
}
});
}
@ -352,7 +352,7 @@ $(document).ready(function () {
window.location.href = '<?= base_url("master/kyc/list/") ?>' + kyc_docs_id_for_reload;
} else {
toastr.warning('Failed to remove KYC docs', 'warning');
toastr.warning('Failed to remove KYC docs', 'Warning');
}
}
},
@ -361,7 +361,7 @@ $(document).ready(function () {
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Failed to remove KYC docs', 'warning');
toastr.warning('Failed to remove KYC docs', 'Warning');
}
});
}

View File

@ -86,7 +86,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});

View File

@ -271,12 +271,12 @@ function removeKYC(element) {
// console.log(res.status == true);
if(res){
if (res.status == true) {
toastr.success('KYC entity removed successfully', 'success');
toastr.success('KYC entity removed successfully', 'Success');
location.reload();
} else {
toastr.warning('Failed to remove KYC entity', 'warning');
toastr.warning('Failed to remove KYC entity', 'Warning');
}
}
},
@ -286,7 +286,7 @@ function removeKYC(element) {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});

View File

@ -75,7 +75,7 @@ body {
console.log(check_policy_type_id.val());
if(check_policy_type_id[0].value == '' || check_policy_type_id[0].value == null || check_policy_type_id[0].value == 0){
$('#btnBranchAdd').hide();
toastr.warning('First Add the KYC Entity Type!', 'warning',{timeOut: 2000});
toastr.warning('First Add the KYC Entity Type!', 'Warning',{timeOut: 2000});
}else{
if ($('#btnBranchBack')[0].style.display == 'none') {
$('#btnBranchAdd').show();

View File

@ -270,11 +270,11 @@ $(document).ready(function(){
<?php endif; ?>
<?php if (session()->has('create_success')) : ?>
toastr.success('<?= session()->getFlashdata('create_success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('create_success') ?>', 'Success');
<?php endif; ?>
<?php if (session()->has('update_success')) : ?>
toastr.success('<?= session()->getFlashdata('update_success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('update_success') ?>', 'Success');
<?php endif; ?>

View File

@ -814,13 +814,13 @@
console.log('Parsed respond', respond)
if (respond.status == 'success') {
toastr.success(respond.message, 'SUCCESS')
toastr.success(respond.message, 'Success')
} else {
toastr.warning(respond.message, 'WARNING')
toastr.warning(respond.message, 'Warning')
}
} else {
toastr.warning('Failed to sent mail', 'WARNING')
toastr.warning('Failed to sent mail', 'Success')
}
},
error: function(xhr, status, error) {
@ -835,16 +835,16 @@
} else {
let alert_msg = 'Template ID not exist'
toastr.warning(alert_msg, 'WARNING');
toastr.warning(alert_msg, 'Warning');
}
} else {
toastr.warning('Please enter the valid mail', 'WARNING');
toastr.warning('Please enter the valid mail', 'Warning');
}
} else {
toastr.warning('Please enter the valid mail', 'WARNING');
toastr.warning('Please enter the valid mail', 'Warning');
}
}
@ -981,10 +981,10 @@
$('.loader-mask').delay(350).fadeOut('slow');
if (response.status == true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
addHTMLInput(response.data);
} else {
toastr.error(response.message, 'ERROR');
toastr.error(response.message, 'Error');
}
},
error: function(xhr, status, error) {
@ -1001,7 +1001,7 @@
console.error('Response Text: ', xhr.responseText);
}
toastr.warning('Error uploading file', 'WARNING');
toastr.warning('Error uploading file', 'Warning');
console.error('Upload error:', error);
},
complete: function() {
@ -1033,10 +1033,10 @@
$('.loader-mask').delay(350).fadeOut('slow');
if (res.status == true) {
toastr.success(res.message, 'SUCCESS')
toastr.success(res.message, 'Success')
addHTMLInput(res.data);
} else {
toastr.warning(res.message, 'WARNING')
toastr.warning(res.message, 'Warning')
}
},
error: function(xhr, status, error) {
@ -1109,13 +1109,13 @@
console.log('Parsed respond', respond)
if (respond.status == 'success') {
toastr.success(respond.message, 'SUCCESS')
toastr.success(respond.message, 'Success')
} else {
toastr.warning(respond.message, 'WARNING')
toastr.warning(respond.message, 'Warning')
}
} else {
toastr.warning('Failed to sent mail', 'WARNING')
toastr.warning('Failed to sent mail', 'Warning')
}
},
error: function(xhr, status, error) {
@ -1130,16 +1130,16 @@
} else {
let alert_msg = 'Template ID not exist'
toastr.warning(alert_msg, 'WARNING');
toastr.warning(alert_msg, 'Warning');
}
} else {
toastr.warning('Please enter the valid mail', 'WARNING');
toastr.warning('Please enter the valid mail', 'Warning');
}
} else {
toastr.warning('Please enter the valid mail', 'WARNING');
toastr.warning('Please enter the valid mail', 'Warning');
}
}
@ -1188,8 +1188,8 @@
<td>
<form class="ajax" onsubmit="submitAttachmentForm(event, this)">
<div class="form-row">
<div class="form-group col-3">
<input type="file" class="file-input__input" name="file" required>
<div class="form-group col-5">
<input type="file" class="file-input__input" name="file">
</div>
<div class="form-group col-2">
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
@ -1227,8 +1227,8 @@
<td>
<form class="ajax" onsubmit="submitAttachmentForm(event, this)">
<div class="form-row">
<div class="form-group col-3">
<input type="file" class="file-input__input" name="file" required>
<div class="form-group col-5">
<input type="file" class="file-input__input" name="file">
</div>
<div class="form-group col-2">
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
@ -1251,8 +1251,8 @@
<td>
<form class="ajax" onsubmit="submitAttachmentForm(event, this)">
<div class="form-row">
<div class="form-group col-3">
<input type="file" class="file-input__input" name="file" required>
<div class="form-group col-5">
<input type="file" class="file-input__input" name="file">
</div>
<div class="form-group col-2">
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
@ -1295,7 +1295,7 @@
// Check if a file is selected
if (!fileInput.files.length) {
toastr.warning("Please select a file to upload.");
toastr.warning("Please select a file to upload.", "Validation Error");
return;
}
@ -1321,10 +1321,10 @@
$('.loader-mask').delay(350).fadeOut('slow');
if (response.status == true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
addHTMLInput(response.data);
} else {
toastr.error(response.message, 'ERROR');
toastr.error(response.message, 'Error');
}
},
error: function(xhr, status, error) {
@ -1341,7 +1341,7 @@
console.error('Response Text: ', xhr.responseText);
}
toastr.warning('Error uploading file', 'WARNING');
toastr.warning('Error uploading file', 'Warning');
console.error('Upload error:', error);
},
complete: function() {
@ -1373,10 +1373,10 @@
$('.loader-mask').delay(350).fadeOut('slow');
if (res.status == true) {
toastr.success(res.message, 'SUCCESS')
toastr.success(res.message, 'Success')
addHTMLInput(res.data);
} else {
toastr.warning(res.message, 'WARNING')
toastr.warning(res.message, 'Warning')
}
},
error: function(xhr, status, error) {
@ -1687,7 +1687,7 @@
// setTimeout(function() {
// $('.loader').fadeOut();
// $('.loader-mask').delay(350).fadeOut('slow');
// toastr.warning('Something Went Wrong!', 'warning');
// toastr.warning('Something Went Wrong!', 'Warning');
// }, 1000);
// }
// });
@ -1747,7 +1747,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Went Wrong!', 'warning');
toastr.warning('Something Went Wrong!', 'Warning');
}, 1000);
}
});
@ -1807,7 +1807,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Went Wrong!', 'warning');
toastr.warning('Something Went Wrong!', 'Warning');
}, 1000);
}
});
@ -1867,7 +1867,7 @@
// setTimeout(function() {
// $('.loader').fadeOut();
// $('.loader-mask').delay(350).fadeOut('slow');
// toastr.warning('Something Went Wrong!', 'warning');
// toastr.warning('Something Went Wrong!', 'Warning');
// }, 1000);
// }
// });
@ -1928,7 +1928,7 @@
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Went Wrong!', 'warning');
toastr.warning('Something Went Wrong!', 'Warning');
}, 1000);
}
});
@ -1988,7 +1988,7 @@
// setTimeout(function() {
// $('.loader').fadeOut();
// $('.loader-mask').delay(350).fadeOut('slow');
// toastr.warning('Something Went Wrong!', 'warning');
// toastr.warning('Something Went Wrong!', 'Warning');
// }, 1000);
// }
// });
@ -2082,7 +2082,7 @@
{
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});

View File

@ -266,7 +266,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -315,7 +315,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -385,7 +385,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -420,13 +420,13 @@ function removePolicies(element) {
// console.log(res.status == true);
if(res){
if (res.status == true) {
toastr.success('Policy removed successfully', 'success');
toastr.success('Policy removed successfully', 'Success');
// $('#branch_table').empty();
// location.reload();
window.location.href = '<?= base_url("master/policy/list/") ?>' + policy_id_for_reload;
} else {
toastr.warning('Failed to remove policy', 'warning');
toastr.warning('Failed to remove policy', 'Warning');
}
}
},
@ -435,7 +435,7 @@ function removePolicies(element) {
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Failed to remove policy', 'warning');
toastr.warning('Failed to remove policy', 'Warning');
}
});
}

View File

@ -1461,7 +1461,7 @@ $('body').on('click', '.btnPolicyMaster', function() {
});
} else if (gmc_policy_type_id != 'GPA' && gmc_policy_type_id != 'GMC') {
// toastr.warning('The terms has no data ', 'warning');
// toastr.warning('The terms has no data ', 'Warning');
}
$(document).ready(function() {

View File

@ -844,7 +844,7 @@ $('body').on('click', '.btnPolicyMaster', function() {
});
} else if (gpa_policy_type_id != 'GPA' && gpa_policy_type_id != 'GMC') {
// toastr.warning("This policy has no policy terms.", 'warning');
// toastr.warning("This policy has no policy terms.", 'Warning');
}
});

View File

@ -143,7 +143,7 @@
</div>
<div class="form-group text-right m-b-0" id="hide_smbt_btn">
<button class="btn btn-primary waves-effect waves-light mr-1" id="btnGridSubmit_2">Submit</button>
<button class="btn btn-primary waves-effect waves-light mr-1 saveButtonChange" id="btnGridSubmit_2">Save</button>
<a class="btn btn-secondary waves-effect waves-light mr-1" id="btnGridrename" onclick="renameRackRateTab(this, null)">Rename</a>
</div>
</form>
@ -255,7 +255,7 @@ $(document).on('submit', 'form[id^="GridForm_"]', function(event) {
console.log('checkFamiliFloatersKeysDuplicate', isEqual)
if(isEqual){
toastr.warning('Family floaters alerdey exist', 'warning');
toastr.warning('Family floaters alerdey exist', 'Warning');
return false;
}
@ -363,9 +363,11 @@ $('body').on('click', '.btnPolicyModel', function()
$('.loader-mask').fadeIn();
if (policy_type_string == 'GPA' || policy_type_id == 6 || policy_type_id == 7) {
$('.saveButtonChange').text('Submit');
$('#add_new_rack_rate_tab_div').hide();
$('#rack_rate_one').hide();
} else {
$('.saveButtonChange').text('Save');
$('#add_new_rack_rate_tab_div').show();
$('#rack_rate_one').show();
}
@ -671,7 +673,7 @@ $(document).on('change', 'select[id^="grid_"]', function(event)
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -2000,7 +2002,7 @@ function checkDuplicate(unique_id = null)
if (siDuplicates) {
// highlightDuplicates(duplicateIndices);
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2042,7 +2044,7 @@ function checkDuplicate(unique_id = null)
if (siDuplicates) {
// highlightDuplicates(duplicateIndices);
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2083,7 +2085,7 @@ function checkDuplicate(unique_id = null)
}
if (ageDuplicates) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2130,7 +2132,7 @@ function checkDuplicate(unique_id = null)
}
if (siDuplicates || ageDuplicates) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2170,7 +2172,7 @@ function checkDuplicate(unique_id = null)
}
if (ageDuplicates) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2216,7 +2218,7 @@ function checkDuplicate(unique_id = null)
}
if (siDuplicates || ageDuplicates) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2263,7 +2265,7 @@ function checkDuplicate(unique_id = null)
}
if (siDuplicates || ageDuplicates) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2303,7 +2305,7 @@ function checkDuplicate(unique_id = null)
}
if (duplicatesFound) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2353,7 +2355,7 @@ function checkDuplicate(unique_id = null)
}
if (duplicatesFound) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2398,7 +2400,7 @@ function checkDuplicate(unique_id = null)
}
if (duplicatesFound) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2452,7 +2454,7 @@ function checkDuplicate(unique_id = null)
}
if (duplicatesFound) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2488,7 +2490,7 @@ function checkDuplicate(unique_id = null)
if (siDuplicates) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -2529,7 +2531,7 @@ function checkDuplicate(unique_id = null)
if (siDuplicates) {
toastr.warning('Duplicates found!', 'warning');
toastr.warning('Duplicates found!', 'Warning');
return true;
} else {
return false;
@ -3147,7 +3149,7 @@ function checkCheckboxes()
toastr.warning('You must select at least one checkbox.', 'Warning');
return false;
} else if (checkedCount == uncheckedCount) {
toastr.warning('You can not select all of the checkboxes', 'Waraning');
toastr.warning('You can not select all of the checkboxes', 'Warning');
return false;
}
return true;
@ -3411,7 +3413,7 @@ function appendNewTab(tabNameData = null, data = null)
</div>
<div class="form-group text-right m-b-0" id="hide_smbt_btn_${tabId}">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1" id="btnGridSubmit_2_${tabId}">Submit</button>
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1" id="btnGridSubmit_2_${tabId}">Save</button>
<a class="btn btn-danger waves-effect waves-light mr-1" id="btnGridremove_2_${tabId}" onclick="removeTab(this, '${tabId}', '${tabName}')">Delete</a>
<a class="btn btn-secondary waves-effect waves-light mr-1" id="btnGridrename_${tabId}" onclick="renameRackRateTab(this, '${tabId}', '${tabName}')">Rename</a>
</div>
@ -3589,7 +3591,7 @@ function removeTab(input, tabID, tabName)
text: res.message,
icon: "success"
});
// toastr.success('Policy removed successfully.', 'success');
// toastr.success('Policy removed successfully.', 'Success');
} else {
if(res.rr_count > 0){
Swal.fire({
@ -3605,7 +3607,7 @@ function removeTab(input, tabID, tabName)
});
}
// toastr.warning('Failed to remove policy', 'warning');
// toastr.warning('Failed to remove policy', 'Warning');
}
}
},
@ -3614,7 +3616,7 @@ function removeTab(input, tabID, tabName)
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
console.log('Something Wrong!', 'warning');
console.log('Something Wrong!', 'Warning');
}
});
}
@ -3704,7 +3706,7 @@ function renameRackRateTab(input, unique_id = null, tabName = null)
$('#rack_rate_name').val(newTabName);
// toastr.success('Policy removed successfully.', 'success');
// toastr.success('Policy removed successfully.', 'Success');
} else {
if(res.rr_count > 0){
Swal.fire({
@ -3723,7 +3725,7 @@ function renameRackRateTab(input, unique_id = null, tabName = null)
}
// toastr.warning('Failed to remove policy', 'warning');
// toastr.warning('Failed to remove policy', 'Warning');
}
}
},
@ -3732,7 +3734,7 @@ function renameRackRateTab(input, unique_id = null, tabName = null)
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
console.log('Something Wrong!', 'warning');
console.log('Something Wrong!', 'Warning');
}
});
}
@ -4021,7 +4023,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4049,7 +4051,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4078,7 +4080,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4107,7 +4109,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4137,7 +4139,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4166,7 +4168,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4195,7 +4197,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4224,7 +4226,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4253,7 +4255,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4282,7 +4284,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4311,7 +4313,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4343,7 +4345,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;
@ -4371,7 +4373,7 @@ function checkValideUnits(unique_id = null)
console.log('checkValideUnits function uncommonValues', uncommonValues);
if (uncommonValues.length > 0) {
toastr.warning('Given unit does not exist in the branch!', 'warning');
toastr.warning('Given unit does not exist in the branch!', 'Warning');
return true;
} else {
return false;

View File

@ -178,7 +178,7 @@ function copyHeaders(unique_id) {
// //console.log('excel_headers[formatType]', typeof excel_headers[formatType])
if (excel_headers[formatType] == undefined) {
toastr.error('Headers not found', 'Warning');
toastr.warning('Headers not found', 'Warning');
return;
}
@ -203,7 +203,7 @@ function copyHeaders(unique_id) {
//console.log('headerString', headerString);
navigator.clipboard.writeText(headerString).then(function() {
toastr.success('Headers copied to clipboard', 'success');
toastr.success('Headers copied to clipboard', 'Success');
}, function(err) {
toastr.error(err, 'Could not copy headers:');
});
@ -493,7 +493,7 @@ function generateTable(unique_id) {
// console.log(secondKey)
if ($('.duplicate').length > 0) {
//console.log('test');
toastr.warning("Duplicates found!", "warning");
toastr.warning("Duplicates found!", "Warning");
$('.excel_table_class').empty();
$('.excel_textarea').val('');
}

View File

@ -599,7 +599,7 @@ $(document).on('change', 'input[type="checkbox"][name="co_share_type[]"]', funct
let isAnyChecked = $('input[type="checkbox"][name="co_share_type[]"]:checked').length > 1;
if (isAnyChecked) {
toastr.warning('Only one leader can be selected.', 'WARNING!');
toastr.warning('Only one leader can be selected.', 'Warning!');
$(this).prop('checked', false);
}
});
@ -667,7 +667,7 @@ $(document).on('click', '[name="co_share_type[]"]', function() {
if(insurer == ""){
toastr.warning('Please select the insurer.', 'WARNING!');
toastr.warning('Please select the insurer.', 'Warning!');
$(this).prop('checked', false);
}else{
if(client_id && insurer_id){
@ -1443,7 +1443,7 @@ $('#setInsurerCount').on('input', function() {
addInsurerColumn();
}
} else {
toastr.warning('Please enter the insurer count', 'WARNING');
toastr.warning('Please enter the insurer count', 'Warning');
}
});

View File

@ -412,11 +412,11 @@ document.addEventListener("DOMContentLoaded", function () {
<?php endif; ?>
<?php if (session()->has('create_success')) : ?>
toastr.success('<?= session()->getFlashdata('create_success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('create_success') ?>', 'Success');
<?php endif; ?>
<?php if (session()->has('update_success')) : ?>
toastr.success('<?= session()->getFlashdata('update_success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('update_success') ?>', 'Success');
<?php endif; ?>

View File

@ -1182,7 +1182,7 @@ $(document).ready(function(){
}else{
toastr.warning('Please select the Owner type', 'WARNING');
toastr.warning('Please select the Owner type', 'Warning');
}
@ -1285,7 +1285,7 @@ $(document).on('change', 'input[type="checkbox"][name="co_share_type[]"]', funct
let isAnyChecked = $('input[type="checkbox"][name="co_share_type[]"]:checked').length > 1;
if (isAnyChecked) {
toastr.warning('Only one leader can be selected.', 'WARNING!');
toastr.warning('Only one leader can be selected.', 'Warning!');
$(this).prop('checked', false);
}
});
@ -1356,7 +1356,7 @@ $(document).on('click', '[name="co_share_type[]"]', function() {
// console.log('insurer_id', insurer_id);
if(insurer == ""){
toastr.warning('Please select the insurer.', 'WARNING!');
toastr.warning('Please select the insurer.', 'Warning!');
$(this).prop('checked', false);
}else{
@ -1426,7 +1426,7 @@ $(document).ready(function() {
if(!client_id){
$(this).val('').select2();
toastr.warning('Please select the Client', 'WARNING');
toastr.warning('Please select the Client', 'Warning');
}
});
@ -2248,7 +2248,7 @@ function co_share_percentage_calculation(input, extra = null){
});
if (val_sum > 100) {
toastr.warning('Sum of the co-share is greater than 100', 'WARNING');
toastr.warning('Sum of the co-share is greater than 100', 'Warning');
}
// // Find the empty input(s)
@ -2761,7 +2761,7 @@ function addCDAccountNumber(input)
if(client_id == '' || insurer_id == ''){
toastr.warning('Client, Insurer, or both do not exist.', 'WARNING!');
toastr.warning('Client, Insurer, or both do not exist.', 'Warning!');
$(input).val('')
return false;
}
@ -2769,7 +2769,7 @@ function addCDAccountNumber(input)
if (isAnyLeaderChecked) {
if(cop_yes){
$('#cd_ac_no_'+uniqueid).val('');
toastr.warning('Please select the Leader.', 'WARNING!');
toastr.warning('Please select the Leader.', 'Warning!');
return false;
}
}
@ -2777,7 +2777,7 @@ function addCDAccountNumber(input)
if(!leader){
if(cop_yes){
$('#cd_ac_no_'+uniqueid).val('');
toastr.warning('The CD account number not for the Leader.', 'WARNING!');
toastr.warning('The CD account number not for the Leader.', 'Warning!');
return false;
}
}
@ -3635,7 +3635,7 @@ $('#policy_no').change(function(){
// if (!leader) {
// $(this).val('');
// toastr.warning('Please select the Leader.', 'WARNING!');
// toastr.warning('Please select the Leader.', 'Warning!');
// }
// });
@ -3660,7 +3660,7 @@ $('#setInsurerCount').on('click', function() {
addInsurerColumn(); // Ensure this function is defined properly
// }
// } else {
// toastr.warning('Please enter a valid insurer count', 'WARNING');
// toastr.warning('Please enter a valid insurer count', 'Warning');
// }
});
@ -4477,7 +4477,7 @@ function validateInput(input, table, field){
checkDuplicateTableFieldValue(table, field, value, function(isDuplicate) {
if (isDuplicate) {
toastr.warning(message, 'WARNING');
toastr.warning(message, 'Warning');
$(input).val('')
}
});
@ -4549,7 +4549,7 @@ function checkCDAmountForBasePremium(input) {
// Validate inputs
if (!base_premium || !cd_ac_no) {
toastr.warning('Base premium or CD account number is missing', 'WARNING');
toastr.warning('Base premium or CD account number is missing', 'Warning');
return;
}
@ -4569,16 +4569,16 @@ function checkCDAmountForBasePremium(input) {
if (!response.base_premium_greater_than_balance) {
console.log('Base premium is less than or equal to CD balance:', 'SUCCESS');
} else {
toastr.warning('Base premium greater than CD Amount', 'WARNING');
toastr.warning('Base premium greater than CD Amount', 'Warning');
$(input).val("0")
}
} else {
toastr.error(response.message || 'Unable to fetch data', 'ERROR');
toastr.error(response.message || 'Unable to fetch data', 'Error');
}
}, function(xhr, status, error) {
console.error('Error fetching data:', error);
console.error(xhr.responseText);
toastr.error('An error occurred while checking the CD amount.', 'ERROR');
toastr.error('An error occurred while checking the CD amount.', 'Error');
});
}

View File

@ -511,11 +511,11 @@ $(document).ready(function(){
<?php endif; ?>
<?php if (session()->has('create_success')) : ?>
toastr.success('<?= session()->getFlashdata('create_success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('create_success') ?>', 'Success');
<?php endif; ?>
<?php if (session()->has('update_success')) : ?>
toastr.success('<?= session()->getFlashdata('update_success') ?>', 'success');
toastr.success('<?= session()->getFlashdata('update_success') ?>', 'Success');
<?php endif; ?>
@ -1210,7 +1210,7 @@ $(document).ready(function(){
myModal.show();
}else{
$('#client_id').val('').change();
toastr.warning('Please select the client type', 'WARNING')
toastr.warning('Please select the client type', 'Warning')
}
}
@ -1362,7 +1362,7 @@ $('#cd_ac_no_data').change(function(){
console.log('CD Account Number Responcce', res)
if(res.status == true){
toastr.warning(res.message, 'warning');
toastr.warning(res.message, 'Warning');
$('#cd_ac_no_data').val('');
}
},
@ -1647,10 +1647,10 @@ function removePolicyTransaction(input, pt_id) {
console.log('Data fetched successfully:', response);
if (response.status === true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
window.location.reload();
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
}, function(xhr, status, error) {
console.error('Error fetching data:', error);

View File

@ -108,7 +108,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});

View File

@ -315,10 +315,10 @@ function removePolciyType(element) {
// console.log(res.status == true);
if(res){
if (res.status == true) {
toastr.success('Policy type removed successfully', 'success');
toastr.success('Policy type removed successfully', 'Success');
location.reload();
} else {
toastr.warning('Failed to remove policy type', 'warning');
toastr.warning('Failed to remove policy type', 'Warning');
}
}
},
@ -327,7 +327,7 @@ function removePolciyType(element) {
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Failed to remove policy type', 'warning');
toastr.warning('Failed to remove policy type', 'Warning');
}
});
}

View File

@ -74,7 +74,7 @@ body {
if(check_policy_type_id[0].value == '' || check_policy_type_id[0].value == null || check_policy_type_id[0].value == 0){
$('#btnBranchAdd').hide();
toastr.warning('First Add the Policy Type!', 'warning',{timeOut: 2000});
toastr.warning('First Add the Policy Type!', 'Warning',{timeOut: 2000});
}else{
if ($('#btnBranchBack')[0].style.display == 'none') {
$('#btnBranchAdd').show();

View File

@ -195,18 +195,18 @@ $(document).ready(function() {
if (response.status) {
if (response.status == true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
} else {
toastr.error(response.message || 'Unable to get responce', 'ERROR');
toastr.error(response.message || 'Unable to get responce', 'Error');
}
},
error: function(xhr, status, error) {
console.error('Error fetching data:', error);
console.error(xhr.responseText);
toastr.error('An error occurred while Auto SI Form Submit.', 'ERROR');
toastr.error('An error occurred while Auto SI Form Submit.', 'Error');
},
});
});
@ -296,7 +296,7 @@ function getRackRateSIAmountAndAutoSiDataForAutoSI(client_policy_id) {
icon: 'warning',
})
} else {
toastr.error(response.message || 'Unable to fetch data', 'ERROR');
toastr.error(response.message || 'Unable to fetch data', 'Error');
addRow();
}
}
@ -307,7 +307,7 @@ function getRackRateSIAmountAndAutoSiDataForAutoSI(client_policy_id) {
}, function(xhr, status, error) {
console.error('Error fetching data:', error);
console.error(xhr.responseText);
toastr.error('An error occurred while checking the SI amount.', 'ERROR');
toastr.error('An error occurred while checking the SI amount.', 'Error');
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');

View File

@ -234,7 +234,7 @@ function getCoShareStatementDetails(pt_id){
appendTableData(response.data)
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
}, function(xhr, status, error) {
console.error('Error fetching data:', error);

View File

@ -522,7 +522,7 @@ function getClientPolicyDataBasedOnClientAndInsuer(){
appendPolicies(response.data)
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
}, function(xhr, status, error) {
console.error('Error fetching data:', error);

View File

@ -609,7 +609,7 @@ document.addEventListener("DOMContentLoaded", function () {
$('#email_corporate').val('');
$('#mobile').val('');
toastr.warning(res.message, 'WARNING');
toastr.warning(res.message, 'Warning');
}
},
error: function (xhr, status, error) {
@ -656,7 +656,7 @@ document.addEventListener("DOMContentLoaded", function () {
$('.loader-mask').delay(350).fadeOut('slow');
if(response.status == true){
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
$('.close').click();
@ -671,7 +671,7 @@ document.addEventListener("DOMContentLoaded", function () {
window.location.reload();
}else{
toastr.error(response.message, 'ERROR');
toastr.error(response.message, 'Error');
}
},
error: function(xhr, status, error) {
@ -688,7 +688,7 @@ document.addEventListener("DOMContentLoaded", function () {
console.error('Response Text: ', xhr.responseText);
}
toastr.warning('Error uploading file', 'WARNING');
toastr.warning('Error uploading file', 'Warning');
console.error('Upload error:', error);
},
complete: function() {
@ -729,9 +729,9 @@ document.addEventListener("DOMContentLoaded", function () {
// $('.loader-mask').delay(350).fadeOut('slow');
// if(res.status == true){
// toastr.success(res.message, 'SUCCESS');
// toastr.success(res.message, 'Success');
// }else{
// toastr.error(res.message, 'ERROR');
// toastr.error(res.message, 'Error');
// }
// },
// error: function (xhr, status, error) {
@ -754,7 +754,7 @@ document.addEventListener("DOMContentLoaded", function () {
})
if(selected.length == 0){
toastr.warning('Please select atleast one employee', 'WARNING');
toastr.warning('Please select atleast one employee', 'Warning');
return;
}
$('#employee_ids').val(selected);
@ -1033,12 +1033,12 @@ for (let i = 0; i < selected_count.length; i++) {
if (response.code === 200) {
console.log(`Iteration ${i}: Success - ${response.message}`);
} else {
toastr.error(response.message, 'ERROR');
toastr.error(response.message, 'Error');
}
},
error: function(xhr, status, error) {
console.error('AJAX Error:', error);
toastr.error('An error occurred. Please try again.', 'ERROR');
toastr.error('An error occurred. Please try again.', 'Error');
},
complete: function() {
// Increment the completed requests counter
@ -1046,7 +1046,7 @@ for (let i = 0; i < selected_count.length; i++) {
// Check if all AJAX requests have completed
if (completedRequests === selected_count.length) {
toastr.success('All employees have been successfully mapped.', 'SUCCESS');
toastr.success('All employees have been successfully mapped.', 'Success');
$('#map_emp_modal').modal('hide');
window.location.reload();
}
@ -1063,7 +1063,7 @@ function unmapEmployees(){
})
if(selected.length == 0){
toastr.warning('Please select atleast one employee', 'WARNING');
toastr.warning('Please select atleast one employee', 'Warning');
return;
}
@ -1108,10 +1108,10 @@ function unmapEmployees(){
$('.loader-mask').delay(350).fadeOut('slow');
if (res.status === true) {
toastr.success(res.message, 'SUCCESS');
toastr.success(res.message, 'Success');
window.location.reload();
} else {
toastr.error(res.message, 'ERROR');
toastr.error(res.message, 'Error');
}
},
error: function (xhr, status, error) {

View File

@ -282,7 +282,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -341,7 +341,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -387,7 +387,7 @@ $(document).ready(function () {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Something Wrong!', 'warning');
toastr.warning('Something Wrong!', 'Warning');
}, 1000);
}
});
@ -547,7 +547,7 @@ function removeTPABranch(element) {
toastr.success('TPA branch removed successfully', 'success');
location.reload();
} else {
toastr.warning('Failed to remove TPA branch', 'warning');
toastr.warning('Failed to remove TPA branch', 'Warning');
}
}
},
@ -556,7 +556,7 @@ function removeTPABranch(element) {
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Failed to remove TPA branch', 'warning');
toastr.warning('Failed to remove TPA branch', 'Warning');
}
});
}

View File

@ -271,10 +271,10 @@ function removeTPA(element) {
// console.log(res.status == true);
if(res){
if (res.status == true) {
toastr.success('TPA removed successfully', 'success');
toastr.success('TPA removed successfully', 'Success');
location.reload();
} else {
toastr.warning('Failed to remove TPA', 'warning');
toastr.warning('Failed to remove TPA', 'Warning');
}
}
},
@ -283,7 +283,7 @@ function removeTPA(element) {
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
toastr.warning('Failed to remove TPA', 'warning');
toastr.warning('Failed to remove TPA', 'Warning');
}
});
}

View File

@ -74,7 +74,7 @@ body {
if(check_tpa_id[0].value == '' || check_tpa_id[0].value == null || check_tpa_id[0].value == 0){
$('#btnBranchAdd').hide();
toastr.warning('First Add the TPA!', 'warning',{timeOut: 2000});
toastr.warning('First Add the TPA!', 'Warning',{timeOut: 2000});
}else{
if ($('#btnBranchBack')[0].style.display == 'none') {
$('#btnBranchAdd').show();

View File

@ -663,7 +663,7 @@ function getClientPolicyDataBasedOnClientAndInsuer(){
appendPolicies(response.data)
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
}, function(xhr, status, error) {
console.error('Error fetching data:', error);

View File

@ -386,7 +386,7 @@ $('#cost_center').change(function() {
console.log(res)
if (res.status == true) {
toastr.warning(res.message, 'warning');
toastr.warning(res.message, 'Warning');
$('#cost_center').val('');
}
},

View File

@ -577,10 +577,10 @@ function removeVehicleMasterData(element) {
// console.log(res.status == true);
if (res) {
if (res.status == true) {
toastr.success('Vehicle Data removed successfully.', 'success');
toastr.success('Vehicle Data removed successfully.', 'Success');
location.reload();
} else {
toastr.warning('Failed to remove Vehicle Data.', 'warning');
toastr.warning('Failed to remove Vehicle Data.', 'Warning');
}
}
},
@ -589,7 +589,7 @@ function removeVehicleMasterData(element) {
console.error(status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
console.log('Something Wrong!', 'warning');
console.log('Something Wrong!', 'Warning');
}
});
}

View File

@ -3549,12 +3549,12 @@ function ajaxRequest(formData) {
console.log(res);
if (res.status == 'success' && res.code == 200) {
toastr.success('Mail send Successfully', 'SUCCESS')
toastr.success('Mail send Successfully', 'Success')
} else {
if (res.messgae) {
toastr.error(res.messgae, 'ERROR')
toastr.error(res.messgae, 'Error')
} else {
toastr.error('Mail send failed', 'ERROR')
toastr.error('Mail send failed', 'Error')
}
}
@ -3611,7 +3611,7 @@ function getInsurerBranchContacts(input){
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
if(res.status == false){
toastr.warning(res.message, 'WARNING')
toastr.warning(res.message, 'Warning')
}else{
appendInsurerContact(res.data)
}
@ -3770,7 +3770,7 @@ function getMailContent(id){
console.log(response);
$('#'+id).val(response.data)
} else {
toastr.error(response.message || 'Unable to fetch data', 'ERROR');
toastr.error(response.message || 'Unable to fetch data', 'Error');
}
}, function(xhr, status, error) {
console.error('Error fetching data:', error);
@ -5157,9 +5157,9 @@ function autoCaluculationForPremiumChildTable(input) {
console.log('Data sent successfully:', response);
if (response.status == true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
window.location.reload();
@ -5228,9 +5228,9 @@ function autoCaluculationForPremiumChildTable(input) {
console.log('Data sent successfully:', response);
if (response.status == true) {
toastr.success(response.message, 'SUCCESS');
toastr.success(response.message, 'Success');
} else {
toastr.warning(response.message, 'WARNING');
toastr.warning(response.message, 'Warning');
}
window.location.href = '<?= base_url('rfq/list/') ?>' + lead_id + '/' + 2;