# View coffee shop
from django.shortcuts import render, get_object_or_404, redirect
from .models import Coffee, Order, CartItem
from .forms import OrderForm
from django.http import HttpResponse

#view menampilkan menu kopi
def coffee_menu(request):
    coffees = Coffee.objects.all()
    return render(request, 'coffee_shop/coffee_menu.html', {'coffees':coffees})

#view menampilkan pesanan
def order_coffee(request):
    if not request.session.session_key:
        request.session.create()

    coffees = Coffee.objects.all()  # Ambil semua data kopi
    if request.method == 'POST':
        coffee_id = request.POST.get('coffee')  # Dapatkan ID kopi yang dipilih
        quantity = int(request.POST.get('quantity'))  # Dapatkan kuantitas yang dipilih
        coffee = Coffee.objects.get(id=coffee_id)  # Ambil kopi berdasarkan ID

        # Menambahkan kopi ke keranjang
        cart_items, created = CartItem.objects.get_or_create(
            coffee=coffee,
            session_key=request.session.session_key  # Pastikan session_key diteruskan
        )
        
        if not created:
            # Jika item sudah ada di keranjang, tambah kuantitasnya
            cart_items.quantity += quantity  # Menambah quantity dengan benar
            cart_items.save()
        else:
            cart_items.quantity = quantity
            cart_items.save()

        return redirect('view_cart')  # Setelah pesanan dimasukkan, arahkan ke halaman keranjang
    else:
        return render(request, 'coffee_shop/order_coffee.html', {'coffees': coffees})


#view menampilkan detail kopi
def coffee_detail(request, coffee_id):
    coffee = get_object_or_404(Coffee, pk=coffee_id) #ambil kopi berdasarkan ID
    return render(request, 'coffee_shop/coffee_detail.html', {'coffee': coffee})

#viem untuk keranjang
def view_cart(request):
    # Mengambil keranjang berdasarkan session
    cart_items = CartItem.objects.filter(session_key=request.session.session_key)
    
    # Menghitung total harga berdasarkan kuantitas
    total_price = sum(item.total_price() for item in cart_items)  # total_price dihitung dari setiap item keranjang

    return render(request, 'coffee_shop/view_cart.html', {
        'cart_items': cart_items,
        'total_price': total_price,  # Mengirimkan total harga ke template
    })

def add_to_cart(request, coffee_id):
    coffee = Coffee.objects.get(id=coffee_id)
    quantity = 0
    if 'quantity' in request.POST:
        quantity = int(request.POST['quantity'])
    
    # Cek apakah item sudah ada di keranjang
    cart_items, created = CartItem.objects.get_or_create(
        coffee=coffee,
        session_key=request.session.session_key
    )
    
    if not created:
        # Jika item sudah ada, tambah kuantitasnya
        cart_items.quantity += quantity
        cart_items.save()
    else:
        cart_items.quantity = quantity
        cart_items.save()

    return redirect('view_cart')

def remove_from_cart(request, coffee_id):
    coffee = Coffee.objects.get(id=coffee_id)
    CartItem.objects.filter(coffee=coffee, session_key=request.session.session_key).delete()
    
    return redirect('view_cart')

def update_quantity(request, coffee_id, quantity):
    coffee = Coffee.objects.get(id=coffee_id)
    cart_items = CartItem.objects.get(coffee=coffee, session_key=request.session.session_key)
    
    if quantity <= 0:
        cart_items.delete()  # Jika quantity 0, hapus item dari keranjang
    else:
        cart_items.quantity = quantity
        cart_items.save()

    return redirect('view_cart')

def confirm_order(request):
    # Mengambil keranjang berdasarkan session
    cart_items = CartItem.objects.filter(session_key=request.session.session_key)

    if not cart_items.exists():
        return render(request, 'coffee_shop/order_confirmation.html', {'message': 'Keranjang Anda kosong!'})

    total_price = sum(item.total_price() for item in cart_items)  # Menghitung total harga berdasarkan kuantitas
    
    # Proses pesanan sesuai dengan item yang ada di keranjang
    # Lanjutkan dengan proses pembayaran atau konfirmasi, tergantung kebutuhan

    # Hapus semua item di keranjang setelah pesanan selesai
    cart_items.delete()

    return render(request, 'coffee_shop/order_confirmation.html', {
        'message': "Pesanan Anda telah diterima!",
        'total_price': total_price  # Kirimkan total harga ke template
    })
