from django.db import models

from common.base_models import BaseModel
from common.constants import ACTIVITY_STATUSES

from apps.user.models import User
from apps.project.models import Project



class TimeSheet(BaseModel):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    clock_in_date_time = models.DateTimeField()
    clock_out_date_time = models.DateTimeField(null=True)
    total_duration = models.DurationField(null=True)
    is_auto_clocked_out = models.BooleanField(default=False)

    class Meta:
        db_table = 'timesheets'


class ActivityType(BaseModel):
    name = models.CharField(max_length=255)
    is_location_required = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)

    class Meta:
        db_table = 'activity_types'


class Activity(BaseModel):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    activity_type = models.ForeignKey(ActivityType, on_delete=models.CASCADE)
    start_date_time = models.DateTimeField()
    end_date_time = models.DateTimeField(null=True)
    status = models.CharField(choices=ACTIVITY_STATUSES, max_length=20, default='started')
    description = models.TextField(null=True)
    total_duration = models.DurationField(null=True)
    is_auto_closed = models.BooleanField(default=True)
    pay_per_hour = models.FloatField(null=True)
    class Meta:
        db_table = 'activities'


class ActivityLatLong(BaseModel):
    type = models.CharField(choices=ACTIVITY_STATUSES, max_length=20)
    activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
    lat = models.CharField(max_length=255)
    long = models.CharField(max_length=255)

    class Meta:
        db_table = 'activity_lat_longs'
