<?php
require_once APPLICATION_PATH . '/modules/alw/views/helpers/Loadingimage.php';

use Orchard\Feature\Feature;
use Orchard\HttpClient\OwsAssetsServiceClient;
use Orchard\HttpClient\OwsUsersServiceClient;
use Orchard\FeatureFlags\FeatureService;
use Orchard\FeatureFlags\Context\AccountContext;
use Orchard\Helper\ReactApp as ReactHelper;

$logger = Zend_Registry::get('applicationLoggerWS');
$oauthConfig = Zend_Registry::get('oauthconfig');
$awsConfigs = yaml_parse_file(APPLICATION_PATH . '/configs/aws.yml');
$owsFeaturesServiceClient = new FeatureService($logger);

$sessionData = new Zend_Session_Namespace('Alw');

$vendorId = $sessionData->S_VENDOR_ID;
$vendorOwner = $sessionData->S_OWNER;
$vendorContactId = $sessionData->S_VEND_CONTACT_ID;
$vendorLocale = $sessionData->S_LOCALE;
$contactInfo = Model_VendContact::getContactFromID($vendorContactId);
$vendorContractData = Model_VendorContract::getLatestContractByVendorId($vendorId);
$vendor_info = Model_Vendor::getVendorByVendorID($vendorId);
$userVendorContext = AccountContext::fromLegacy((string)$vendorContactId, 'alw', $vendorId);


echo $this->partial('partials/auth0-session-keepalive.phtml', [
    'configs' => yaml_parse_file(APPLICATION_PATH . '/configs/auth0.yml')
]);

$alwBannerDisplay = Feature::isEnabled('alw_banner_display', 'enabled');

$helpcenterUrl = Zend_Registry::get('configuration')->helpcenterUrl;

$isFullReactHeaderEnabled = $owsFeaturesServiceClient->isFeatureVariantActive('workstation_use_full_react_header', 'enabled', $userVendorContext);
$loadImage = new Alw_View_Helper_Loadingimage();
$isHelpcenterAutoLoginEnabled = $owsFeaturesServiceClient->isFeatureVariantActive('helpcenter_auto_login', 'enabled', $userVendorContext);
$isReactifiedFeatureFmPageEnabled = $owsFeaturesServiceClient->isFeatureVariantActive('reactified_featurefm_page', 'enabled', $userVendorContext);
$isWorkstationInsightsLinkEnabled = $owsFeaturesServiceClient->isFeatureVariantActive('workstation_insights_link', 'enabled', $userVendorContext);
$isWorkstationAnalyticsDeprecated = $owsFeaturesServiceClient->isFeatureVariantActive('deprecate_analytics', 'enabled', $userVendorContext);

$isBrandingEnabled = $owsFeaturesServiceClient->isFeatureVariantActive('orchard_suite_use_branding', 'enabled', AccountContext::fromLegacy((string)$vendorContactId, 'alw'));

$owsAssetsServiceClient = new OwsAssetsServiceClient($logger);

$reactHelper = new ReactHelper($sessionData, $awsConfigs, $oauthConfig, 'frontend-workstation');

$frontendWorkstationAppParams = null;
$frontendWorkstationAppParams = $reactHelper->initReactView(
    'frontendWorkstationBundle',
    'php.bundle.js',
    'initReactPhpApplications',
    'root',
    null, null, false, false, true, false
);
$frontendWorkstationAppParams['appStyling'] = str_replace("frontend-workstation.css", "frontend-workstation.php.css", $frontendWorkstationAppParams['appStyling']);

