8889841cback()->with('not_permitted', 'This feature is disable for demo!');
//clearing all the cached queries
$this->cacheForget('biller_list');
$this->cacheForget('brand_list');
$this->cacheForget('category_list');
$this->cacheForget('coupon_list');
$this->cacheForget('customer_list');
$this->cacheForget('customer_group_list');
$this->cacheForget('product_list');
$this->cacheForget('product_list_with_variant');
$this->cacheForget('warehouse_list');
$this->cacheForget('tax_list');
$this->cacheForget('currency');
$this->cacheForget('general_setting');
$this->cacheForget('pos_setting');
$this->cacheForget('user_role');
$this->cacheForget('permissions');
$this->cacheForget('role_has_permissions');
$this->cacheForget('role_has_permissions_list');
$tables = DB::select('SHOW TABLES');
if(!config('database.connections.saleprosaas_landlord'))
$database_name = env('DB_DATABASE');
else
$database_name = env('DB_PREFIX').$this->getTenantId();
$str = 'Tables_in_'.$database_name;
foreach ($tables as $table) {
if($table->$str != 'accounts' && $table->$str != 'general_settings' && $table->$str != 'hrm_settings' && $table->$str != 'languages' && $table->$str != 'migrations' && $table->$str != 'password_resets' && $table->$str != 'permissions' && $table->$str != 'pos_setting' && $table->$str != 'roles' && $table->$str != 'role_has_permissions' && $table->$str != 'users' && $table->$str != 'currencies' && $table->$str != 'reward_point_settings') {
DB::table($table->$str)->truncate();
}
}
return redirect()->back()->with('message', 'Database cleared successfully');
}
public function generalSetting()
{
$lims_general_setting_data = GeneralSetting::latest()->first();
$lims_account_list = Account::where('is_active', true)->get();
$lims_currency_list = Currency::get();
$zones_array = array();
$timestamp = time();
foreach(timezone_identifiers_list() as $key => $zone) {
date_default_timezone_set($zone);
$zones_array[$key]['zone'] = $zone;
$zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
}
return view('backend.setting.general_setting', compact('lims_general_setting_data', 'lims_account_list', 'zones_array', 'lims_currency_list'));
}
public function generalSettingStore(Request $request)
{
if(!env('USER_VERIFIED'))
return redirect()->back()->with('not_permitted', 'This feature is disable for demo!');
$this->validate($request, [
'site_logo' => 'image|mimes:jpg,jpeg,png,gif|max:100000',
]);
$data = $request->except('site_logo');
//return $data;
//writting timezone info in .env file
$path = app()->environmentFilePath();
$searchArray = array('APP_TIMEZONE='.env('APP_TIMEZONE'));
$replaceArray = array('APP_TIMEZONE='.$data['timezone']);
file_put_contents($path, str_replace($searchArray, $replaceArray, file_get_contents($path)));
if(isset($data['is_rtl']))
$data['is_rtl'] = true;
else
$data['is_rtl'] = false;
$general_setting = GeneralSetting::latest()->first();
$general_setting->id = 1;
$general_setting->site_title = $data['site_title'];
$general_setting->is_rtl = $data['is_rtl'];
if(isset($data['is_zatca']))
$general_setting->is_zatca = true;
else
$general_setting->is_zatca = false;
$general_setting->company_name = $data['company_name'];
$general_setting->vat_registration_number = $data['vat_registration_number'];
$general_setting->currency = $data['currency'];
$general_setting->currency_position = $data['currency_position'];
$general_setting->decimal = $data['decimal'];
$general_setting->staff_access = $data['staff_access'];
$general_setting->date_format = $data['date_format'];
$general_setting->developed_by = $data['developed_by'];
$general_setting->invoice_format = $data['invoice_format'];
$general_setting->state = $data['state'];
$logo = $request->site_logo;
if ($logo) {
$ext = pathinfo($logo->getClientOriginalName(), PATHINFO_EXTENSION);
$logoName = date("Ymdhis") . '.' . $ext;
$logo->move('public/logo', $logoName);
$general_setting->site_logo = $logoName;
}
$general_setting->save();
cache()->forget('general_setting');
return redirect()->back()->with('message', 'Data updated successfully');
}
public function superadminGeneralSetting()
{
$lims_general_setting_data = GeneralSetting::latest()->first();
return view('landlord.general_setting', compact('lims_general_setting_data'));
}
public function superadminGeneralSettingStore(Request $request)
{
if(!env('USER_VERIFIED'))
return redirect()->back()->with('not_permitted', 'This feature is disable for demo!');
$this->validate($request, [
'site_logo' => 'image|mimes:jpg,jpeg,png,gif|max:100000',
'og_image' => 'image|mimes:jpg,jpeg,png|max:100000',
]);
$data = $request->except('site_logo');
//return $data;
if(isset($data['is_rtl']))
$data['is_rtl'] = true;
else
$data['is_rtl'] = false;
$general_setting = GeneralSetting::latest()->first();
$general_setting->id = 1;
$general_setting->site_title = $data['site_title'];
$general_setting->is_rtl = $data['is_rtl'];
$general_setting->phone = $data['phone'];
$general_setting->email = $data['email'];
$general_setting->free_trial_limit = $data['free_trial_limit'];
$general_setting->date_format = $data['date_format'];
$general_setting->currency = $data['currency'];
$general_setting->developed_by = $data['developed_by'];
$logo = $request->site_logo;
$general_setting->meta_title = $data['meta_title'];
$general_setting->meta_description = $data['meta_description'];
$general_setting->og_title = $data['og_title'];
$general_setting->og_description = $data['og_description'];
$general_setting->chat_script = $data['chat_script'];
$general_setting->ga_script = $data['ga_script'];
$general_setting->fb_pixel_script = $data['fb_pixel_script'];
$general_setting->active_payment_gateway = implode(",", $data['active_payment_gateway']);
$general_setting->stripe_public_key = $data['stripe_public_key'];
$general_setting->stripe_secret_key = $data['stripe_secret_key'];
$general_setting->paypal_client_id = $data['paypal_client_id'];
$general_setting->paypal_client_secret = $data['paypal_client_secret'];
$general_setting->razorpay_number = $data['razorpay_number'];
$general_setting->razorpay_key = $data['razorpay_key'];
$general_setting->razorpay_secret = $data['razorpay_secret'];
$og_image = $request->og_image;
if ($logo) {
$ext = pathinfo($logo->getClientOriginalName(), PATHINFO_EXTENSION);
$logoName = date("Ymdhis") . '.' . $ext;
$logo->move('public/landlord/images/logo', $logoName);
$general_setting->site_logo = $logoName;
}
if ($og_image) {
$ext = pathinfo($og_image->getClientOriginalName(), PATHINFO_EXTENSION);
$og_image_name = date("Ymdhis") . '.' . $ext;
$og_image->move('public/landlord/images/og-image/', $og_image_name);
$general_setting->og_image = $og_image_name;
}
$this->cacheForget('general_setting');
$general_setting->save();
return redirect()->back()->with('message', 'Data updated successfully');
}
public function rewardPointSetting()
{
$lims_reward_point_setting_data = RewardPointSetting::latest()->first();
return view('backend.setting.reward_point_setting', compact('lims_reward_point_setting_data'));
}
public function rewardPointSettingStore(Request $request)
{
$data = $request->all();
if(isset($data['is_active']))
$data['is_active'] = true;
else
$data['is_active'] = false;
RewardPointSetting::latest()->first()->update($data);
return redirect()->back()->with('message', 'Reward point setting updated successfully');
}
public function backup()
{
if(!env('USER_VERIFIED'))
return redirect()->back()->with('not_permitted', 'This feature is disable for demo!');
// Database configuration
$host = env('DB_HOST');
$username = env('DB_USERNAME');
$password = env('DB_PASSWORD');
if(!config('database.connections.saleprosaas_landlord'))
$database_name = env('DB_DATABASE');
else
$database_name = env('DB_PREFIX').$this->getTenantId();
// Get connection object and set the charset
$conn = mysqli_connect($host, $username, $password, $database_name);
$conn->set_charset("utf8");
// Get All Table Names From the Database
$tables = array();
$sql = "SHOW TABLES";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_row($result)) {
$tables[] = $row[0];
}
$sqlScript = "";
foreach ($tables as $table) {
// Prepare SQLscript for creating table structure
$query = "SHOW CREATE TABLE $table";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_row($result);
$sqlScript .= "\n\n" . $row[1] . ";\n\n";
$query = "SELECT * FROM $table";
$result = mysqli_query($conn, $query);
$columnCount = mysqli_num_fields($result);
// Prepare SQLscript for dumping data for each table
for ($i = 0; $i < $columnCount; $i ++) {
while ($row = mysqli_fetch_row($result)) {
$sqlScript .= "INSERT INTO $table VALUES(";
for ($j = 0; $j < $columnCount; $j ++) {
$row[$j] = $row[$j];
if (isset($row[$j])) {
$sqlScript .= '"' . $row[$j] . '"';
} else {
$sqlScript .= '""';
}
if ($j < ($columnCount - 1)) {
$sqlScript .= ',';
}
}
$sqlScript .= ");\n";
}
}
$sqlScript .= "\n";
}
if(!empty($sqlScript))
{
// Save the SQL script to a backup file
$backup_file_name = public_path().'/'.$database_name . '_backup_' . time() . '.sql';
//return $backup_file_name;
$fileHandler = fopen($backup_file_name, 'w+');
$number_of_lines = fwrite($fileHandler, $sqlScript);
fclose($fileHandler);
$zip = new ZipArchive();
$zipFileName = $database_name . '_backup_' . time() . '.zip';
$zip->open(public_path() . '/' . $zipFileName, ZipArchive::CREATE);
$zip->addFile($backup_file_name, $database_name . '_backup_' . time() . '.sql');
$zip->close();
// Download the SQL backup file to the browser
/*header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($backup_file_name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($backup_file_name));
ob_clean();
flush();
readfile($backup_file_name);
exec('rm ' . $backup_file_name); */
}
return redirect('public/' . $zipFileName);
}
public function changeTheme($theme)
{
$lims_general_setting_data = GeneralSetting::latest()->first();
$lims_general_setting_data->theme = $theme;
$lims_general_setting_data->save();
}
public function mailSetting()
{
$mail_setting_data = MailSetting::latest()->first();
return view('backend.setting.mail_setting', compact('mail_setting_data'));
}
public function mailSettingStore(Request $request)
{
if(!env('USER_VERIFIED'))
return redirect()->back()->with('not_permitted', 'This feature is disable for demo!');
$data = $request->all();
$mail_setting = MailSetting::latest()->first();
if(!$mail_setting)
$mail_setting = new MailSetting;
$mail_setting->driver = $data['driver'];
$mail_setting->host = $data['host'];
$mail_setting->port = $data['port'];
$mail_setting->from_address = $data['from_address'];
$mail_setting->from_name = $data['from_name'];
$mail_setting->username = $data['username'];
$mail_setting->password = $data['password'];
$mail_setting->encryption = $data['encryption'];
$mail_setting->save();
return redirect()->back()->with('message', 'Data updated successfully');
}
public function smsSetting()
{
return view('backend.setting.sms_setting');
}
public function smsSettingStore(Request $request)
{
if(!env('USER_VERIFIED'))
return redirect()->back()->with('not_permitted', 'This feature is disable for demo!');
$data = $request->all();
//writting bulksms info in .env file
$path = app()->environmentFilePath();
if($data['gateway'] == 'twilio'){
$searchArray = array('SMS_GATEWAY='.env('SMS_GATEWAY'), 'ACCOUNT_SID='.env('ACCOUNT_SID'), 'AUTH_TOKEN='.env('AUTH_TOKEN'), 'Twilio_Number='.env('Twilio_Number') );
$replaceArray = array('SMS_GATEWAY='.$data['gateway'], 'ACCOUNT_SID='.$data['account_sid'], 'AUTH_TOKEN='.$data['auth_token'], 'Twilio_Number='.$data['twilio_number'] );
}
else{
$searchArray = array( 'SMS_GATEWAY='.env('SMS_GATEWAY'), 'CLICKATELL_API_KEY='.env('CLICKATELL_API_KEY') );
$replaceArray = array( 'SMS_GATEWAY='.$data['gateway'], 'CLICKATELL_API_KEY='.$data['api_key'] );
}
file_put_contents($path, str_replace($searchArray, $replaceArray, file_get_contents($path)));
return redirect()->back()->with('message', 'Data updated successfully');
}
public function createSms()
{
$lims_customer_list = Customer::where('is_active', true)->get();
return view('backend.setting.create_sms', compact('lims_customer_list'));
}
public function sendSms(Request $request)
{
$data = $request->all();
$numbers = explode(",", $data['mobile']);
if( env('SMS_GATEWAY') == 'twilio') {
$account_sid = env('ACCOUNT_SID');
$auth_token = env('AUTH_TOKEN');
$twilio_phone_number = env('Twilio_Number');
try{
$client = new Client($account_sid, $auth_token);
foreach ($numbers as $number) {
$client->messages->create(
$number,
array(
"from" => $twilio_phone_number,
"body" => $data['message']
)
);
}
}
catch(\Exception $e){
//return $e;
return redirect()->back()->with('not_permitted', 'Please setup your SMS Setting to send SMS.');
}
$message = "SMS sent successfully";
}
elseif( env('SMS_GATEWAY') == 'clickatell') {
try {
$clickatell = new \Clickatell\Rest(env('CLICKATELL_API_KEY'));
foreach ($numbers as $number) {
$result = $clickatell->sendMessage(['to' => [$number], 'content' => $data['message']]);
}
}
catch (ClickatellException $e) {
return redirect()->back()->with('not_permitted', 'Please setup your SMS Setting to send SMS.');
}
$message = "SMS sent successfully";
}
else
return redirect()->back()->with('not_permitted', 'Please setup your SMS Setting to send SMS.');
return redirect()->back()->with('message', $message);
}
public function hrmSetting()
{
$lims_hrm_setting_data = HrmSetting::latest()->first();
return view('backend.setting.hrm_setting', compact('lims_hrm_setting_data'));
}
public function hrmSettingStore(Request $request)
{
$data = $request->all();
$lims_hrm_setting_data = HrmSetting::firstOrNew(['id' => 1]);
$lims_hrm_setting_data->checkin = $data['checkin'];
$lims_hrm_setting_data->checkout = $data['checkout'];
$lims_hrm_setting_data->save();
return redirect()->back()->with('message', 'Data updated successfully');
}
public function posSetting()
{
$lims_customer_list = Customer::where('is_active', true)->get();
$lims_warehouse_list = Warehouse::where('is_active', true)->get();
$lims_biller_list = Biller::where('is_active', true)->get();
$lims_pos_setting_data = PosSetting::latest()->first();
if($lims_pos_setting_data)
$options = explode(',', $lims_pos_setting_data->payment_options);
else
$options = [];
return view('backend.setting.pos_setting', compact('lims_customer_list', 'lims_warehouse_list', 'lims_biller_list', 'lims_pos_setting_data','options'));
}
public function posSettingStore(Request $request)
{
if(!env('USER_VERIFIED'))
return redirect()->back()->with('not_permitted', 'This feature is disable for demo!');
$data = $request->all();
if(isset($data['options'])){
$options = implode(',',$data['options']);
} else {
$options = '"none"';
}
$pos_setting = PosSetting::firstOrNew(['id' => 1]);
$pos_setting->id = 1;
$pos_setting->customer_id = $data['customer_id'];
$pos_setting->warehouse_id = $data['warehouse_id'];
$pos_setting->biller_id = $data['biller_id'];
$pos_setting->product_number = $data['product_number'];
$pos_setting->stripe_public_key = $data['stripe_public_key'];
$pos_setting->stripe_secret_key = $data['stripe_secret_key'];
$pos_setting->paypal_live_api_username = $data['paypal_username'];
$pos_setting->paypal_live_api_password = $data['paypal_password'];
$pos_setting->paypal_live_api_secret = $data['paypal_signature'];
$pos_setting->payment_options = $options;
$pos_setting->invoice_option = $data['invoice_size'];
if(!isset($data['keybord_active']))
$pos_setting->keybord_active = false;
else
$pos_setting->keybord_active = true;
if(!isset($data['is_table']))
$pos_setting->is_table = false;
else
$pos_setting->is_table = true;
$pos_setting->save();
cache()->forget('pos_setting');
return redirect()->back()->with('message', 'POS setting updated successfully');
}
}