Files
wticreatorstudio/Modules/JobPortal/Entities/Settings.php
T
2024-02-12 22:54:20 -05:00

214 lines
7.2 KiB
PHP

<?php
namespace Modules\JobPortal\Entities;
use Modules\JobPortal\Entities\BaseModel;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Support\Facades\Cache;
use Illuminate\Database\Eloquent\Concerns\HasEvents;
class Settings extends BaseModel
{
use HasFactory, HasEvents;
protected $table = 'jp_settings';
protected $fillable=['name','group','val'];
public static function getSettings($group = '',$locale = '')
{
if ($group) {
static::where('group', $group);
}
$all = static::groupBy('name')->get();
$res = [];
foreach ($all as $row) {
$res[$row->name] = $row->val;
}
return $res;
}
public static function item($item, $default = false)
{
//$value = Cache::rememberForever('setting_' . $item, function () use ($item ,$default) {
$val = Settings::where('name', $item)->first();
return ($val and $val['val'] != null) ? $val['val'] : $default;
//});
//return $value;
}
public static function store($key,$data){
$check = Settings::where('name', $key)->first();
if($check){
$check->val = $data;
$check->save();
}else{
$check = new self();
$check->val = $data;
$check->name = $key;
$check->save();
}
Cache::forget('setting_' . $key);
}
public static function getSettingPages(){
$allSettings = [
'company'=>[
"id" => "company",
"title" => "Company Settings",
"position" => 30,
"view" => "Company::admin.settings.company",
"keys" => [
"company_page_search_title",
"company_list_layout",
"single_company_layout",
"company_sidebar_search_fields",
"company_location_search_style",
"company_page_list_seo_title",
"company_page_list_seo_desc",
"company_page_list_seo_image",
"company_page_list_seo_share",
"company_sidebar_cta",
"enable_hide_email_company",
"company_role",
"company_auto_approved"
],
"html_keys" => []
],
"job" => [
"id" => "job",
"title" => "Job Settings",
"position" => 30,
"view" => "Job::admin.settings.job",
"keys" => [
"job_page_search_title",
"jobs_list_layout",
"job_single_layout",
"job_sidebar_search_fields",
"job_banner_search_fields",
"job_location_search_style",
"job_page_list_seo_title",
"job_page_list_seo_desc",
"job_page_list_seo_image",
"job_page_list_seo_share",
"job_sidebar_cta",
"job_require_plan",
"job_hide_expired_jobs",
"job_need_approve",
"job_hide_job_apply",
"job_company_max_post_jobs",
],
"html_keys" => []
],
"candidate" => [
"id" => "candidate",
"title" => "Candidate Settings",
"position" => 30,
"view" => "Candidate::admin.settings.candidate",
"keys" => [
"candidate_page_search_title",
"candidate_download_cv_required_login",
"candidate_public_policy",
"candidate_limit_apply_by",
"candidate_maximum_job_apply",
"candidates_list_layout",
"single_candidate_layout",
"candidate_sidebar_search_fields",
"candidate_location_search_style",
"candidate_page_list_seo_title",
"candidate_page_list_seo_desc",
"candidate_page_list_seo_image",
"candidate_page_list_seo_share",
"candidate_sidebar_cta",
"candidate_single_layout",
"candidate_list_layout"
],
"html_keys" => []
],
'email' => [
'id' => 'email',
'title' => __("Email Settings"),
'position'=>50,
'view'=>"Email::admin.settings.email",
"keys"=>[
'email_driver',
'email_host',
'email_port',
'email_encryption',
'email_username',
'email_password',
'email_mailgun_domain',
'email_mailgun_secret',
'email_mailgun_endpoint',
'email_postmark_token',
'email_ses_key',
'email_ses_secret',
'email_ses_region',
'email_sparkpost_secret',
'email_footer',
'email_header',
'content_email_apply_job_submit',
'content_email_change_applicants_status',
'admin_email',
'email_from_name',
'email_from_address',
],
'html_keys'=>[
]
],
'payout'=> [
'id' => 'payout',
'title' => __("Payout Settings"),
'position' => 30,
'view'=>"Payout::admin.settings.payout",
"keys"=>[
'vendor_payout_methods',
'disable_payout',
],
'html_keys'=>[
]
],
'advance'=>[
'id' => 'advance',
'title' => __("Advance Settings"),
'position'=>80,
'view' => "Core::admin.settings.groups.advance",
"keys" => [
'map_provider',
'map_gmap_key',
'recaptcha_enable',
'recaptcha_api_key',
'recaptcha_api_secret'
]
],
];
//@todo Sort items by Position
$allSettings = array_values(\Illuminate\Support\Arr::sort($allSettings, function ($value) {
return $value['position'] ?? 0;
}));
if(!empty($allSettings)){
foreach ($allSettings as &$item)
{
$item['url'] = 'admin/jobportal/settings/index/'.$item['id'];
$item['name'] = $item['title'] ?? $item['id'];
$item['icon'] = $item['icon'] ?? '';
}
}
return $allSettings;
}
public static function clearCustomCssCache(){
$langs = Language::getActive();
if(!empty($langs)){
foreach ($langs as $lang)
{
Cache::forget("custom_css_".$lang->locale);
}
}
}
}