Files
elcaribe/desarrollo2/app/Http/Controllers/BusinessSettingsController.php
2023-08-23 17:33:44 -04:00

547 lines
19 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\BusinessSetting;
use Artisan;
use CoreComponentRepository;
class BusinessSettingsController extends Controller
{
public function __construct() {
// Staff Permission Check
$this->middleware(['permission:seller_commission_configuration'])->only('vendor_commission');
$this->middleware(['permission:seller_verification_form_configuration'])->only('seller_verification_form');
$this->middleware(['permission:general_settings'])->only('general_setting');
$this->middleware(['permission:features_activation'])->only('activation');
$this->middleware(['permission:smtp_settings'])->only('smtp_settings');
$this->middleware(['permission:payment_methods_configurations'])->only('payment_method');
$this->middleware(['permission:order_configuration'])->only('order_configuration');
$this->middleware(['permission:file_system_&_cache_configuration'])->only('file_system');
$this->middleware(['permission:social_media_logins'])->only('social_login');
$this->middleware(['permission:facebook_chat'])->only('facebook_chat');
$this->middleware(['permission:facebook_comment'])->only('facebook_comment');
$this->middleware(['permission:analytics_tools_configuration'])->only('google_analytics');
$this->middleware(['permission:google_recaptcha_configuration'])->only('google_recaptcha');
$this->middleware(['permission:google_map_setting'])->only('google_map');
$this->middleware(['permission:google_firebase_setting'])->only('google_firebase');
$this->middleware(['permission:shipping_configuration'])->only('shipping_configuration');
}
public function general_setting(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.general_settings');
}
public function activation(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.activation');
}
public function social_login(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.social_login');
}
public function smtp_settings(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.smtp_settings');
}
public function google_analytics(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.google_configuration.google_analytics');
}
public function google_recaptcha(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.google_configuration.google_recaptcha');
}
public function google_map(Request $request) {
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.google_configuration.google_map');
}
public function google_firebase(Request $request) {
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.google_configuration.google_firebase');
}
public function facebook_chat(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.facebook_chat');
}
public function facebook_comment(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.facebook_configuration.facebook_comment');
}
public function payment_method(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.payment_method');
}
public function file_system(Request $request)
{
CoreComponentRepository::instantiateShopRepository();
CoreComponentRepository::initializeCache();
return view('backend.setup_configurations.file_system');
}
/**
* Update the API key's for payment methods.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function payment_method_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', $request->payment_method.'_sandbox')->first();
if($business_settings != null){
if ($request->has($request->payment_method.'_sandbox')) {
$business_settings->value = 1;
$business_settings->save();
}
else{
$business_settings->value = 0;
$business_settings->save();
}
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
/**
* Update the API key's for GOOGLE analytics.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function google_analytics_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', 'google_analytics')->first();
if ($request->has('google_analytics')) {
$business_settings->value = 1;
$business_settings->save();
}
else{
$business_settings->value = 0;
$business_settings->save();
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
public function google_recaptcha_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', 'google_recaptcha')->first();
if ($request->has('google_recaptcha')) {
$business_settings->value = 1;
$business_settings->save();
}
else{
$business_settings->value = 0;
$business_settings->save();
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
public function google_map_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', 'google_map')->first();
if ($request->has('google_map')) {
$business_settings->value = 1;
$business_settings->save();
}
else{
$business_settings->value = 0;
$business_settings->save();
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
public function google_firebase_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', 'google_firebase')->first();
if ($request->has('google_firebase')) {
$business_settings->value = 1;
$business_settings->save();
}
else{
$business_settings->value = 0;
$business_settings->save();
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
/**
* Update the API key's for GOOGLE analytics.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function facebook_chat_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', 'facebook_chat')->first();
if ($request->has('facebook_chat')) {
$business_settings->value = 1;
$business_settings->save();
}
else{
$business_settings->value = 0;
$business_settings->save();
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
public function facebook_comment_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', 'facebook_comment')->first();
if(!$business_settings) {
$business_settings = new BusinessSetting;
$business_settings->type = 'facebook_comment';
}
$business_settings->value = 0;
if ($request->facebook_comment) {
$business_settings->value = 1;
}
$business_settings->save();
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
public function facebook_pixel_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
$business_settings = BusinessSetting::where('type', 'facebook_pixel')->first();
if ($request->has('facebook_pixel')) {
$business_settings->value = 1;
$business_settings->save();
}
else{
$business_settings->value = 0;
$business_settings->save();
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
/**
* Update the API key's for other methods.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function env_key_update(Request $request)
{
foreach ($request->types as $key => $type) {
$this->overWriteEnvFile($type, $request[$type]);
}
flash(translate("Settings updated successfully"))->success();
return back();
}
/**
* overWrite the Env File values.
* @param String type
* @param String value
* @return \Illuminate\Http\Response
*/
public function overWriteEnvFile($type, $val)
{
if(env('DEMO_MODE') != 'On'){
$path = base_path('.env');
if (file_exists($path)) {
$val = '"'.trim($val).'"';
if(is_numeric(strpos(file_get_contents($path), $type)) && strpos(file_get_contents($path), $type) >= 0){
file_put_contents($path, str_replace(
$type.'="'.env($type).'"', $type.'='.$val, file_get_contents($path)
));
}
else{
file_put_contents($path, file_get_contents($path)."\r\n".$type.'='.$val);
}
}
}
}
public function seller_verification_form(Request $request)
{
return view('backend.sellers.seller_verification_form.index');
}
/**
* Update sell verification form.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function seller_verification_form_update(Request $request)
{
$form = array();
$select_types = ['select', 'multi_select', 'radio'];
$j = 0;
for ($i=0; $i < count($request->type); $i++) {
$item['type'] = $request->type[$i];
$item['label'] = $request->label[$i];
if(in_array($request->type[$i], $select_types)){
$item['options'] = json_encode($request['options_'.$request->option[$j]]);
$j++;
}
array_push($form, $item);
}
$business_settings = BusinessSetting::where('type', 'verification_form')->first();
$business_settings->value = json_encode($form);
if($business_settings->save()){
Artisan::call('cache:clear');
flash(translate("Verification form updated successfully"))->success();
return back();
}
}
public function update(Request $request)
{
foreach ($request->types as $key => $type) {
if($type == 'site_name'){
$this->overWriteEnvFile('APP_NAME', $request[$type]);
}
if($type == 'timezone'){
$this->overWriteEnvFile('APP_TIMEZONE', $request[$type]);
}
else {
$lang = null;
if(gettype($type) == 'array'){
$lang = array_key_first($type);
$type = $type[$lang];
$business_settings = BusinessSetting::where('type', $type)->where('lang',$lang)->first();
}else{
$business_settings = BusinessSetting::where('type', $type)->first();
}
if($business_settings!=null){
if(gettype($request[$type]) == 'array'){
$business_settings->value = json_encode($request[$type]);
}
else {
$business_settings->value = $request[$type];
}
$business_settings->lang = $lang;
$business_settings->save();
}
else{
$business_settings = new BusinessSetting;
$business_settings->type = $type;
if(gettype($request[$type]) == 'array'){
$business_settings->value = json_encode($request[$type]);
}
else {
$business_settings->value = $request[$type];
}
$business_settings->lang = $lang;
$business_settings->save();
}
}
}
Artisan::call('cache:clear');
flash(translate("Settings updated successfully"))->success();
return back();
}
public function updateActivationSettings(Request $request)
{
$env_changes = ['FORCE_HTTPS', 'FILESYSTEM_DRIVER'];
if (in_array($request->type, $env_changes)) {
return $this->updateActivationSettingsInEnv($request);
}
$business_settings = BusinessSetting::where('type', $request->type)->first();
if($business_settings!=null){
if ($request->type == 'maintenance_mode' && $request->value == '1') {
if(env('DEMO_MODE') != 'On'){
Artisan::call('down');
}
}
elseif ($request->type == 'maintenance_mode' && $request->value == '0') {
if(env('DEMO_MODE') != 'On') {
Artisan::call('up');
}
}
$business_settings->value = $request->value;
$business_settings->save();
}
else{
$business_settings = new BusinessSetting;
$business_settings->type = $request->type;
$business_settings->value = $request->value;
$business_settings->save();
}
Artisan::call('cache:clear');
return '1';
}
public function updateActivationSettingsInEnv($request)
{
if ($request->type == 'FORCE_HTTPS' && $request->value == '1') {
$this->overWriteEnvFile($request->type, 'On');
if(strpos(env('APP_URL'), 'http:') !== FALSE) {
$this->overWriteEnvFile('APP_URL', str_replace("http:", "https:", env('APP_URL')));
}
}
elseif ($request->type == 'FORCE_HTTPS' && $request->value == '0') {
$this->overWriteEnvFile($request->type, 'Off');
if(strpos(env('APP_URL'), 'https:') !== FALSE) {
$this->overWriteEnvFile('APP_URL', str_replace("https:", "http:", env('APP_URL')));
}
}
elseif ($request->type == 'FILESYSTEM_DRIVER' && $request->value == '1') {
$this->overWriteEnvFile($request->type, 's3');
}
elseif ($request->type == 'FILESYSTEM_DRIVER' && $request->value == '0') {
$this->overWriteEnvFile($request->type, 'local');
}
return '1';
}
public function vendor_commission(Request $request)
{
return view('backend.sellers.seller_commission.index');
}
public function vendor_commission_update(Request $request){
foreach ($request->types as $key => $type) {
$business_settings = BusinessSetting::where('type', $type)->first();
if($business_settings!=null){
$business_settings->value = $request[$type];
$business_settings->save();
}
else{
$business_settings = new BusinessSetting;
$business_settings->type = $type;
$business_settings->value = $request[$type];
$business_settings->save();
}
}
Artisan::call('cache:clear');
flash(translate('Seller Commission updated successfully'))->success();
return back();
}
public function shipping_configuration(Request $request){
return view('backend.setup_configurations.shipping_configuration.index');
}
public function shipping_configuration_update(Request $request){
$business_settings = BusinessSetting::where('type', $request->type)->first();
$business_settings->value = $request[$request->type];
$business_settings->save();
Artisan::call('cache:clear');
flash(translate('Shipping Method updated successfully'))->success();
return back();
}
public function order_configuration(){
return view('backend.setup_configurations.order_configuration.index');
}
}