package com.brisco.meatwholesaler;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.bumptech.glide.Glide;
import com.google.android.material.snackbar.Snackbar;

public class ProductDetailActivity extends AppCompatActivity {

    private ImageView imageViewProduct;
    private TextView textViewName;
    private TextView textViewPrice;
    private TextView textViewDescription;
    private TextView textViewQuantity;
    private Button buttonAddToCart;
    private Button buttonViewCart;
    
    private String productId;
    private String productName;
    private double productPrice;
    private String productDescription;
    private String productImage;
    
    private int quantity = 1;
    private CartManager cartManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_product_detail);

        // Initialize cart manager
        cartManager = CartManager.getInstance(this);

        // Get product data from intent
        Intent intent = getIntent();
        productId = intent.getStringExtra("PRODUCT_ID");
        productName = intent.getStringExtra("PRODUCT_NAME");
        productPrice = intent.getDoubleExtra("PRODUCT_PRICE", 0.0);
        productDescription = intent.getStringExtra("PRODUCT_DESCRIPTION");
        productImage = intent.getStringExtra("PRODUCT_IMAGE");

        // Setup toolbar
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setTitle(productName);
        }

        // Initialize views
        initializeViews();

        // Load product data
        loadProductData();

        // Setup click listeners
        setupClickListeners();
    }

    private void initializeViews() {
        imageViewProduct = findViewById(R.id.image_product);
        textViewName = findViewById(R.id.text_name);
        textViewPrice = findViewById(R.id.text_price);
        textViewDescription = findViewById(R.id.text_description);
        textViewQuantity = findViewById(R.id.text_quantity);
        buttonAddToCart = findViewById(R.id.btn_add_to_cart);
        buttonViewCart = findViewById(R.id.btn_view_cart);

        // Quantity controls
        findViewById(R.id.btn_increase_quantity).setOnClickListener(v -> {
            quantity++;
            updateQuantityDisplay();
        });

        findViewById(R.id.btn_decrease_quantity).setOnClickListener(v -> {
            if (quantity > 1) {
                quantity--;
                updateQuantityDisplay();
            }
        });
    }

    private void loadProductData() {
        textViewName.setText(productName);
        textViewPrice.setText(String.format("R %.2f", productPrice));
        textViewDescription.setText(productDescription != null ? productDescription : "Premium quality meat product from Brisco Meat Wholesaler.");
        
        // Load product image
        if (productImage != null && !productImage.isEmpty()) {
            try {
                int imageResId = getResources().getIdentifier(productImage, "drawable", getPackageName());
                if (imageResId != 0) {
                    imageViewProduct.setImageResource(imageResId);
                } else {
                    imageViewProduct.setImageResource(R.drawable.ic_launcher_background);
                }
            } catch (Exception e) {
                imageViewProduct.setImageResource(R.drawable.ic_launcher_background);
            }
        } else {
            imageViewProduct.setImageResource(R.drawable.ic_launcher_background);
        }

        updateQuantityDisplay();
    }

    private void setupClickListeners() {
        buttonAddToCart.setOnClickListener(v -> addToCart());
        buttonViewCart.setOnClickListener(v -> {
            Intent cartIntent = new Intent(ProductDetailActivity.this, CartActivity.class);
            startActivity(cartIntent);
        });
    }

    private void updateQuantityDisplay() {
        textViewQuantity.setText(String.valueOf(quantity));
    }

    private void addToCart() {
        Product product = new Product(productId, productName, productPrice, productDescription, productImage);
        
        // Add to cart with specified quantity
        for (int i = 0; i < quantity; i++) {
            cartManager.addProduct(product);
        }

        // Show success message
        Snackbar.make(findViewById(android.R.id.content), 
                quantity + " " + productName + " added to cart", 
                Snackbar.LENGTH_LONG)
                .setAction("VIEW CART", v -> {
                    Intent cartIntent = new Intent(ProductDetailActivity.this, CartActivity.class);
                    startActivity(cartIntent);
                })
                .show();

        // Update button state
        updateCartButton();
    }

    private void updateCartButton() {
        int cartCount = cartManager.getCartCount();
        if (cartCount > 0) {
            buttonViewCart.setText("View Cart (" + cartCount + ")");
        } else {
            buttonViewCart.setText("View Cart");
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        updateCartButton();
    }

    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }
}
