import json
from django.db import models

from api.models.audit_trail import AuditTrail


class AuditTrailDetails(models.Model):
    # not using foreign key cause even user deleted, also wont delete log
    audit_trail = models.ForeignKey("api.AuditTrail", on_delete=models.CASCADE)
    old_data = models.JSONField(null=True)
    new_data = models.JSONField(null=True)
    action = models.CharField(max_length=255)
    remark_string_code = models.TextField(null=True,db_comment="translation code in translate file")
    remark_param = models.TextField(null=True,db_comment="every action got own remark to translate, if got param needed, will put here")
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "audit_trail_details"


    @staticmethod
    def custom_insert(audit_trail, action, new_data=None, old_data=None, remark_param=None):
        if audit_trail.type == AuditTrail.TYPE['admin']:
            string_code_type = "admin"
        elif audit_trail.type == AuditTrail.TYPE['medical']:
            string_code_type = "medical"

        model = AuditTrailDetails()
        model.audit_trail_id = audit_trail.id
        model.action = action
        model.remark_string_code = "audit_trail.remark." + string_code_type + "." + action
        model.old_data = old_data or None
        model.new_data = new_data or None
        model.remark_param = remark_param or None

        # match action:
        #     case _: # this is default, do nothings
        #         model.remark_param["extra"] = "Other action"

        model.save()
        return model

