package com.example.bdkipoc;

import android.content.Context;
import android.graphics.drawable.GradientDrawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.core.content.ContextCompat;

public class StyleHelper {
    
    /**
     * Create rounded rectangle drawable programmatically
     */
    public static GradientDrawable createRoundedDrawable(int color, int strokeColor, int strokeWidth, int radius) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setShape(GradientDrawable.RECTANGLE);
        drawable.setColor(color);
        drawable.setStroke(strokeWidth, strokeColor);
        drawable.setCornerRadius(radius);
        return drawable;
    }
    
    /**
     * Apply search input styling
     */
    public static void applySearchInputStyle(View view, Context context) {
        int white = ContextCompat.getColor(context, android.R.color.white);
        int lightGrey = ContextCompat.getColor(context, android.R.color.darker_gray);
        // ✅ IMPROVED: Larger corner radius and lighter border like in the image
        GradientDrawable drawable = createRoundedDrawable(white, lightGrey, 1, 75); // 25dp radius, thinner border
        view.setBackground(drawable);
    }
    
    /**
     * Apply filter button styling
     */
    public static void applyFilterButtonStyle(View view, Context context) {
        int white = ContextCompat.getColor(context, android.R.color.white);
        int lightGrey = ContextCompat.getColor(context, android.R.color.darker_gray);
        // ✅ IMPROVED: Larger corner radius like in the image
        GradientDrawable drawable = createRoundedDrawable(white, lightGrey, 1, 75); // 25dp radius, thinner border
        view.setBackground(drawable);
    }
    
    /**
     * Apply pagination button styling (simple version)
     */
    public static void applyPaginationButtonStyle(View view, Context context, boolean isActive) {
        int backgroundColor, strokeColor;
        
        if (isActive) {
            backgroundColor = ContextCompat.getColor(context, android.R.color.holo_red_dark);
            strokeColor = ContextCompat.getColor(context, android.R.color.holo_red_dark);
        } else {
            backgroundColor = ContextCompat.getColor(context, android.R.color.white);
            strokeColor = ContextCompat.getColor(context, android.R.color.transparent);
        }
        
        // ✅ IMPROVED: Larger corner radius for modern look (like in the image)
        GradientDrawable drawable = createRoundedDrawable(backgroundColor, strokeColor, 0, 48); // 16dp radius
        view.setBackground(drawable);
        
        // Set text color if it's a TextView
        if (view instanceof TextView) {
            int textColor = isActive ? 
                ContextCompat.getColor(context, android.R.color.white) : 
                ContextCompat.getColor(context, android.R.color.black);
            ((TextView) view).setTextColor(textColor);
        }
    }
    
    /**
     * Apply status text color only (no background badge)
     */
    public static void applyStatusTextColor(TextView textView, Context context, String status) {
        String statusLower = status != null ? status.toLowerCase() : "";
        int textColor;
        
        if (statusLower.equals("failed") || statusLower.equals("failure") || 
            statusLower.equals("error") || statusLower.equals("declined") || 
            statusLower.equals("expire") || statusLower.equals("cancel")) {
            // Red text for failed/error statuses
            textColor = ContextCompat.getColor(context, android.R.color.holo_red_dark);
        } else if (statusLower.equals("success") || statusLower.equals("paid") || 
                statusLower.equals("settlement") || statusLower.equals("completed") ||
                statusLower.equals("capture")) {
            // Green text for successful statuses
            textColor = ContextCompat.getColor(context, android.R.color.holo_green_dark);
        } else if (statusLower.equals("pending") || statusLower.equals("processing") || 
                statusLower.equals("waiting") || statusLower.equals("checking...") || 
                statusLower.equals("checking")) {
            // Orange text for pending/processing statuses
            textColor = ContextCompat.getColor(context, android.R.color.holo_orange_dark);
        } else if (statusLower.equals("init")) {
            // Blue text for init status
            textColor = ContextCompat.getColor(context, android.R.color.holo_blue_dark);
        } else {
            // Default gray text for unknown statuses
            textColor = ContextCompat.getColor(context, android.R.color.darker_gray);
        }
        
        textView.setTextColor(textColor);
        textView.setBackground(null); // Remove any background
    }
}