$insightsUrl = "https://insights.theorchard.com";
$brand = 'orchard';
if ($isWorkstationInsightsLinkEnabled) {
    if ($isBrandingEnabled) {
        $awalDomains = array('qaawal.com', 'prodawal.com', 'awal.com'); // 'devorch.com'

        $appUrl = parse_url(isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']);
        $fullDomain = $insightsUrl;
        if (isset($appUrl['host']))
            $fullDomain = $appUrl['host'];
        elseif (isset($appUrl['path']))
            $fullDomain = $appUrl['path'];
        $mainDomain = implode(".", array_slice(explode('.', $fullDomain), -2, 2, true));

        $brand = in_array($mainDomain, $awalDomains) ? 'awal' : 'orchard'; // Defaults to orchard
    }

    $brandEnvDomain = "theorchard.com";
    if ($brand === 'awal')
        $brandEnvDomain = APPLICATION_ENV === "production" ? "awal.com" : "qaawal.com";
    else
        $brandEnvDomain = APPLICATION_ENV === "production" ? "theorchard.com" : "qaorch.com";

    $insightsUrl = "https://insights.". $brandEnvDomain;
}

$linkedAccounts = [];
if (isset($sessionData->LINKED_ACCOUNTS)) {
    $linkedAccounts = $sessionData->LINKED_ACCOUNTS;
} else {
    $owsUsers = new OwsUsersServiceClient($logger);
    $linkedAccounts = $owsUsers->getLinkedAccounts($vendorContactId);
    $sessionData->LINKED_ACCOUNTS = $linkedAccounts;
}
if ($isHelpcenterAutoLoginEnabled) {
    $helpcenterUrl = '/helpcenter/';
} else if (!empty($_SESSION['S_LANGUAGE'])) {
    $workstationLanguage = $_SESSION['S_LANGUAGE'];
    $helpcenterUrl = $helpcenterUrl . '?lang=' . $workstationLanguage;
}
$company = isset($vendor_info->company)
    ? $vendor_info->company
    : '';
$firstName = isset($contactInfo->Contact->contact_first_name)
    ? $contactInfo->Contact->contact_first_name
    : '';
$lastName = isset($contactInfo->Contact->contact_last_name)
    ? $contactInfo->Contact->contact_last_name
    : '';
$privilege = new Web_Validate_Checkroleresourceprivilege();
$userObj = Zend_Registry::get("UserObj");
$controller = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
$action = Zend_Controller_Front::getInstance()->getRequest()->getActionName();
$classActiveIndex = '';
$classActiveAnalytics = '';
$classActiveAccounting = '';
$classActiveMarketing = '';
// Add the list of action controller where active in main nav is not required.
$whiteListArray = array('index/index');
switch ($controller) {
    case 'index':
    case 'analytics':
    case 'inventory':
        $classActiveAnalytics = 'active';
        break;
    case 'accounting':
        $classActiveAccounting = 'active';
        break;
    case 'marketing':
        $classActiveMarketing = 'active';
        break;
    case 'artist':
    case 'conflict':
    case 'project':
        $classActiveIndex = 'active';
        break;
}

if (!empty($vendorId)) {
    $vendorIconImageUrl = $owsAssetsServiceClient->getImageAssets($vendorId, 'vendor', 'icon');
    if ($vendorIconImageUrl) {
        if (!$sessionData->vendor_icon_path) {
            $sessionData->vendor_icon_path = $vendorIconImageUrl;
        }
    } else {
        $vendorIcon = Model_VendorIcon::getVendorIconByVendorID($vendorId);
        if (isset($vendorIcon->image_asset_id)) {
            if (!$sessionData->vendor_icon_path) {
                //get the path once and save in session as ManageImageAssets loads it from DB each time
                $serviceObj = new Service_ManageImageAssets();
                $imagePath = $serviceObj->getImage($vendorIcon->image_asset_id);
                if ($imagePath) {
                    $sessionData->vendor_icon_path = $imagePath;
                }
            }
        }
    }
}
?>
<?php if ($alwBannerDisplay) {
    $filmTvUser = Zend_Registry::get('UserObj')->isWorkstationExperienceFilmTV();
    $vendorIdentifier = $vendor_info->label_identifier; //can also be empty or null
    if (!$filmTvUser && ($vendorIdentifier != 'Film' && $vendorIdentifier != 'TV')) { ?>
        <?=$this->render('_topbanner.phtml') ?>
    <?php }
}
$logoHeaderAwalImagePath = $loadImage->getCdnImagePath('redesign/logo-header-awal.svg');
$logoHeaderImagePath = $loadImage->getCdnImagePath('redesign/logo-header.svg');
?>

<header id="header" class="header-main fix-width-grid">
    <div id="root" class="hidden"></div>

    <?php if ($isFullReactHeaderEnabled) { ?>
    <div id="react_header_app" class="fix-width-grid"></div>
        <link href=<?=$frontendWorkstationAppParams['appStyling']?> media="all" rel="stylesheet" type="text/css">
        <script type="text/javascript" src=<?=$frontendWorkstationAppParams['jsUtilsBootstrapUrl']?>></script>
        <script type="text/javascript">
            var initFunction = <?=json_encode($frontendWorkstationAppParams['initialization'][0]) ?>;
            var initAppOptions = <?=json_encode($frontendWorkstationAppParams['initialization'][1]) ?>;
            var divId = <?=json_encode($frontendWorkstationAppParams['divId']) ?>;

            window.JsUtilsBootstrap.initApplication(
                {
                    ...initAppOptions,
                    grassSession: {
                        ...initAppOptions.grassSession,
                        on_set_token: (refreshedToken) => {
                            if (window.localStorage.getItem('grassSessionToken'))
                                window.localStorage.setItem('grassSessionToken', refreshedToken);
                        }
                    }
                },
                <?="['" . implode("', '", array_merge([$frontendWorkstationAppParams['script']], $frontendWorkstationAppParams['additionalScripts'])) . "']"?>,
                function() { <?='window[initFunction](document.getElementById(divId), initAppOptions);' ?> }
            );
        </script>
    <?php } else { ?>
    <div id="old_header_container" class="container fix-width-grid">
        <div class="row">
            <div class="col-xs-12">
                <a href="/index2" class="logo noscript">
                    <img
                        class="icon"
                        src="<?php echo (isset($sessionData->vendor_icon_path)
                            ? $sessionData->vendor_icon_path
                            : ($brand === 'awal'
                                ? $logoHeaderAwalImagePath
                                : $logoHeaderImagePath));
                            ?>"
                    >
                </a>
                <?php if ($privilege->isValid(array('resource' => 'index', 'privilege' => 'viewexareleases'))) { ?>
                    <div id="global_search_app"></div>
                    <link href=<?=$frontendWorkstationAppParams['appStyling']?> media="all" rel="stylesheet" type="text/css">
                    <script type="text/javascript" src=<?=$frontendWorkstationAppParams['jsUtilsBootstrapUrl']?>></script>
                    <script type="text/javascript">
                        var initFunction = <?=json_encode($frontendWorkstationAppParams['initialization'][0]) ?>;
                        var initAppOptions = <?=json_encode($frontendWorkstationAppParams['initialization'][1]) ?>;
                        var divId = <?=json_encode($frontendWorkstationAppParams['divId']) ?>;

                        window.JsUtilsBootstrap.initApplication(
                            initAppOptions,
                            <?="['" . implode("', '", array_merge([$frontendWorkstationAppParams['script']], $frontendWorkstationAppParams['additionalScripts'])) . "']"?>,
                            function() { <?='window[initFunction](document.getElementById(divId), initAppOptions);' ?> }
                        );
                    </script>
                <?php } ?>
                <nav class="hidden-print">
                    <?php if ($privilege->isValid(array('resource' => 'index', 'privilege' => 'viewexareleases'))) { ?>
                        <a class="<?php echo $classActiveIndex; ?>" href="/catalog"><?=$this->translate("Catalog")?></a>
                    <?php } ?>
                    <?php if ($userObj->isAllowed('', '', 'navanalytic') && $privilege->isValid(array('resource' => 'analytics'))) { ?>
                        <?php if ($isWorkstationAnalyticsDeprecated) { ?>
                            <a class="<?php echo $classActiveAnalytics; ?>" href="/analytics/splash"><?=$this->translate("Analytics")?></a>
                        <?php }  else { ?>
                            <?php if ($userObj->isAllowed(null, null, 'uisource_of_stream')) { ?>
                                <a class="<?php echo $classActiveAnalytics; ?>" href="/analytics/engagement"><?=$this->translate("Analytics")?></a>
                            <?php } else { ?>
                                <a class="<?php echo $classActiveAnalytics; ?>" href="/analytics/overview"><?=$this->translate("Analytics")?></a>
                            <?php } ?>
                        <?php } ?>
                    <?php } ?>
                    <?php if ($userObj->isAllowed('', '', 'navaccounting') && $privilege->isValid(array('resource' => 'accounting'))) { ?>
                        <a class="<?php echo $classActiveAccounting; ?>" href="/accounting"><?=$this->translate("Accounting")?></a>
                    <?php } ?>
                    <?php if ($userObj->isAllowed('', '', 'navmarketplace') && $privilege->isValid(array('resource' => 'marketing', 'privilege' => 'allapplications'))) { ?>
                        <?php if ($isReactifiedFeatureFmPageEnabled) { ?>
                            <a class="<?php echo $classActiveMarketing; ?>" href="/marketing2"><?=$this->translate('Marketing')?></a>
                        <?php } else { ?>
                            <a class="<?php echo $classActiveMarketing; ?>" href="/marketing"><?=$this->translate('Marketing')?></a>
                        <?php } ?>
                    <?php } ?>
                    <?php if ($isWorkstationInsightsLinkEnabled) { ?>
                        <a href="<?php echo $insightsUrl; ?>" class="nav-link Header-insights Header-navItem" target="_blank" rel="noopener noreferrer" onClick="window.analytics.track('click', { category: 'Workstation Header Insights Link' })">
                            <svg class="Header-insights-external-link" preserveAspectRatio="none">
                                <symbol id="icon-external-link" viewBox="0 0 16 16">
                                    <g stroke="none" stroke-width="1" fill-rule="evenodd">
                                        <g id="External-Link">
                                            <polygon id="Path-13" points="7.5 3 13 3 13 8.5 11 6.5 7.5 10 6 8.5 9.5 5"></polygon>
                                            <polygon id="Path-5" points="6 3 3 3 3 13 13 13 13 10 11 10 11 11 5 11 5 5 6 5"></polygon>
                                        </g>
                                    </g>
                                </symbol>
                                <use xlink:href="#icon-external-link"></use>
                            </svg>
                            <span class="Header-insights-text"><?=$this->translate('Insights')?></span>
            </a>
            <?php } ?>
                </nav>
                <div class="pull-right">
                    <div id="app_switcher_app"></div>
                    <?php if ($privilege->isValid(array('resource' => 'helpcenter'))) { ?>
                        <a href="<?php echo $helpcenterUrl; ?>" class="help hidden-print"><?=$this->translate('Help')?></a>
                    <?php } ?>
                </div>
                <div class="dropdown account pull-right">
                    <button type="button" class="dropdown-toggle pull-left" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                            <span class="right-space"> <?=$firstName?> <?=$lastName?></span><br>
                            <?php if (Zend_Registry::get('UserObj')->isAllowed('', '', 'accountcardsubaccountname')){?>
                                <span><b id="subaccount-name"><?=$sessionData->subaccount_name?></b>: <?=$contactInfo->subaccount_id?></span>
                            <?php } else { ?>
                                <span><b><?=$company?></b>: <?=$vendorId?></span>
                            <?php } ?>
                            <img
                                src="<?php echo $loadImage->getCdnImagePath('redesign/downarrow-sm.svg');
                                    ?>"
                            >
                    </button>
                    <ul class="dropdown-menu auth0-dropdown-menu">
                        <?php if (count($linkedAccounts)) { ?>
                            <li class="linked-vendor-dropown-item">
                                <a class="current-vendor" href="/account/myprofile">
                                    <?php if (Zend_Registry::get('UserObj')->isAllowed('', '', 'accountcardsubaccountname')) { ?>
                                        <div class="subaccount-dropdown-item">
                                            <span class="subaccount-parent-name">
                                                <?=$company?>
                                            </span>
                                            <span>
                                                <b><?=$sessionData->subaccount_name?></b>: <?=$contactInfo->subaccount_id?>
                                            </span>
                                        </div>
                                    <?php } else { ?>
                                        <div><b><?=$company?></b>: <?=$vendorId?></div>
                                    <?php } ?>
                                    <div class="checkmark-success"></div>
                                </a>
                            </li>
                            <?php foreach ($linkedAccounts as $linkedAccount) { ?>
                                <li class="linked-vendor-dropown-item">
                                    <a href="/login/switch?user=<?=$linkedAccount['vc_id']?>">
                                        <?php if (!empty($linkedAccount['subaccount_id'])) { ?>
                                            <div class="subaccount-dropdown-item">
                                                <span class="subaccount-parent-name">
                                                    <?=$linkedAccount['company']?>
                                                </span>
                                                <span>
                                                    <b><?=$linkedAccount['subaccount_name']?></b>: <?=$linkedAccount['subaccount_id']?>
                                                </span>
                                            </div>
                                        <?php } else { ?>
                                            <b><?=$linkedAccount['company']?></b>: <?=$linkedAccount['vendor_id']?>
                                        <?php } ?>
                                    </a>
                                </li>
                            <?php } ?>
                        <?php } ?>
                        <li><a href="/account/myprofile"><?=$this->translate('My account')?></a></li>
                        <li><a href="/logout/v2" class="logout-link"><?=$this->translate('Log out')?></a></li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
    <?php } ?>
</header>
