HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode-site/app/Http/Controllers/Controller.php
<?php

namespace App\Http\Controllers;

use App\Helpers\GeoHelper;
use App\Helpers\PhoneHelper;
use App\Http\Requests\LpIfxForm;
use App\Http\Requests\LpSaasForm;
use App\Http\Requests\SaasForm;
use App\Http\Requests\SaasRequestForm;
use App\Http\Requests\WlCfdBrokerRequestForm;
use App\Jobs\SendGridAddContactTiListJob;
use App\Models\Feedback;
use App\Models\PipedriveQueue;
use App\Repository\ActiveCampaignQueueRepository;
use App\Repository\BitrixQueueRepository;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{

    use ValidatesRequests;

    private static array $businessIdentifications = [
        '1' => 'Brokerage business',
        '2' => 'Introducing broker',
        '3' => 'Affiliate',
        '4' => 'Trader',
        '5' => 'Entrepreneur',
        '6' => 'Other',
    ];

    private static array $initialInvestments = [
        '0' => '$0',
        '1' => '$1000',
        '2' => '$5000',
        '3' => '$10000',
        '4' => '$25000',
        '5' => '$50000',
        '6' => 'More then $50000',
    ];

    private static array $regions = [
        '1' => 'North America',
        '2' => 'Europe',
        '3' => 'Asia-Pacific',
        '4' => 'South America',
        '5' => 'Africa',
    ];

    private function submit($data, $requestData): JsonResponse
    {
        $data['phone'] = '+' . PhoneHelper::trim($data['phone']);
        dispatch(new SendGridAddContactTiListJob($requestData))->afterResponse();

        $additional = array_diff($requestData, $data);
        unset($additional['referrer']);
        if (!empty($additional)) {
            $data = array_merge($data, $additional);
        }

        $data['business_identification'] = '';
        if (isset($data['options'])) {
            $data['business_identification'] = self::$businessIdentifications[$data['options']];
            unset($data['options']);
        }
        $data['initial_investment'] = '';
        if (isset($data['range'])) {
            $data['initial_investment'] = self::$initialInvestments[$data['range']];
            unset($data['range']);
        }
        $data['region'] = isset($data['region']) ? (self::$regions[$data['region']] ?? '') : '';

        $data['country_code'] = (new GeoHelper())->getGeo();

        $feedback = new Feedback($data);
        $success = $feedback->send();

        unset($data['g-recaptcha-response']);
        unset($data['terms_agree']);
        $data = array_filter($data, fn($item) => !empty($item));

        if (!empty($data['message'])) {
            $data['message'] = htmlentities($data['message']);
        }

        $pipedriveQueue = new PipedriveQueue(['data' => json_encode($data)]);
        $pipedriveQueue->save();

        BitrixQueueRepository::create($data);
        ActiveCampaignQueueRepository::create($data);

        if ($success === true) {
            return response()->json(['success' => true]);
        }

        return response()->json(['success' => false, 'error' => $success]);
    }

    public function saas(SaasForm $request): JsonResponse
    {
        $validated = $request->validated();

        $validated['last_name'] = $validated['last_name'] ?? '';

        return $this->submit($validated, $request->all());
    }

    public function lpIfx(LpIfxForm $request): JsonResponse
    {
        $validated = $request->validated();

        $validated['last_name'] = '';

        return $this->submit($validated, $request->all());
    }

    public function lsSaas(LpSaasForm $request): JsonResponse
    {
        $validated = $request->validated();

        $validated['last_name'] = '';
        $validated['message'] = '';

        return $this->submit($validated, $request->all());
    }

    public function saasRequestFormSubmit(SaasRequestForm $request): JsonResponse|RedirectResponse
    {
        $validated = $request->validated();

        $validated['last_name'] = '';
        $validated['referrer'] = empty($validated['landing_url']) ? '/lp/saas_request' : $validated['landing_url'];

        return $this->submit($validated, $request->all());
    }

    public function wlCfdBroker(WlCfdBrokerRequestForm $request): JsonResponse|RedirectResponse
    {
        $validated = $request->validated();

        $validated['last_name'] = '';
        $validated['message'] = '_';

        return $this->submit($validated, $request->all());
    }

    public function health(BitrixQueueRepository $bitrixQueueRepository): JsonResponse
    {
        $count = $bitrixQueueRepository->getErrorsCount();
        if (empty($count)) {
            return response()->json(['state' => 'ok', 'error' => '']);
        }

        return response()->json(['state' => 'error', 'error' => $count]);
    }

}