mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-09-21 06:14:06 -04:00
410 lines
17 KiB
PHP
410 lines
17 KiB
PHP
<?php
|
|
|
|
namespace Modules\GeneralSetting\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use App\Traits\GenerateSlug;
|
|
use Illuminate\Contracts\Support\Renderable;
|
|
use App\Traits\ImageStore;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Brian2694\Toastr\Facades\Toastr;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Modules\GeneralSetting\Entities\Currency;
|
|
use \Modules\GeneralSetting\Services\GeneralSettingService;
|
|
use App\Traits\SendSMS;
|
|
use App\Traits\SendMail;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Modules\GeneralSetting\Entities\BusinessSetting;
|
|
use Modules\Setup\Repositories\CityRepository;
|
|
use Modules\Setup\Repositories\CountryRepository;
|
|
use Modules\Setup\Repositories\StateRepository;
|
|
use Modules\UserActivityLog\Traits\LogActivity;
|
|
|
|
class GeneralSettingController extends Controller
|
|
{
|
|
use ImageStore, SendSMS, SendMail, GenerateSlug;
|
|
protected $generalSettingService;
|
|
|
|
public function __construct(GeneralSettingService $generalSettingService)
|
|
{
|
|
$this->middleware('maintenance_mode');
|
|
$this->generalSettingService = $generalSettingService;
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$data['others_activations'] = $this->generalSettingService->getVerificationNotification();
|
|
$data['vendor_configurations'] = $this->generalSettingService->getVendorConfigurationAll();
|
|
$data['sms_gateways'] = $this->generalSettingService->getSmsGateways();
|
|
$data['setting'] = $this->generalSettingService->getGeneralInfo();
|
|
$data['languages'] = $this->generalSettingService->getLanguages();
|
|
$data['dateformats'] = $this->generalSettingService->getDateFormats();
|
|
$data['timezones'] = $this->generalSettingService->getTimezones();
|
|
$data['countries'] = (new CountryRepository())->getActiveAll();
|
|
$data['states'] = (new StateRepository())->getByCountryId($data['setting']->default_country);
|
|
return view('generalsetting::index', $data);
|
|
}
|
|
|
|
public function activation_index()
|
|
{
|
|
$data['others_activations'] = $this->generalSettingService->getVerificationNotification();
|
|
$data['vendor_configurations'] = $this->generalSettingService->getVendorConfigurationAll();
|
|
$data['sms_gateways'] = $this->generalSettingService->getSmsGateways();
|
|
$data['setting'] = $this->generalSettingService->getGeneralInfo();
|
|
$data['languages'] = $this->generalSettingService->getLanguages();
|
|
$data['dateformats'] = $this->generalSettingService->getDateFormats();
|
|
$data['timezones'] = $this->generalSettingService->getTimezones();
|
|
return view('generalsetting::activation_index', $data);
|
|
}
|
|
|
|
public function sms_index()
|
|
{
|
|
$data['others_activations'] = $this->generalSettingService->getVerificationNotification();
|
|
$data['vendor_configurations'] = $this->generalSettingService->getVendorConfigurationAll();
|
|
$data['sms_gateways'] = $this->generalSettingService->getSmsGateways();
|
|
$data['setting'] = $this->generalSettingService->getGeneralInfo();
|
|
$data['languages'] = $this->generalSettingService->getLanguages();
|
|
$data['dateformats'] = $this->generalSettingService->getDateFormats();
|
|
$data['timezones'] = $this->generalSettingService->getTimezones();
|
|
return view('generalsetting::sms_index', $data);
|
|
}
|
|
|
|
public function smtp_index()
|
|
{
|
|
$data['others_activations'] = $this->generalSettingService->getVerificationNotification();
|
|
$data['vendor_configurations'] = $this->generalSettingService->getVendorConfigurationAll();
|
|
$data['sms_gateways'] = $this->generalSettingService->getSmsGateways();
|
|
$data['setting'] = $this->generalSettingService->getGeneralInfo();
|
|
$data['languages'] = $this->generalSettingService->getLanguages();
|
|
$data['dateformats'] = $this->generalSettingService->getDateFormats();
|
|
$data['timezones'] = $this->generalSettingService->getTimezones();
|
|
return view('generalsetting::smtp_index', $data);
|
|
}
|
|
|
|
public function company_index()
|
|
{
|
|
$data['others_activations'] = $this->generalSettingService->getVerificationNotification();
|
|
$data['vendor_configurations'] = $this->generalSettingService->getVendorConfigurationAll();
|
|
$data['sms_gateways'] = $this->generalSettingService->getSmsGateways();
|
|
$data['setting'] = $this->generalSettingService->getGeneralInfo();
|
|
$data['languages'] = $this->generalSettingService->getLanguages();
|
|
$data['dateformats'] = $this->generalSettingService->getDateFormats();
|
|
$data['timezones'] = $this->generalSettingService->getTimezones();
|
|
$data['countries'] = (new CountryRepository())->getActiveAll();
|
|
$data['states'] = (new StateRepository())->getByCountryId($data['setting']->country_id);
|
|
$data['cities'] = (new CityRepository())->getByStateId($data['setting']->state_id);
|
|
return view('generalsetting::company_index', $data);
|
|
}
|
|
|
|
|
|
public function update(Request $request)
|
|
{
|
|
if ($request->has('status')) {
|
|
$request->validate([
|
|
"site_title" => "required|string|max:30",
|
|
"file_supported" => "nullable|string",
|
|
"copyright_text" => "nullable|string",
|
|
"language_id" => "nullable",
|
|
"date_format" => "required",
|
|
"currency_id" => "required",
|
|
"time_zone" => "nullable",
|
|
"preloader" => "required",
|
|
"country_id" => "required",
|
|
"state_id" => "required",
|
|
"city_id" => "required",
|
|
"invoice_prefix" => "nullable",
|
|
"agent_commission_type" => "nullable",
|
|
"sale_margin_price" => "nullable",
|
|
"site_logo" => "nullable|mimes:jpg,png,jpeg",
|
|
"favicon_logo" => "nullable|mimes:jpg,png,jpeg",
|
|
"shop_link_banner" => "nullable|mimes:jpg,png,jpeg",
|
|
"latitude" => "nullable|numeric",
|
|
"longitude" => "nullable|numeric",
|
|
"facebook" => "nullable|string",
|
|
"twitter" => "nullable|string",
|
|
"instagram" => "nullable|string",
|
|
"linkedin" => "nullable|string",
|
|
]);
|
|
} else {
|
|
}
|
|
if($request->has('site_title')){
|
|
$exsist_user = User::whereHas('role', function($q){
|
|
return $q->where('type', 'seller');
|
|
})->where('slug', $this->productSlug($request->site_title))->first();
|
|
if($exsist_user){
|
|
$exsist_user->slug = $exsist_user->slug.'-'.$exsist_user->id;
|
|
$exsist_user->save();
|
|
}
|
|
$superadmin = User::whereHas('role', function($q){
|
|
return $q->where('type', 'superadmin');
|
|
})->first();
|
|
if($superadmin){
|
|
$superadmin->slug = $this->productSlug($request->site_title);
|
|
$superadmin->save();
|
|
}
|
|
}
|
|
|
|
if ($request->favicon_logo != null) {
|
|
$url = $this->saveSettingsImage($request->favicon_logo,50,50);
|
|
$this->deleteImage(app('general_setting')->favicon);
|
|
$this->savePWAIcon($request->favicon_logo);
|
|
$request->merge(["favicon" => $url]);
|
|
}
|
|
if ($request->site_logo != null) {
|
|
$url = $this->saveSettingsImage($request->site_logo,50, 193);
|
|
$this->deleteImage(app('general_setting')->logo);
|
|
$this->savePWASplash($request->site_logo);
|
|
$request->merge(["logo" => $url]);
|
|
}
|
|
if ($request->lazyload_image != null) {
|
|
if(app('theme')->folder_path == 'amazy'){
|
|
$json = file_get_contents(storage_path('/app/amazy_img.json'));
|
|
$json = json_decode($json, true);
|
|
$prev_name = $json['amazy'];
|
|
$this->deleteImage($prev_name);
|
|
$target_dir = themeWithSlash('')."img/";
|
|
$file= $request->file('lazyload_image');
|
|
$filename= $target_dir.uniqid().'.'.$file->clientExtension();
|
|
$file-> move(public_path($target_dir),asset_path($filename));
|
|
$newjson = [];
|
|
foreach($json as $key => $data){
|
|
if($key == 'amazy'){
|
|
$newjson[$key] = $filename;
|
|
}else{
|
|
$newjson[$key] = $data;
|
|
}
|
|
}
|
|
// Write File
|
|
$newJsonString = json_encode($newjson, JSON_PRETTY_PRINT);
|
|
file_put_contents(storage_path('/app/amazy_img.json'), stripslashes($newJsonString));
|
|
}else{
|
|
$json = file_get_contents(storage_path('/app/default_img.json'));
|
|
$json = json_decode($json, true);
|
|
$prev_name = $json['default'];
|
|
|
|
$this->deleteImage($prev_name);
|
|
$target_dir = themeWithSlash('')."img/";
|
|
$file= $request->file('lazyload_image');
|
|
$filename= $target_dir.uniqid().'.'.$file->clientExtension();
|
|
$file-> move(public_path($target_dir),asset_path($filename));
|
|
$newjson = [];
|
|
foreach($json as $key => $data){
|
|
if($key == 'default'){
|
|
$newjson[$key] = $filename;
|
|
}else{
|
|
$newjson[$key] = $data;
|
|
}
|
|
}
|
|
// Write File
|
|
$newJsonString = json_encode($newjson, JSON_PRETTY_PRINT);
|
|
file_put_contents(storage_path('/app/default_img.json'), stripslashes($newJsonString));
|
|
}
|
|
|
|
}
|
|
$shopLinkUrl = app('general_setting')->shop_link_banner;
|
|
if ($request->shop_link_banner != null) {
|
|
$shopLinkUrl = $this->saveSettingsImage($request->shop_link_banner,350,1920);
|
|
$request->merge(["shop_link_banner" => $shopLinkUrl]);
|
|
}
|
|
if ($request->currency_id != null) {
|
|
|
|
$currency = Currency::findOrFail($request->currency_id);
|
|
$request->merge(["currency" => $currency->id, "currency_symbol" => $currency->symbol, "currency_code" => $currency->code, "currency_convert_rate" => $currency->convert_rate]);
|
|
|
|
$users = User::all();
|
|
foreach($users as $user){
|
|
$user->currency_id = $currency->id;
|
|
$user->currency_code = $currency->code;
|
|
$user->save();
|
|
}
|
|
}
|
|
if($request->time_zone != null){
|
|
putEnvConfigration('TIME_ZONE',$request->time_zone);
|
|
}
|
|
if($request->has('decimal_limit')){
|
|
$request->merge(['decimal_limit' => intval(round($request->decimal_limit))]);
|
|
}
|
|
if($request->has('pwa_app_name') && !empty($request->pwa_app_name)){
|
|
putEnvConfigration('PWA_NAME', $request->pwa_app_name);
|
|
}
|
|
if (isModuleActive('Subscription')) {
|
|
app(\Modules\Subscription\Http\Controllers\SettingController::class)->updateOption('customer_subscription', $request->customer_subscription);
|
|
}
|
|
|
|
|
|
try {
|
|
$this->generalSettingService->update($request->except("_token", "favicon_logo", "site_logo", "shop_link_banner", "currency_id", "status"));
|
|
$this->generalSettingService->updateShopLink($shopLinkUrl);
|
|
Artisan::call('optimize:clear');
|
|
|
|
if ($request->has('status')) {
|
|
return back();
|
|
} else {
|
|
|
|
LogActivity::successLog('Updated Successfully');
|
|
Toastr::success(__('common.updated_successfully'), __('common.success'));
|
|
return back();
|
|
}
|
|
} catch (\Exception $e) {
|
|
|
|
LogActivity::errorLog($e->getMessage());
|
|
Toastr::error(__('common.Something Went Wrong'));
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function update_activation_status(Request $request)
|
|
{
|
|
$request->validate([
|
|
'id' => 'required'
|
|
]);
|
|
try {
|
|
$this->generalSettingService->update_activation($request->only('id', 'status'));
|
|
LogActivity::successLog('General activation Updated !!!');
|
|
return 1;
|
|
} catch (\Exception $e) {
|
|
LogActivity::errorLog($e->getMessage());
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
public function sms_gateway_credentials_update(Request $request)
|
|
{
|
|
if($request->input('action') == 'other'){
|
|
$request->validate([
|
|
'url' => 'required',
|
|
'request_method' => 'required',
|
|
'sms_gateway_id' => 'required'
|
|
]);
|
|
}else{
|
|
$request->validate([
|
|
'sms_gateway_id' => 'required'
|
|
]);
|
|
}
|
|
|
|
try {
|
|
|
|
$this->generalSettingService->update_sms_activation($request->except("_token"));
|
|
session()->forget('g_set');
|
|
session()->forget('smtp_set');
|
|
|
|
session()->put('sms_set', '1');
|
|
Toastr::success(__('common.updated_successfully'), __('common.success'));
|
|
LogActivity::successLog('sms gateway credential update successful.');
|
|
return back();
|
|
} catch (\Exception $e) {
|
|
LogActivity::errorLog($e->getMessage());
|
|
Toastr::error(__('common.Something Went Wrong'));
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
public function smtp_gateway_credentials_update(Request $request)
|
|
{
|
|
$request->validate([
|
|
'mail_gateway' => 'required'
|
|
]);
|
|
try {
|
|
$this->generalSettingService->update_smtp_gateway_credentials($request->except("_token"));
|
|
|
|
session()->forget('g_set');
|
|
session()->forget('sms_set');
|
|
|
|
session()->put('smtp_set', '1');
|
|
Toastr::success(__('common.updated_successfully'), __('common.success'));
|
|
LogActivity::successLog('SMTP gateway credential successful.');
|
|
return back();
|
|
} catch (\Exception $e) {
|
|
LogActivity::errorLog($e->getMessage());
|
|
Toastr::error(__('common.error_message'), __('common.error'));
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
public function test_mail_send(Request $request)
|
|
{
|
|
$request->validate([
|
|
'email' => 'required',
|
|
'content' => 'required'
|
|
]);
|
|
|
|
try {
|
|
$mail = $this->sendMailTest($request->email, "Test Mail", $request->content);
|
|
if ($mail === true) {
|
|
LogActivity::successLog('mail sent successful.');
|
|
Toastr::success(__('general_settings.mail_has_been_sent_successfully'), __('common.success'));
|
|
return back();
|
|
}elseif($mail === 'failed'){
|
|
Toastr::error(__('common.please_configure_mail_settings_first'), __('common.success'));
|
|
}else{
|
|
Toastr::error(__('common.Something Went Wrong'));
|
|
}
|
|
|
|
return back();
|
|
} catch (\Exception $e) {
|
|
LogActivity::errorLog($e->getMessage());
|
|
Toastr::error(__('common.Something Went Wrong'));
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
public function sms_send_demo(Request $request)
|
|
{
|
|
$request->validate([
|
|
'number' => 'required',
|
|
'message' => 'required'
|
|
]);
|
|
try {
|
|
$response = $this->sendSMS($request->number, $request->message);
|
|
if($response){
|
|
if(BusinessSetting::where('type', 'TextLocal')->first()->status == 1){
|
|
$response = json_decode($response);
|
|
|
|
if($response->status == 'failure'){
|
|
Toastr::error($response->errors[0]->message, $response->status);
|
|
LogActivity::errorLog('sms send failled');
|
|
}
|
|
}else{
|
|
Toastr::success(__('common.sms_has_been_sent_successfully'), __('common.success'));
|
|
LogActivity::successLog('sms send successful.');
|
|
}
|
|
}elseif(!$response){
|
|
Toastr::error(__('Failed to send sms.'), __('common.error'));
|
|
}
|
|
return back();
|
|
} catch (\Exception $e) {
|
|
LogActivity::errorLog($e->getMessage());
|
|
Toastr::error($e->getMessage());
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
public function import()
|
|
{
|
|
$sql_path = base_path('static_sql/custom.sql');
|
|
DB::unprepared(file_get_contents($sql_path));
|
|
}
|
|
|
|
public function footer_update(Request $request)
|
|
{
|
|
try {
|
|
$this->generalSettingService->updateEmailFooterTemplate($request->except('_token'));
|
|
|
|
session()->forget('g_set');
|
|
session()->forget('smtp_set');
|
|
session()->forget('sms_set');
|
|
|
|
Toastr::success(__('setting.Email Footer has been updated Successfully'));
|
|
LogActivity::successLog('footer update successful.');
|
|
return back();
|
|
} catch (\Exception $e) {
|
|
LogActivity::errorLog($e->getMessage());
|
|
Toastr::error(__('common.Something Went Wrong'));
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
}
|