from django.db import models
from django.contrib.auth.models import User
from redactor.fields import RedactorField
import datetime

class AppGroup(models.Model):
	class Meta:
		db_table = "app_group"	
	name = models.CharField(max_length=128, null=True, blank=True)
	priority = models.IntegerField(null=True, blank=True)
	def __str__(self):
		return self.name 
	
	
class App(models.Model):
	class Meta:
		db_table = "app"
	name = models.CharField(max_length=128, null=True, blank=True)
	title = models.CharField(max_length=512, null=True, blank=True)
	description = models.CharField(max_length=512, null=True, blank=True)
	keywords = models.CharField(max_length=512, null=True, blank=True)
	priority = models.IntegerField(null=True, blank=True)
	slug_folder = models.CharField(max_length=128, null=True, blank=True)
	group = models.ForeignKey(AppGroup)
	menu_image = models.FileField(null=True, blank=True)
	bg_img = models.FileField(null=True, blank=True)
	apple_store = models.CharField(max_length=512, null=True, blank=True)
	google_market = models.CharField(max_length=512, null=True, blank=True)
	text = models.TextField(blank=True, null=True)
	def __str__(self):
		return self.name

	


class PackageType(models.Model):
    class Meta:
        db_table = "package_type"
    name = models.CharField(max_length=128, null=True, blank=True)

    def __str__(self):
        return self.name


class Game(models.Model):
    class Meta:
        db_table = "game"
    name = models.CharField(max_length=128, null=True, blank=True)
    image = models.FileField(null=True, blank=True)
    ios_url = models.CharField(max_length=512, null=True, blank=True)
    android_url = models.CharField(max_length=512, null=True, blank=True)
    parents_text = RedactorField(blank=True, null=True)
    package_sale_phrase = models.CharField(max_length=512, null=True, blank=True)
    precept_sale_phrase = models.CharField(max_length=512, null=True, blank=True)
    play_code = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name


class Package(models.Model):
    class Meta:
        db_table = "package"
    slug = models.CharField(max_length=128, default="no_slug")
    type = models.ForeignKey(PackageType)
    game = models.ForeignKey(Game)
    name = models.CharField(max_length=128, null=True, blank=True)
    image = models.FileField(null=True, blank=True)
    file = models.FileField(null=True, blank=True)
    price = models.FloatField(null=True, blank=True)
    text = RedactorField(blank=True, null=True)

    def __str__(self):
        return "%s, %s – %s" % (self.type.name, self.game.name, self.name)


class Purchase(models.Model):
    class Meta:
        db_table = "package_purchase"
    user = models.ForeignKey(User)
    package = models.ForeignKey(Package)
    date = models.DateTimeField(null=True, blank=True)
    price = models.FloatField(null=True, blank=True)
    payment_no = models.IntegerField(null=True, blank=True)
    invoice_id = models.BigIntegerField(null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    confirmed = models.BooleanField(default=False)

    def __str__(self):
        return self.description


class Devices(models.Model):
    class Meta:
        db_table = "devices"
    user = models.ForeignKey(User)
    name = models.CharField(max_length=128, null=True, blank=True)
    device_id = models.CharField(max_length=128, null=True, blank=True)
    date = models.DateTimeField(null=True, blank=True)


class Invoice(models.Model):
    class Meta:
        db_table = "eping_invoice"
    user = models.ForeignKey(User)
    # date_invoice = models.DateTimeField(auto_now=True)  # Invoice initialised
    date_invoice = models.DateTimeField(null=True, blank=True)
    payment_no = models.IntegerField(null=True, blank=True)  # LMI_PAYMENT_NO
    amount = models.FloatField(null=True, blank=True)  # LMI_PAYMENT_AMOUNT
    currency = models.CharField(max_length=4, null=True, blank=True)  # LMI_CURRENCY
    paid_currency = models.CharField(max_length=4, null=True, blank=True)  # LMI_PAID_CURRENCY
    paid_amount = models.FloatField(null=True, blank=True)  # LMI_PAID_AMOUNT
    paid_method = models.CharField(max_length=64, null=True, blank=True)  # LMI_PAYMENT_METHOD
    description = models.CharField(max_length=512, null=True, blank=True)  # LMI_PAYMENT_DESC

    # Payment
    date_payment = models.DateTimeField(null=True, blank=True)  # LMI_SYS_PAYMENT_DATE
    sys_payment_id = models.IntegerField(null=True, blank=True)  # LMI_SYS_PAYMENT_ID
    hash = models.CharField(max_length=512, null=True, blank=True)  # LMI_HASH
    payer_country = models.CharField(max_length=4, null=True, blank=True)  # LMI_PAYER_COUNTRY
    payer_passport_country = models.CharField(max_length=4, null=True, blank=True)  # LMI_PAYER_PASSPORT_COUNTRY
    payer_ip_address = models.CharField(max_length=32, null=True, blank=True)  # LMI_PAYER_IP_ADDRESS

    def __str__(self):
        return "%s [%s] [%s] %s" % (self.payment_no, self.amount, self.user.username,  self.date_invoice)

