package com.moonmiles.bridge.apm.configuration;

import com.facebook.react.bridge.ReactApplicationContext;
import com.moonmiles.apmservices.configuration.APMServicesConfig;
import com.moonmiles.bridge.apm.abs.APMReactContextBaseJavaModule;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Vincent on 08/01/2018.
 */

public class APMServicesConfigModule extends APMReactContextBaseJavaModule
{
    private static final String APM_API_VERSION                           = "APM_API_VERSION";
    private static final String APM_URL_API_PROD                          = "APM_URL_API_PROD";
    private static final String APM_URL_API_SANDBOX                       = "APM_URL_API_SANDBOX";
    private static final String APM_URL_SITE_APPSMILES                    = "APM_URL_SITE_APPSMILES";
    private static final String APM_PARTNER_LEVEL_INITIAL                 = "APM_PARTNER_LEVEL_INITIAL";
    private static final String APM_PARTNER_LEVEL_STANDARD                = "APM_PARTNER_LEVEL_STANDARD";
    private static final String APM_PARTNER_LEVEL_PREMIUM                 = "APM_PARTNER_LEVEL_PREMIUM";
    private static final String APM_K_USER_GENDER_MME                     = "APM_K_USER_GENDER_MME";
    private static final String APM_K_USER_GENDER_M                       = "APM_K_USER_GENDER_M";
    private static final String APM_GIFT_TYPE_TEXT                        = "APM_GIFT_TYPE_TEXT";
    private static final String APM_GIFT_TYPE_BARCODE                     = "APM_GIFT_TYPE_BARCODE";
    private static final String APM_GIFT_TYPE_OBJECT                      = "APM_GIFT_TYPE_OBJECT";
    private static final String APM_GIFT_TYPE_URL                         = "APM_GIFT_TYPE_URL";
    private static final String APM_GIFT_TYPE_EMAIL                       = "APM_GIFT_TYPE_EMAIL";
    private static final String APM_GIFT_NATURE_POINTS                    = "APM_GIFT_NATURE_POINTS";
    private static final String APM_GIFT_NATURE_STATUS                    = "APM_GIFT_NATURE_STATUS";
    private static final String APM_SHOW_PAGE_CNIL                        = "APM_SHOW_PAGE_CNIL";
    private static final String APM_SHOW_PAGE_CGU                         = "APM_SHOW_PAGE_CGU";
    private static final String APM_SHOW_PAGE_MENTIONS                    = "APM_SHOW_PAGE_MENTIONS";
    private static final String APM_SHOW_PAGE_HELPER                      = "APM_SHOW_PAGE_HELPER";
    private static final String APM_SHOW_PAGE_TUTO                        = "APM_SHOW_PAGE_TUTO";
    private static final String APM_SHOW_PAGE_INTERSTITIAL                = "APM_SHOW_PAGE_INTERSTITIAL";
    private static final String APM_SHOW_PAGE_APP_ONBOARDING              = "APM_SHOW_PAGE_APP_ONBOARDING";
    private static final String APM_SHOW_PAGE_APP_MENTION                 = "APM_SHOW_PAGE_APP_MENTION";
    private static final String APM_SHOW_PAGE_APP_TUTORIAL                = "APM_SHOW_PAGE_APP_TUTORIAL";
    private static final String APM_SHOW_PAGE_APP_INTERSTITIAL            = "APM_SHOW_PAGE_APP_INTERSTITIAL";
    private static final String APM_HOW_WORKS_TYPE_WEBVIEW                = "APM_HOW_WORKS_TYPE_WEBVIEW";
    private static final String APM_HOW_WORKS_TYPE_ACTIONS                = "APM_HOW_WORKS_TYPE_ACTIONS";
    private static final String APM_HOW_WORKS_TYPE_GIFTS                  = "APM_HOW_WORKS_TYPE_GIFTS";
    private static final String APM_PAGE_TARGET_ONLY_NOT_CONNECTED        = "APM_PAGE_TARGET_ONLY_NOT_CONNECTED";
    private static final String APM_PAGE_TARGET_ONLY_CONNECTED            = "APM_PAGE_TARGET_ONLY_CONNECTED";
    private static final String APM_PAGE_TARGET_BOTH                      = "APM_PAGE_TARGET_BOTH";
    private static final String APM_WALKTHROUGH_STATUS_OFFLINE            = "APM_WALKTHROUGH_STATUS_OFFLINE";
    private static final String APM_WALKTHROUGH_STATUS_ONLINE             = "APM_WALKTHROUGH_STATUS_ONLINE";
    private static final String APM_EXCEPTION_NO_ERROR                    = "APM_EXCEPTION_NO_ERROR";
    private static final String APM_EXCEPTION_ERROR_SERVER                = "APM_EXCEPTION_ERROR_SERVER";
    private static final String APM_EXCEPTION_INVALID_TOKEN               = "APM_EXCEPTION_INVALID_TOKEN";
    private static final String APM_EXCEPTION_MODE_TEST                   = "APM_EXCEPTION_MODE_TEST";
    private static final String APM_EXCEPTION_NO_NETWORK                  = "APM_EXCEPTION_NO_NETWORK";
    private static final String APM_EXCEPTION_UNKNOWN_ERROR               = "APM_EXCEPTION_UNKNOWN_ERROR";
    private static final String APM_EXCEPTION_SERVICE_LOADING             = "APM_EXCEPTION_SERVICE_LOADING";
    private static final String APM_EXCEPTION_SERVICE_NOT_ACTIVE          = "APM_EXCEPTION_SERVICE_NOT_ACTIVE";
    private static final String APM_EXCEPTION_CONFIG                      = "APM_EXCEPTION_CONFIG";
    private static final String APM_EXCEPTION_ACCOUNT_NOT_CONNECTED       = "APM_EXCEPTION_ACCOUNT_NOT_CONNECTED";
    private static final String APM_EXCEPTION_HTTP_REQUEST_ERROR          = "APM_EXCEPTION_HTTP_REQUEST_ERROR";
    private static final String APM_EXCEPTION_URL_HTTP_INVALID            = "APM_EXCEPTION_URL_HTTP_INVALID";
    private static final String APM_EXCEPTION_OPT_IN_NOT_ACCEPTED         = "APM_EXCEPTION_OPT_IN_NOT_ACCEPTED";
    private static final String APM_DEFAULT_DATE_FORMAT                   = "APM_DEFAULT_DATE_FORMAT";
    private static final String APM_DEVICE_STATUS_NOT_SET                 = "APM_DEVICE_STATUS_NOT_SET";
    private static final String APM_DEVICE_STATUS_OK                      = "APM_DEVICE_STATUS_OK";
    private static final String APM_DEVICE_STATUS_ANONYMOUS               = "APM_DEVICE_STATUS_ANONYMOUS";
    private static final String APM_DEVICE_STATUS_OPTIN_OFF               = "APM_DEVICE_STATUS_OPTIN_OFF";
    private static final String APM_DEVICE_OPT_IN_NOT_SET                 = "APM_DEVICE_OPT_IN_NOT_SET";
    private static final String APM_DEVICE_OPT_IN_REFUSE                  = "APM_DEVICE_OPT_IN_REFUSE";
    private static final String APM_DEVICE_OPT_IN_ACCEPT                  = "APM_DEVICE_OPT_IN_ACCEPT";
    private static final String APM_CLASS_ID_GLOBAL                       = "APM_CLASS_ID_GLOBAL";
    private static final String APM_AD_TYPE_BONUS                         = "APM_AD_TYPE_BONUS";
    private static final String APM_AD_TYPE_NEWS                          = "APM_AD_TYPE_NEWS";
    private static final String APM_AD_TYPE_SPECIALS                      = "APM_AD_TYPE_SPECIALS";
    private static final String APM_GENEROSITY_TYPE_SYSTEMATIC            = "APM_GENEROSITY_TYPE_SYSTEMATIC";
    private static final String APM_GENEROSITY_TYPE_SUGGESTED             = "APM_GENEROSITY_TYPE_SUGGESTED";

