<?php

namespace FluentForm\App\Services;

use FluentForm\App\Helpers\Helper;
use FluentForm\App\Models\Form;

class GlobalSearchService
{

    public function get()
    {
        $links = [
            [
                'title' => 'Forms',
                'icon'  => '',
                'path'  => '?page=fluent_forms',
                'tags'  => ['all', 'forms', 'dashboard'],
            ],
            [
                'title' => 'Forms -> New Form',
                'icon'  => '',
                'path'  => '?page=fluent_forms#add=1',
                'tags'  => ['new forms', 'add forms', 'create'],
            ],
            [
                'title' => 'Entries',
                'icon'  => '',
                'path'  => '?page=fluent_forms_all_entries',
                'tags'  => ['all', 'entries'],
            ],
            [
                'title' => 'Support',
                'icon'  => '',
                'path'  => '?page=fluent_forms_docs',
                'tags'  => ['support', 'modules', 'docs'],
            ],
            [
                'title' => 'Integrations -> Modules',
                'icon'  => '',
                'path'  => '?page=fluent_forms_add_ons',
                'tags'  => ['all', 'integrations', 'modules'],
            ],
            [
                'title' => 'Global Settings > General',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings#payments/general_settings',
                'tags'  => [
                    'global',
                    'settings',
                    'general',
                    'layout',
                    'email summaries',
                    'failure',
                    'email notification',
                    'miscellaneous',
                ],
            ],
            [
                'title' => 'Global Settings > Security > reCaptcha',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings#re_captcha',
                'tags'  => ['global', 'security', 'recaptcha'],
            ],
            [
                'title' => 'Global Settings > Security > hCaptcha',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings#h_captcha',
                'tags'  => ['global', 'security', 'hcaptcha'],
            ],
            [
                'title' => 'Global Settings > Security > Turnstile',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings#turnstile',
                'tags'  => ['global', 'security', 'turnstile'],
            ],
            [
                'title' => 'Global Settings > Managers',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings#managers',
                'tags'  => ['global', 'permissions', 'managers'],
            ],
            [
                'title' => 'Global Settings > Configure Integration -> Mailchimp',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings#general-mailchimp-settings',
                'tags'  => ['global integrations', 'mailchimp'],
            ],
            [
                'title' => 'Tools > Import forms',
                'icon'  => '',
                'path'  => '?page=fluent_forms_transfer#importforms',
                'tags'  => ['tools', 'migration', 'transfer', 'import'],
            ],
            [
                'title' => 'Tools > Export Forms',
                'icon'  => '',
                'path'  => '?page=fluent_forms_transfer#exportsforms',
                'tags'  => ['tools', 'migration', 'transfer', 'export'],
            ],
            [
                'title' => 'Tools > Migrator',
                'icon'  => '',
                'path'  => '?page=fluent_forms_transfer#migrator',
                'tags'  => ['tools', 'migration', 'transfer', 'migrator'],
            ],
            [
                'title' => 'Tools > Activity Logs',
                'icon'  => '',
                'path'  => '?page=fluent_forms_transfer#activitylogs',
                'tags'  => ['tools', 'activity logs'],
            ],
            [
                'title' => 'Tools > API Logs',
                'icon'  => '',
                'path'  => '?page=fluent_forms_transfer#apilogs',
                'tags'  => ['tools', 'api logs'],
            ],
            [
                'title' => 'Payments',
                'icon'  => '',
                'path'  => '?page=fluent_forms_payment_entries',
                'tags'  => ['all', 'payments', 'entries'],
            ],
            [
                'title' => 'Global Settings > Payment > Settings',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings' . (Helper::isPaymentCompatible() ? '#payments/general_settings' : '&component=payment_settings%2F#/'),
                'tags'  => ['global', 'settings', 'payment'],
            ],
            [
                'title' => 'Global Settings > Payment > Payment Methods',
                'icon'  => '',
                'path'  => '?page=fluent_forms_settings' . (Helper::isPaymentCompatible() ? '#payments/payment_methods' : '&component=payment_settings%2F#/payment_methods'),
                'tags'  => ['global', 'settings', 'payment', 'method', 'stripe'],
            ],
        ];

        if (Helper::hasPro()) {
            $links = array_merge($links, [
                [
                    'title' => 'Global Settings > Double Opt-in',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#double_optin_settings',
                    'tags'  => ['global', 'security', 'double opt-in', 'optin'],
                ],
                [
                    'title' => 'Global Settings > Payment > Coupons',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings' . (Helper::isPaymentCompatible() ? '#payments/coupons' : '&component=payment_settings%2F#/coupons'),
                    'tags'  => ['global', 'settings', 'payment', 'coupons'],
                ],
                [
                    'title' => 'Global Settings > License',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings&component=license_page',
                    'tags'  => ['global', 'license'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Google Map Integration',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#google_maps_autocomplete',
                    'tags'  => ['global', 'integrations', 'google map integration'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Activecampaign',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-activecampaign-settings',
                    'tags'  => ['global integrations', 'activecampaign'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Campaign Monitor',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-campaign_monitor-settings',
                    'tags'  => ['global integrations', 'campaign monitor'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Constant Contact',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-constatantcontact-settings',
                    'tags'  => ['global integrations', 'constatantcontact', 'constant contact'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> ConvertKit',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-convertkit-settings',
                    'tags'  => ['global integrations', 'convertkit'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> GetResponse',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-getresponse-settings',
                    'tags'  => ['global integrations', 'getresponse'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Hubspot',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-hubspot-settings',
                    'tags'  => ['global integrations', 'hubspot'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> iContact',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-icontact-settings',
                    'tags'  => ['global integrations', 'icontact'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> MooSend',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-moosend-settings',
                    'tags'  => ['global integrations', 'moosend'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Platformly',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-platformly-settings',
                    'tags'  => ['global integrations', 'platformly'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> SendFox',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-sendfox-settings',
                    'tags'  => ['global integrations', 'sendfox'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> MailerLite',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-mailerlite-settings',
                    'tags'  => ['global integrations', 'mailerlite'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Twilio',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-sms_notification-settings',
                    'tags'  => ['global integrations', 'sms notification', 'twilio'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> GetGist',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-getgist-settings',
                    'tags'  => ['global integrations', 'getgist'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Google Sheet',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-google_sheet-settings',
                    'tags'  => ['global integrations', 'google sheet'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Trello',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-trello-settings',
                    'tags'  => ['global integrations', 'trello'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Drip',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-drip-settings',
                    'tags'  => ['global integrations', 'drip'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Brevo (formerly SendInBlue)',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-sendinblue-settings',
                    'tags'  => ['global integrations', 'sendinblue', 'brevo'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Automizy',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-automizy-settings',
                    'tags'  => ['global integrations', 'automizy'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Telegram Messenger',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-telegram-settings',
                    'tags'  => ['global integrations', 'telegram messenger'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Salesflare',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-salesflare-settings',
                    'tags'  => ['global integrations', 'salesflare'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> CleverReach',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-cleverreach-settings',
                    'tags'  => ['global integrations', 'cleverreach'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> ClickSend',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-clicksend_sms_notification-settings',
                    'tags'  => ['global integrations', 'clicksend', 'sms_notification'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Zoho CRM',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-zohocrm-settings',
                    'tags'  => ['global integrations', 'zoho crm'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Pipedrive',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-pipedrive-settings',
                    'tags'  => ['global integrations', 'pipedrive'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Salesforce',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-salesforce-settings',
                    'tags'  => ['global integrations', 'salesforce'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Amocrm',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-amocrm-settings',
                    'tags'  => ['global integrations', 'amocrm'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> OnePageCrm',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-onepagecrm-settings',
                    'tags'  => ['global integrations', 'onepagecrm'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Airtable',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-airtable-settings',
                    'tags'  => ['global integrations', 'airtable'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Mailjet',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-mailjet-settings',
                    'tags'  => ['global integrations', 'mailjet'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Insightly',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-insightly-settings',
                    'tags'  => ['global integrations', 'insightly'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Notion',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-notion-settings',
                    'tags'  => ['global integrations', 'notion'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Airtable v2',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-airtable_v2-settings',
                    'tags'  => ['global integrations', 'airtable'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> Constant Contact V3',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-constatantcontactv3-settings',
                    'tags'  => ['global integrations', 'constantcontactv3', 'constant contact'],
                ],
                [
                    'title' => 'Global Settings > Configure Integration -> OpenAI',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#general-openai-settings',
                    'tags'  => ['global integrations', 'openai', 'chatgpt', 'ai'],
                ],
            ]);
        }

        if (defined('FLUENTFORM_PDF_VERSION')) {
            $links = array_merge($links, [
                [
                    'title' => 'Global Settings > Configure Integration -> PDF Settings',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_settings#pdf_settings',
                    'tags'  => ['global integrations', 'pdf settings'],
                ],
                [
                    'title' => 'Integrations -> Fluent Forms PDF',
                    'icon'  => '',
                    'path'  => '?page=fluent_forms_add_ons&sub_page=fluentform_pdf',
                    'tags'  => ['pdf', 'modules'],
                ],
            ]);
        }

        $forms = Form::where('status', 'published')
            ->select(['id', 'title', 'type'])->get();
        if (count($forms) > 0) {
            foreach ($forms as $form) {
                $formSpecificLinks = [
                    [
                        'title' => "Forms > $form->title > Editor",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=editor",
                        'tags'  => ['editor', "$form->id", $form->title],
                    ],
                    [
                        'title' => "Forms > $form->title > Entries",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=entries#/?sort_by=DESC&type=&page=1",
                        'tags'  => ['entries', "$form->id", $form->title],
                    ],
                    [
                        'title' => "Forms > $form->title > Entries > Visual Reports",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=entries#/visual_reports",
                        'tags'  => ['entries', 'visual reports', "$form->id", $form->title],
                    ],
                    [
                        'title' => "Forms > $form->title > Settings & Integrations > Settings",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/",
                        'tags'  => ['settings and integrations', "$form->id", $form->title],
                    ],
                    [
                        'title' => "Forms > $form->title > Settings & Integrations > Slack",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/slack",
                        'tags'  => ['slack', "$form->id", $form->title],
                    ],
                    [
                        'title' => "Forms > $form->title > Settings & Integrations > Custom CSS/JS",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/custom-css-js",
                        'tags'  => ['custom', 'CSS/JS', 'css javascript', "$form->id", $form->title],
                    ],
                    [
                        'title' => "Forms > $form->title > Settings & Integrations > Configure Integrations",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/all-integrations",
                        'tags'  => ['configure integrations', "$form->id", $form->title],
                    ],
                    [
                        'title' => "Forms > $form->title > Preview",
                        'icon'  => '',
                        'type'  => 'preview',
                        'path'  => "?fluent_forms_pages=1&design_mode=1&preview_id=$form->id#ff_preview",
                        'tags'  => ['preview ', "$form->id", $form->title],
                    ],
                ];
                if (defined('FLUENTFORMPRO')) {
                    $formSpecificLinks = array_merge($formSpecificLinks, [
                        [
                            'title' => "Forms > $form->title > Settings & Integrations > Landing Page",
                            'icon'  => '',
                            'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/landing_pages",
                            'tags'  => ['landing pages', "$form->id", $form->title],
                        ],
                        [
                            'title' => "Forms > $form->title > Settings & Integrations > Conditional Confirmations",
                            'icon'  => '',
                            'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/conditional-confirmations",
                            'tags'  => ['conditional confirmations', "$form->id", $form->title],
                        ],
                        [
                            'title' => "Forms > $form->title > Settings & Integrations > Email Notifications",
                            'icon'  => '',
                            'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/email-settings",
                            'tags'  => ['email notifications', "$form->id", $form->title],
                        ],
                        [
                            'title' => "Forms > $form->title > Settings & Integrations > Zapier",
                            'icon'  => '',
                            'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/zapier",
                            'tags'  => ['zapier', "$form->id", $form->title],
                        ],
                        [
                            'title' => "Forms > $form->title > Settings & Integrations > Webhook",
                            'icon'  => '',
                            'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/webhook",
                            'tags'  => ['webhook', "$form->id", $form->title],
                        ],
                        [
                            'title' => "Forms > $form->title > Settings & Integrations > Quiz Settings",
                            'icon'  => '',
                            'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/quiz_settings",
                            'tags'  => ['quiz', "$form->id", $form->title],
                        ],
                    ]);
                }
                if (defined('FLUENTFORM_PDF_VERSION')) {
                    $formSpecificLinks[] = [
                        'title' => "Forms > $form->title > Settings & Integrations > PDF Feeds",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/pdf-feeds",
                        'tags'  => ['pdf feeds', "$form->id", $form->title],
                    ];
                }

                if (defined('FLUENTFORMPRO') && 'post' === $form->type) {
                    $formSpecificLinks[] = [
                        'title' => "Forms > $form->title > Settings & Integrations > Post Feeds",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=settings&sub_route=form_settings#/post-feeds",
                        'tags'  => ['post feeds', "$form->id", $form->title],
                    ];
                }
                if (Helper::isConversionForm($form->id)) {
                    $formSpecificLinks[] = [
                        'title' => "Forms > $form->title > Design",
                        'icon'  => '',
                        'path'  => "?page=fluent_forms&form_id=$form->id&route=conversational_design",
                        'tags'  => ['conversational design', "$form->id", $form->title],
                    ];
                    $formSpecificLinks[] = [
                        'title' => "Forms > $form->title > Conversational Preview",
                        'icon'  => '',
                        'type'  => 'preview',
                        'path'  => "?fluent-form=$form->id",
                        'tags'  => ['preview', 'conversational', "$form->id", $form->title],
                    ];
                }
                $links = array_merge($links, $formSpecificLinks);
            }
        }
        return [
            'links' => apply_filters('fluentform/global_search_links', $links),
            'admin_url' => get_admin_url(null, 'admin.php'),
            'site_url' => site_url(),
        ];
    }
}
