package com.brisco.meatwholesaler;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;

import java.util.List;

public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ProductViewHolder> {

    private Context context;
    private List<Product> productList;
    private OnProductClickListener listener;

    public interface OnProductClickListener {
        void onProductClick(Product product);
    }

    public ProductAdapter(Context context, List<Product> productList, OnProductClickListener listener) {
        this.context = context;
        this.productList = productList;
        this.listener = listener;
    }

    @NonNull
    @Override
    public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_product, parent, false);
        return new ProductViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ProductViewHolder holder, int position) {
        Product product = productList.get(position);
        
        holder.textViewName.setText(product.getName());
        holder.textViewPrice.setText(product.getFormattedPrice());
        holder.textViewDescription.setText(product.getDescription());

        // Load image if available
        if (product.getImageUrl() != null && !product.getImageUrl().isEmpty()) {
            try {
                int imageResId = context.getResources().getIdentifier(product.getImageUrl(), "drawable", context.getPackageName());
                if (imageResId != 0) {
                    holder.imageViewProduct.setImageResource(imageResId);
                } else {
                    holder.imageViewProduct.setImageResource(R.drawable.ic_launcher_background);
                }
            } catch (Exception e) {
                holder.imageViewProduct.setImageResource(R.drawable.ic_launcher_background);
            }
        } else {
            holder.imageViewProduct.setImageResource(R.drawable.ic_launcher_background);
        }

        // Show special badge if applicable
        if (product.isOnSpecial()) {
            holder.textViewSpecial.setVisibility(View.VISIBLE);
            holder.textViewOriginalPrice.setVisibility(View.VISIBLE);
            holder.textViewOriginalPrice.setText(product.getFormattedOriginalPrice());
            holder.textViewOriginalPrice.setPaintFlags(holder.textViewOriginalPrice.getPaintFlags() | android.graphics.Paint.STRIKE_THRU_TEXT_FLAG);
        } else {
            holder.textViewSpecial.setVisibility(View.GONE);
            holder.textViewOriginalPrice.setVisibility(View.GONE);
        }

        holder.itemView.setOnClickListener(v -> {
            if (listener != null) {
                listener.onProductClick(product);
            }
        });
    }

    @Override
    public int getItemCount() {
        return productList.size();
    }

    public void updateProducts(List<Product> newProducts) {
        productList.clear();
        productList.addAll(newProducts);
        notifyDataSetChanged();
    }

    static class ProductViewHolder extends RecyclerView.ViewHolder {
        ImageView imageViewProduct;
        TextView textViewName;
        TextView textViewPrice;
        TextView textViewDescription;
        TextView textViewSpecial;
        TextView textViewOriginalPrice;

        public ProductViewHolder(@NonNull View itemView) {
            super(itemView);
            imageViewProduct = itemView.findViewById(R.id.image_product);
            textViewName = itemView.findViewById(R.id.text_name);
            textViewPrice = itemView.findViewById(R.id.text_price);
            textViewDescription = itemView.findViewById(R.id.text_description);
            textViewSpecial = itemView.findViewById(R.id.text_special);
            textViewOriginalPrice = itemView.findViewById(R.id.text_original_price);
        }
    }
}
