package com.indigitall.cordova.utils;

import android.app.PendingIntent;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;

import com.indigitall.android.commons.models.CorePush;
import com.indigitall.android.commons.utils.IntentUtils;
import com.indigitall.android.push.models.Push;
import com.indigitall.android.push.models.PushAction;
import com.indigitall.android.push.services.StatisticService;
import com.indigitall.android.push.utils.PushPreferenceUtils;
import com.indigitall.cordova.views.CordovaIndigitallHiddenActivity;

public class CDVIndigitallUtils {
    public static PendingIntent getIntent(Context context, Push push, PushAction action, int clickedButton) {
        try {
            Intent intent = action.getIntent(context);
            if (intent != null) {                
                if (push.getAction() != null) {
                    push.getAction().setClickedButton(clickedButton);
                }
                if (action.getType() == PushAction.Type.APP) {
                    intent.putExtra(Push.EXTRA_PUSH, push.toString());
                }
                Intent indigitallIntent = new Intent(context, CordovaIndigitallHiddenActivity.class);
                indigitallIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                indigitallIntent.putExtra(StatisticService.EXTRA_APP_KEY, PushPreferenceUtils.getAppKey(context));
                indigitallIntent.putExtra(StatisticService.EXTRA_PUSH_ID, push.getId());
                indigitallIntent.putExtra(StatisticService.EXTRA_CLICKED_BUTTON, clickedButton);
                indigitallIntent.putExtra(StatisticService.EXTRA_INTENT_ACTION, intent);
                indigitallIntent.putExtra(StatisticService.EXTRA_JSON_PUSH, push.getJsonPush().toString());
                indigitallIntent.putExtra(StatisticService.EXTRA_SENDING_ID, push.getSendingId());
                indigitallIntent.putExtra(StatisticService.EXTRA_CAMPAIGN_ID, push.getCampaignId());
                if (push.getJourneyStateId() != 0)
                    indigitallIntent.putExtra(StatisticService.EXTRA_JOURNEY_STATE_ID, push.getJourneyStateId());
                if (push.getCjCurrentStateId() != 0)
                    indigitallIntent.putExtra(StatisticService.EXTRA_CJ_CURRENT_STATE_ID, push.getCjCurrentStateId());
                if (push.getJourneyExecution() != 0)
                    indigitallIntent.putExtra(StatisticService.EXTRA_JOURNEY_EXECUTION, push.getJourneyExecution());

                indigitallIntent.putExtra(Push.EXTRA_PUSH, push.toString());
                if (action.getTopics() != null && action.getTopics().length > 0) {
                    indigitallIntent.putExtra(StatisticService.EXTRA_ACTION_TOPICS, action.topicsToString());
                }
                TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
                stackBuilder.addNextIntentWithParentStack(indigitallIntent);
                if (action.isDestroy()) {
                    return stackBuilder.getPendingIntent((push.getId() * 10) + clickedButton,
                            IntentUtils.getPendingIntentFlags(PendingIntent.FLAG_UPDATE_CURRENT));
                } else {
                    return PendingIntent.getActivity(context, 0, new Intent(), IntentUtils.getPendingIntentFlags(0));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}