from django.conf import settings
from django.db import models
from apps.core.models import TimeStampedModel
from apps.organization.models import Company

class ImportJob(TimeStampedModel):
    company = models.ForeignKey(Company, on_delete=models.PROTECT, related_name="import_jobs")
    import_type = models.CharField(max_length=40)
    source_file = models.FileField(upload_to="imports/")
    status = models.CharField(max_length=30, default="UPLOADED")
    total_rows = models.PositiveIntegerField(default=0)
    valid_rows = models.PositiveIntegerField(default=0)
    error_rows = models.PositiveIntegerField(default=0)
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, related_name="import_jobs")
    confirmed_at = models.DateTimeField(null=True, blank=True)
    staged_rows = models.JSONField(default=list, blank=True)
    result_summary = models.JSONField(default=dict, blank=True)

class ImportRowError(TimeStampedModel):
    job = models.ForeignKey(ImportJob, on_delete=models.CASCADE, related_name="row_errors")
    row_number = models.PositiveIntegerField()
    field_name = models.CharField(max_length=100, blank=True)
    message = models.TextField()
    raw_row = models.JSONField(default=dict, blank=True)
