from django.db import models
from django.contrib.auth.models import User
from farmerapp.models import Farmer, CultureableName
from contacts.models import ContactPerson


class Interaction(models.Model):
    INTERACTION_TYPES = [
        ('phone', 'Phone Call'),
        ('email', 'Email'),
        ('viber', 'Viber'),
        ('telegram', 'Telegram'),
        ('meeting', 'Meeting'),
    ]

    CLIENT_STATUS_CHOICES = [
        ('unprocessed', 'Не оброблений'),
        ('cold', 'Холодний'),
        ('warm', 'Теплий'),
        ('hot', 'Гарячий'),
    ]

    BASIS_CHOICES = [
        ('CPT', 'CPT'),
        ('FCA', 'FCA'),
        ('DAP', 'DAP'),
        ('FOB', 'FOB'),
        ('EXW', 'EXW'),
        ('CIF', 'CIF'),
    ]

    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='interactions')
    assigned_to = models.ForeignKey(User, on_delete=models.CASCADE, related_name='assigned_interactions', null=True, blank=True)
    farmer = models.ForeignKey(Farmer, on_delete=models.CASCADE, related_name='interactions')
    contact_person = models.ForeignKey(ContactPerson, on_delete=models.SET_NULL, null=True, blank=True, related_name='interactions')
    interaction_type = models.CharField(max_length=50, choices=INTERACTION_TYPES)
    culture = models.CharField(max_length=255, blank=True, null=True)
    cultures = models.ManyToManyField(CultureableName, related_name='interactions')
    price = models.DecimalField(max_digits=10, decimal_places=2)
    desired_price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)
    basis = models.CharField(max_length=255, choices=BASIS_CHOICES)
    comment = models.TextField(blank=True, null=True)
    date = models.DateTimeField(auto_now_add=True)
    next_interaction_date = models.DateTimeField(null=True, blank=True)
    client_status = models.CharField(max_length=20, choices=CLIENT_STATUS_CHOICES, default='unprocessed')

    def __str__(self):
        return f"{self.farmer.name} - {self.interaction_type} - {self.user.username}"