    public APMServicesConfigModule(ReactApplicationContext reactContext)
    {
        super(reactContext);
    }

    @Override
    public String getName() { return "APMServicesConfigModule"; }

    @Override
    public Map<String, Object> getConstants()
    {
        final Map<String, Object> constants = new HashMap<>();

        constants.put(APM_API_VERSION, APMServicesConfig.APM_API_VERSION);
        constants.put(APM_URL_API_PROD, APMServicesConfig.APM_URL_API_PROD);
        constants.put(APM_URL_API_SANDBOX, APMServicesConfig.APM_URL_API_SANDBOX);
        constants.put(APM_URL_SITE_APPSMILES, APMServicesConfig.APM_URL_SITE_APPSMILES);
        constants.put(APM_PARTNER_LEVEL_INITIAL, APMServicesConfig.APM_PARTNER_LEVEL_INITIAL);
        constants.put(APM_PARTNER_LEVEL_STANDARD, APMServicesConfig.APM_PARTNER_LEVEL_STANDARD);
        constants.put(APM_PARTNER_LEVEL_PREMIUM, APMServicesConfig.APM_PARTNER_LEVEL_PREMIUM);
        constants.put(APM_K_USER_GENDER_MME, APMServicesConfig.APM_K_USER_GENDER_MME);
        constants.put(APM_K_USER_GENDER_M, APMServicesConfig.APM_K_USER_GENDER_M);
        constants.put(APM_GIFT_TYPE_TEXT, APMServicesConfig.APM_GIFT_TYPE_TEXT);
        constants.put(APM_GIFT_TYPE_BARCODE, APMServicesConfig.APM_GIFT_TYPE_BARCODE);
        constants.put(APM_GIFT_TYPE_OBJECT, APMServicesConfig.APM_GIFT_TYPE_OBJECT);
        constants.put(APM_GIFT_TYPE_URL, APMServicesConfig.APM_GIFT_TYPE_URL);
        constants.put(APM_GIFT_TYPE_EMAIL, APMServicesConfig.APM_GIFT_TYPE_EMAIL);
        constants.put(APM_GIFT_NATURE_POINTS, APMServicesConfig.APM_GIFT_NATURE_POINTS);
        constants.put(APM_GIFT_NATURE_STATUS, APMServicesConfig.APM_GIFT_NATURE_STATUS);
        constants.put(APM_SHOW_PAGE_CNIL, APMServicesConfig.APM_SHOW_PAGE_CNIL);
        constants.put(APM_SHOW_PAGE_CGU, APMServicesConfig.APM_SHOW_PAGE_CGU);
        constants.put(APM_SHOW_PAGE_MENTIONS, APMServicesConfig.APM_SHOW_PAGE_MENTIONS);
        constants.put(APM_SHOW_PAGE_HELPER, APMServicesConfig.APM_SHOW_PAGE_HELPER);
        constants.put(APM_SHOW_PAGE_TUTO, APMServicesConfig.APM_SHOW_PAGE_TUTO);
        constants.put(APM_SHOW_PAGE_INTERSTITIAL, APMServicesConfig.APM_SHOW_PAGE_INTERSTITIAL);
        constants.put(APM_SHOW_PAGE_APP_ONBOARDING, APMServicesConfig.APM_SHOW_PAGE_APP_ONBOARDING);
        constants.put(APM_SHOW_PAGE_APP_MENTION, APMServicesConfig.APM_SHOW_PAGE_APP_MENTION);
        constants.put(APM_SHOW_PAGE_APP_TUTORIAL, APMServicesConfig.APM_SHOW_PAGE_APP_TUTORIAL);
        constants.put(APM_SHOW_PAGE_APP_INTERSTITIAL, APMServicesConfig.APM_SHOW_PAGE_APP_INTERSTITIAL);
        constants.put(APM_HOW_WORKS_TYPE_WEBVIEW, APMServicesConfig.APM_HOW_WORKS_TYPE_WEBVIEW);
        constants.put(APM_HOW_WORKS_TYPE_ACTIONS, APMServicesConfig.APM_HOW_WORKS_TYPE_ACTIONS);
        constants.put(APM_HOW_WORKS_TYPE_GIFTS, APMServicesConfig.APM_HOW_WORKS_TYPE_GIFTS);
        constants.put(APM_PAGE_TARGET_ONLY_NOT_CONNECTED, APMServicesConfig.APM_PAGE_TARGET_ONLY_NOT_CONNECTED);
        constants.put(APM_PAGE_TARGET_ONLY_CONNECTED, APMServicesConfig.APM_PAGE_TARGET_ONLY_CONNECTED);
        constants.put(APM_PAGE_TARGET_BOTH, APMServicesConfig.APM_PAGE_TARGET_BOTH);
        constants.put(APM_WALKTHROUGH_STATUS_OFFLINE, APMServicesConfig.APM_WALKTHROUGH_STATUS_OFFLINE);
        constants.put(APM_WALKTHROUGH_STATUS_ONLINE, APMServicesConfig.APM_WALKTHROUGH_STATUS_ONLINE);
        constants.put(APM_EXCEPTION_NO_ERROR, APMServicesConfig.APM_EXCEPTION_NO_ERROR);
        constants.put(APM_EXCEPTION_ERROR_SERVER, APMServicesConfig.APM_EXCEPTION_ERROR_SERVER);
        constants.put(APM_EXCEPTION_INVALID_TOKEN, APMServicesConfig.APM_EXCEPTION_INVALID_TOKEN);
        constants.put(APM_EXCEPTION_MODE_TEST, APMServicesConfig.APM_EXCEPTION_MODE_TEST);
        constants.put(APM_EXCEPTION_NO_NETWORK, APMServicesConfig.APM_EXCEPTION_NO_NETWORK);
        constants.put(APM_EXCEPTION_UNKNOWN_ERROR, APMServicesConfig.APM_EXCEPTION_UNKNOWN_ERROR);
        constants.put(APM_EXCEPTION_SERVICE_LOADING, APMServicesConfig.APM_EXCEPTION_SERVICE_LOADING);
        constants.put(APM_EXCEPTION_SERVICE_NOT_ACTIVE, APMServicesConfig.APM_EXCEPTION_SERVICE_NOT_ACTIVE);
        constants.put(APM_EXCEPTION_CONFIG, APMServicesConfig.APM_EXCEPTION_CONFIG);
        constants.put(APM_EXCEPTION_ACCOUNT_NOT_CONNECTED, APMServicesConfig.APM_EXCEPTION_ACCOUNT_NOT_CONNECTED);
        constants.put(APM_EXCEPTION_HTTP_REQUEST_ERROR, APMServicesConfig.APM_EXCEPTION_HTTP_REQUEST_ERROR);
        constants.put(APM_EXCEPTION_URL_HTTP_INVALID, APMServicesConfig.APM_EXCEPTION_URL_HTTP_INVALID);
        constants.put(APM_EXCEPTION_OPT_IN_NOT_ACCEPTED, APMServicesConfig.APM_EXCEPTION_OPT_IN_NOT_ACCEPTED);
        constants.put(APM_DEFAULT_DATE_FORMAT, APMServicesConfig.APM_DEFAULT_DATE_FORMAT);
        constants.put(APM_DEVICE_STATUS_NOT_SET, APMServicesConfig.APM_DEVICE_STATUS_NOT_SET);
        constants.put(APM_DEVICE_STATUS_OK, APMServicesConfig.APM_DEVICE_STATUS_OK);
        constants.put(APM_DEVICE_STATUS_ANONYMOUS, APMServicesConfig.APM_DEVICE_STATUS_ANONYMOUS);
        constants.put(APM_DEVICE_STATUS_OPTIN_OFF, APMServicesConfig.APM_DEVICE_STATUS_OPTIN_OFF);
        constants.put(APM_DEVICE_OPT_IN_NOT_SET, APMServicesConfig.APM_DEVICE_OPT_IN_NOT_SET);
        constants.put(APM_DEVICE_OPT_IN_REFUSE, APMServicesConfig.APM_DEVICE_OPT_IN_REFUSE);
        constants.put(APM_DEVICE_OPT_IN_ACCEPT, APMServicesConfig.APM_DEVICE_OPT_IN_ACCEPT);
        constants.put(APM_CLASS_ID_GLOBAL, APMServicesConfig.APM_CLASS_ID_GLOBAL);
        constants.put(APM_AD_TYPE_BONUS, APMServicesConfig.APM_AD_TYPE_BONUS);
        constants.put(APM_AD_TYPE_NEWS, APMServicesConfig.APM_AD_TYPE_NEWS);
        constants.put(APM_AD_TYPE_SPECIALS, APMServicesConfig.APM_AD_TYPE_SPECIALS);
        constants.put(APM_GENEROSITY_TYPE_SYSTEMATIC, APMServicesConfig.APM_GENEROSITY_TYPE_SYSTEMATIC);
        constants.put(APM_GENEROSITY_TYPE_SUGGESTED, APMServicesConfig.APM_GENEROSITY_TYPE_SUGGESTED);

        return constants;
    }
}
