from django.contrib.auth.models import User
from django.db import models
from django.utils import timezone

from otentifikasi.models import Biodata
from pelayanan.models import InvoiceLayanan
from pemeriksaan.models import Pendaftaran
from penjualan.models import InvoiceBarang


class Pembayaran(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)
    invoice_barang = models.ManyToManyField(InvoiceBarang, blank=True)
    invoice_layanan = models.ManyToManyField(InvoiceLayanan, blank=True)
    total_pembayaran = models.FloatField(null=True, blank=True)
    uang_pasien = models.FloatField(null=True, blank=True)
    kembalian = models.FloatField(null=True, blank=True)

    petugas = models.ForeignKey(Biodata, on_delete=models.SET_NULL, null=True, blank=True)
    is_dibayar = models.BooleanField(null=True, blank=True)
    is_dp = models.BooleanField(null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f'{self.kode}'

    class Meta:
        verbose_name = 'Pembayaran'
        verbose_name_plural = 'Pembayaran'

class CekPembayaran(models.Model):
    id = models.AutoField(primary_key=True)
    kode = models.CharField(max_length=255)
    total_pembayaran = models.FloatField(null=True, blank=True)
    uang_pasien = models.FloatField(null=True, blank=True)
    kembalian = models.FloatField(null=True, blank=True)
    is_dibayar = models.BooleanField(null=True, blank=True)
    is_dp = models.BooleanField(null=True, blank=True)
    created_at = models.DateTimeField(default=timezone.now)
    pendaftaran = models.ForeignKey(Pendaftaran, on_delete=models.SET_NULL, null=True, blank=True)
    petugas_id = models.IntegerField()

    class Meta:
        managed = False
        db_table = 'pembayaran_pembayaran'

def current_month():
  return timezone.now().month

class Kategori_Pengeluaran(models.Model):
    name = models.CharField(max_length=255)
    kode = models.CharField(max_length=255)
    class Meta:
        verbose_name = 'Kategori Pengeluaran'
        verbose_name_plural = 'Kategori Pengeluaran'

class SubKategori_Pengeluaran(models.Model):
    name = models.CharField(max_length=255)
    kode = models.IntegerField(default=0)
    category = models.ForeignKey(Kategori_Pengeluaran, on_delete=models.SET_NULL, null=True, blank=True)
    class Meta:
        verbose_name = 'SubKategori Pengeluaran'
        verbose_name_plural = 'SubKategori Pengeluaran'

class Pengeluaran(models.Model):
    PAYMENT_CHOICES = (
        ("cash", "Cash"),
        ("transfer", "Transfer"),
    )
    title = models.CharField(max_length=255)
    activity_date = models.DateField(default=timezone.now)
    subcategory = models.ForeignKey(SubKategori_Pengeluaran, on_delete=models.SET_NULL, null=True, blank=True)
    satuan = models.CharField(max_length=255, default="pcs")
    qty = models.IntegerField(default=0)
    price = models.FloatField(default=0)
    payment_method = models.CharField(max_length=255, choices=PAYMENT_CHOICES, default="cash")
    total = models.FloatField(default=0)
    created_at = models.DateTimeField(default=timezone.now)
    # deposit = models.ForeignKey(PembayaranDepositPengeluaran, on_delete=models.SET_NULL, null=True, blank=True)
    class Meta:
        verbose_name = 'Pengeluaran'
        verbose_name_plural = 'Pengeluaran'

# class DepositPengeluaran(models.Model):
#     STATUS_CHOICES = (
#         ("progress", "In Progress"),
#         ("approved", "Approved"),
#     )
#     title = models.CharField(max_length=255)
#     description = models.TextField(null=True, blank=True)
#     month = models.IntegerField(default=current_month)
#     supply = models.FloatField(default=0)
#     remaining_supply = models.FloatField(default=0)
#     status = models.CharField(max_length=255, choices=STATUS_CHOICES, default="progress")
#     approved_user = models.ForeignKey(Biodata, on_delete=models.SET_NULL, null=True, blank=True)
#     approved_at = models.DateTimeField(default=timezone.now)
#     created_at = models.DateTimeField(default=timezone.now)
#     updated_at = models.DateTimeField(default=timezone.now)

#     class Meta:
#         verbose_name = 'Pembayaran'
#         verbose_name_plural = 'Pembayaran'

class Pengeluaran_Satuan(models.Model):
    name = models.CharField(max_length=255)
    kode = models.CharField(max_length=255)
    alias = models.CharField(max_length=255)
