from django.db import models

# Create your models here.

from navic_part1.models import Product
from decimal import Decimal
from django.core.validators import MinValueValidator,MaxValueValidator
from coupons.models import Coupon

class Order(models.Model):
    first_name=models.CharField(max_length=51)
    last_name=models.CharField(max_length=51)
    email=models.EmailField(blank=True)
    mobile_number=models.CharField(max_length=12,blank=False,default="")
    address=models.CharField(max_length=251)
    postal_code=models.CharField(max_length=6)
    city=models.CharField(max_length=100)
    created=models.DateTimeField(auto_now_add=True)
    updated=models.DateTimeField(auto_now=True)
    paid=models.BooleanField(default=False)
    razorpay_id=models.CharField(max_length=150,blank=True)
    coupon=models.ForeignKey(Coupon,related_name='orders',null=True,blank=True,on_delete=models.SET_NULL)
    discount=models.IntegerField(default=0,validators=[MinValueValidator(0),MaxValueValidator(100)])

    class Meta:
        ordering=('-created',)

    def __str__(self):
        return f'Order {self.id}'

    def get_total_cost(self):
        total_cost=sum(item.get_cost() for item in self.items.all())
        return total_cost - total_cost *(self.discount / Decimal(100))

class OrderItem(models.Model):
    order=models.ForeignKey(Order,related_name="items",on_delete=models.CASCADE)
    product=models.ForeignKey(Product,related_name="order_items",on_delete=models.CASCADE)
    price=models.DecimalField(max_digits=10,decimal_places=2)
    quantity=models.PositiveIntegerField(default=1)


    def __str__(self):
        return str(self.id)

    def get_cost(self):
        return self.price *  self.quantity
