from django.db import models
from django.utils import timezone

from otentifikasi.models import Biodata
from pemeriksaan.models import Pendaftaran


# Create your models here.
class Lokasi(models.Model):  # lokasi barang itu ada dimana misalkan ada di depo UGD atau di rawat jalan
    nama = models.CharField(max_length=255, null=True, blank=True)
    catatan = models.CharField(max_length=255, null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.nama} - {self.created_at}'

    class Meta:
        verbose_name = 'Lokasi'
        verbose_name_plural = 'Lokasi'


class KategoriBarang(models.Model):  # kategori barangnya apa, apakah obat atau makanan atau apa
    nama = models.CharField(max_length=255, null=True, blank=True)
    catatan = models.CharField(max_length=255, null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.nama} - {self.created_at}'

    class Meta:
        verbose_name = 'Kategori Barang'
        verbose_name_plural = 'Kategori Barang'


class JenisBarang(models.Model):  # jenis barangnya apa, apakah barangnya tablet atau pcs atau apa
    nama = models.CharField(max_length=255, null=True, blank=True)
    catatan = models.CharField(max_length=255, null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.nama} - {self.created_at}'

    class Meta:
        verbose_name = 'Jenis Barang'
        verbose_name_plural = 'Jenis Barang'


class CaraJual(models.Model):  # cara jual barangnya gimana, apakah bisa bebas atau gimana
    nama = models.CharField(max_length=255, null=True, blank=True)
    catatan = models.CharField(max_length=255, null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.nama} - {self.created_at}'

    class Meta:
        verbose_name = 'Cara Jual'
        verbose_name_plural = 'Cara Jual'


class Barang(models.Model):
    kode = models.CharField(max_length=255, null=True, blank=True)
    kategori_barang = models.ForeignKey(KategoriBarang, on_delete=models.SET_NULL, null=True, blank=True)
    jenis_barang = models.ForeignKey(JenisBarang, on_delete=models.SET_NULL, null=True, blank=True)
    lokasi = models.ForeignKey(Lokasi, on_delete=models.SET_NULL, null=True, blank=True)
    cara_jual = models.ForeignKey(CaraJual, on_delete=models.SET_NULL, null=True, blank=True)
    nama = models.CharField(max_length=255, null=True, blank=True)
    harga_beli = models.FloatField(max_length=255, null=True, blank=True)
    harga_jual = models.FloatField(max_length=255, null=True, blank=True)
    satuan = models.CharField(max_length=255, null=True, blank=True)
    stok = models.FloatField(max_length=255, null=True, blank=True)
    catatan = models.FloatField(max_length=255, null=True, blank=True)
    formularium = models.BooleanField(null=True, blank=True)
    generik = models.BooleanField(null=True, blank=True)
    expired_at = models.DateTimeField(null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.kode} {self.nama} {self.harga_jual} {self.stok} {self.expired_at}'

    class Meta:
        verbose_name = 'Barang'
        verbose_name_plural = 'Barang'


class InvoiceBarang(models.Model):
    kode = models.CharField(max_length=255, null=True, blank=True)
    pendaftaran = models.ForeignKey(Pendaftaran, on_delete=models.SET_NULL, null=True, blank=True)
    barang = models.ForeignKey(Barang, on_delete=models.SET_NULL, null=True, blank=True)
    kuantitas = models.FloatField(null=True, blank=True)
    progress = models.CharField(max_length=255, null=True, blank=True)
    # new parameter
    diskon_pembelian = models.CharField(max_length=255, null=True, blank=True)
    tipe_diskon = models.CharField(max_length=255, null=True, blank=True)
    catatan = models.TextField(null=True, blank=True)
    dokter = models.ForeignKey(Biodata, on_delete=models.SET_NULL, null=True, blank=True)
    is_dibayar = models.BooleanField(null=True, blank=True, default=False)
    # barang_id = models.IntegerField(null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.kode} {self.barang}'

    class Meta:
        verbose_name = 'Invoice Barang'
        verbose_name_plural = 'Invoice Barang'

class InvBarang(models.Model):
    kode = models.CharField(max_length=255, null=True, blank=True)
    pendaftaran = models.ForeignKey(Pendaftaran, on_delete=models.SET_NULL, null=True, blank=True)
    # barang = models.ForeignKey(Barang, on_delete=models.SET_NULL, null=True, blank=True)
    kuantitas = models.FloatField(null=True, blank=True)
    progress = models.CharField(max_length=255, null=True, blank=True)
    catatan = models.TextField(null=True, blank=True)
    dokter = models.ForeignKey(Biodata, on_delete=models.SET_NULL, null=True, blank=True)
    is_dibayar = models.BooleanField(null=True, blank=True, default=False)
    barang_id = models.IntegerField(null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    class Meta:
        managed = False
        db_table = 'penjualan_invoicebarang'




class LogProgressInvoiceBarang(models.Model):
    relasi = models.ForeignKey(InvoiceBarang, on_delete=models.SET_NULL, null=True, blank=True)
    progress = models.CharField(max_length=255, null=True, blank=True)
    catatan = models.TextField(null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.relasi} {self.progress} {self.created_at}'

    class Meta:
        verbose_name = 'Log Progress Invoice Barang'
        verbose_name_plural = 'Log Progress Invoice Barang'
        
class HargaList(models.Model):
    id = models.AutoField(primary_key=True)
    price = models.CharField(max_length=255)
    title = models.TextField(max_length=255)
    created_at = models.DateField(default=timezone.now)

    class Meta:
        managed = False
        db_table = 'penjualan_harga_list'

class HargaListHistory(models.Model):
    id = models.AutoField(primary_key=True)
    pendaftaran_id = models.IntegerField()
    harga_list = models.ForeignKey(HargaList, on_delete=models.SET_NULL, null=True, blank=True)

    class Meta:
        managed = False
        db_table = 'penjualan_harga_list_history'