from django.db import models
from Subscriber.models import User
from django.utils.translation import gettext_lazy as _


# Create your models here.
class dexa_results(models.Model):
    dexa_result_id = models.IntegerField(null=False, blank=False)
    appt_id = models.IntegerField(null=False, blank=False)
    first_name = models.CharField(max_length=20, blank=True)
    last_name = models.CharField(max_length=20, blank=True)
    gender = models.CharField(max_length=20, blank=True)
    measure_date = models.CharField(max_length=20, blank=True)
    most_recent_measurement_date = models.CharField(max_length=20, blank=True)
    male = models.CharField(max_length=10, blank=True)
    user_id = models.ForeignKey(User, related_name='user_result',on_delete=models.CASCADE, blank=True,null=True)
    age = models.IntegerField(blank=True,null=True)
    arms_bmc = models.IntegerField(blank=True,null=True)
    arm_left_bmc = models.IntegerField(blank=True,null=True)
    arm_right_bmc = models.IntegerField(blank=True,null=True)
    legs_bmc = models.IntegerField(blank=True,null=True)
    leg_left_bmc = models.IntegerField(blank=True,null=True)
    leg_right_bmc = models.IntegerField(blank=True,null=True)
    ribs_bmc = models.IntegerField(blank=True,null=True)
    trunk_bmc = models.IntegerField(blank=True,null=True)
    trunk_left_bmc = models.IntegerField(blank=True,null=True)
    trunk_right_bmc = models.IntegerField(blank=True,null=True)
    head_bmc = models.IntegerField(blank=True,null=True)
    spine_bmc = models.IntegerField(blank=True,null=True)
    pelvis_bmc = models.IntegerField(blank=True,null=True)
    total_bmc = models.IntegerField(blank=True,null=True)
    total_left_bmc = models.IntegerField(blank=True,null=True)
    total_right_bmc = models.IntegerField(blank=True,null=True)
    arms_area = models.IntegerField(blank=True,null=True)
    arm_left_area = models.IntegerField(blank=True,null=True)
    arm_right_area = models.IntegerField(blank=True,null=True)
    legs_area = models.IntegerField(blank=True,null=True)
    leg_left_area = models.IntegerField(blank=True,null=True)
    leg_right_area = models.IntegerField(blank=True,null=True)
    ribs_area = models.IntegerField(blank=True,null=True)
    trunk_area = models.IntegerField(blank=True,null=True)
    trunk_left_area = models.IntegerField(blank=True,null=True)
    trunk_right_area = models.IntegerField(blank=True,null=True)
    head_area = models.IntegerField(blank=True,null=True)
    spine_area = models.IntegerField(blank=True,null=True)
    pelvis_area = models.IntegerField(blank=True,null=True)
    total_area = models.IntegerField(blank=True,null=True)
    total_left_area = models.IntegerField(blank=True,null=True)
    total_right_area = models.IntegerField(blank=True,null=True)
    total_lean_mass = models.IntegerField(blank=True,null=True)
    total_fat_mass = models.IntegerField(blank=True,null=True)
    total_bone_mass = models.IntegerField(blank=True,null=True)
    total_tissue_mass = models.IntegerField(blank=True,null=True)
    total_fat_free_mass = models.IntegerField(blank=True,null=True)
    total_left_lean_mass = models.IntegerField(blank=True,null=True)
    total_left_fat_mass = models.IntegerField(blank=True,null=True)
    total_left_bone_mass = models.IntegerField(blank=True,null=True)
    total_left_tissue_mass = models.IntegerField(blank=True,null=True)
    total_left_fat_free_mass = models.IntegerField(blank=True,null=True)
    total_right_lean_mass = models.IntegerField(blank=True,null=True)
    total_right_fat_mass = models.IntegerField(blank=True,null=True)
    total_right_bone_mass = models.IntegerField(blank=True,null=True)
    total_right_tissue_mass = models.IntegerField(blank=True,null=True)
    total_right_fat_free_mass = models.IntegerField(blank=True,null=True)
    total_diff_lean_mass = models.IntegerField(blank=True,null=True)
    total_diff_fat_mass = models.IntegerField(blank=True,null=True)
    total_diff_bone_mass = models.IntegerField(blank=True,null=True)
    total_diff_tissue_mass = models.IntegerField(blank=True,null=True)
    total_diff_fat_free_mass = models.IntegerField(blank=True,null=True)
    arms_lean_mass = models.IntegerField(blank=True,null=True)
    arms_lean_mass = models.IntegerField(blank=True,null=True)
    arms_fat_mass = models.IntegerField(blank=True,null=True)
    arms_bone_mass = models.IntegerField(blank=True,null=True)
    arms_tissue_mass = models.IntegerField(blank=True,null=True)
    arms_fat_free_mass = models.IntegerField(blank=True,null=True)
    arm_left_lean_mass = models.IntegerField(blank=True,null=True)
    arm_left_fat_mass = models.IntegerField(blank=True,null=True)
    arm_left_bone_mass = models.IntegerField(blank=True,null=True)
    arm_left_tissue_mass = models.IntegerField(blank=True,null=True)
    arm_left_fat_free_mass = models.IntegerField(blank=True,null=True)
    arm_right_lean_mass = models.IntegerField(blank=True,null=True)
    arm_right_fat_mass = models.IntegerField(blank=True,null=True)
    arm_right_bone_mass = models.IntegerField(blank=True,null=True)
    arm_right_tissue_mass = models.IntegerField(blank=True,null=True)
    arm_right_fat_free_mass = models.IntegerField(blank=True,null=True)
    arm_diff_lean_mass = models.IntegerField(blank=True,null=True)
    arm_diff_fat_mass = models.IntegerField(blank=True,null=True)
    arm_diff_bone_mass = models.IntegerField(blank=True,null=True)
    arm_diff_tissue_mass = models.IntegerField(blank=True,null=True)
    arm_diff_fat_free_mass = models.IntegerField(blank=True,null=True)
    legs_lean_mass = models.IntegerField(blank=True,null=True)
    legs_fat_mass = models.IntegerField(blank=True,null=True)
    legs_bone_mass = models.IntegerField(blank=True,null=True)
    legs_tissue_mass = models.IntegerField(blank=True,null=True)
    legs_fat_free_mass = models.IntegerField(blank=True,null=True)
    leg_left_lean_mass = models.IntegerField(blank=True,null=True)
    leg_left_fat_mass = models.IntegerField(blank=True,null=True)
    leg_left_bone_mass = models.IntegerField(blank=True,null=True)
    leg_left_tissue_mass = models.IntegerField(blank=True,null=True)
    leg_left_fat_free_mass = models.IntegerField(blank=True,null=True)
    leg_right_lean_mass = models.IntegerField(blank=True,null=True)
    leg_right_fat_mass = models.IntegerField(blank=True,null=True)
    leg_right_bone_mass = models.IntegerField(blank=True,null=True)
    leg_right_tissue_mass = models.IntegerField(blank=True,null=True)
    leg_right_fat_free_mass = models.IntegerField(blank=True,null=True)
    legs_diff_lean_mass = models.IntegerField(blank=True,null=True)
    legs_diff_fat_mass = models.IntegerField(blank=True,null=True)
    legs_diff_bone_mass = models.IntegerField(blank=True,null=True)
    legs_diff_tissue_mass = models.IntegerField(blank=True,null=True)
    legs_diff_fat_free_mass = models.IntegerField(blank=True,null=True)
    trunk_lean_mass = models.IntegerField(blank=True,null=True)
    trunk_fat_mass = models.IntegerField(blank=True,null=True)
    trunk_bone_mass = models.IntegerField(blank=True,null=True)
    trunk_tissue_mass = models.IntegerField(blank=True,null=True)
    trunk_fat_free_mass = models.IntegerField(blank=True,null=True)
    trunk_left_lean_mass = models.IntegerField(blank=True,null=True)
    trunk_left_fat_mass = models.IntegerField(blank=True,null=True)
    trunk_left_bone_mass = models.IntegerField(blank=True,null=True)
    trunk_left_tissue_mass = models.IntegerField(blank=True,null=True)
    trunk_left_fat_free_mass = models.IntegerField(blank=True,null=True)
    trunk_right_lean_mass = models.IntegerField(blank=True,null=True)
    trunk_right_fat_mass = models.IntegerField(blank=True,null=True)
    trunk_right_bone_mass = models.IntegerField(blank=True,null=True)
    trunk_right_tissue_mass = models.IntegerField(blank=True,null=True)
    trunk_right_fat_free_mass = models.IntegerField(blank=True,null=True)
    trunk_diff_lean_mass = models.IntegerField(blank=True,null=True)
    trunk_diff_fat_mass = models.IntegerField(blank=True,null=True)
    trunk_diff_bone_mass = models.IntegerField(blank=True,null=True)
    trunk_diff_tissue_mass = models.IntegerField(blank=True,null=True)
    trunk_diff_fat_free_mass = models.IntegerField(blank=True,null=True)
    android_lean_mass = models.IntegerField(blank=True,null=True)
    android_fat_mass = models.IntegerField(blank=True,null=True)
    android_bone_mass = models.IntegerField(blank=True,null=True)
    android_tissue_mass = models.IntegerField(blank=True,null=True)
    android_fat_free_mass = models.IntegerField(blank=True,null=True)
    gynoid_lean_mass = models.IntegerField(blank=True,null=True)
    gynoid_fat_mass = models.IntegerField(blank=True,null=True)
    gynoid_bone_mass = models.IntegerField(blank=True,null=True)
    gynoid_tissue_mass = models.IntegerField(blank=True,null=True)
    gynoid_fat_free_mass = models.IntegerField(blank=True,null=True)
    total_total_mass = models.IntegerField(blank=True,null=True)
    total_left_total_mass = models.IntegerField(blank=True,null=True)
    total_right_total_mass = models.IntegerField(blank=True,null=True)
    total_diff_total_mass = models.IntegerField(blank=True,null=True)
    arms_total_mass = models.IntegerField(blank=True,null=True)
    arms_left_total_mass = models.IntegerField(blank=True,null=True)
    arms_right_total_mass = models.IntegerField(blank=True,null=True)
    arms_diff_total_mass = models.IntegerField(blank=True,null=True)
    legs_total_mass = models.IntegerField(blank=True,null=True)
    legs_left_total_mass = models.IntegerField(blank=True,null=True)
    legs_right_total_mass = models.IntegerField(blank=True,null=True)
    legs_diff_total_mass = models.IntegerField(blank=True,null=True)
    trunk_total_mass = models.IntegerField(blank=True,null=True)
    trunk_left_total_mass = models.IntegerField(blank=True,null=True)
    trunk_right_total_mass = models.IntegerField(blank=True,null=True)
    trunk_diff_total_mass = models.IntegerField(blank=True,null=True)
    android_total_mass = models.IntegerField(blank=True,null=True)
    gynoid_total_mass = models.IntegerField(blank=True,null=True)
    weight = models.IntegerField(blank=True,null=True)
    weight_at_exam = models.IntegerField(blank=True,null=True)
    weight = models.IntegerField(blank=True,null=True)
    total_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_left_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_left_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_right_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_right_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_diff_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_diff_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arms_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arms_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arm_left_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arm_left_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arm_right_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arm_right_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arms_diff_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    arms_diff_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    legs_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    legs_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    leg_left_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    leg_left_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    leg_right_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    leg_right_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)   
    legs_diff_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    legs_diff_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_left_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_left_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_right_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_right_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_diff_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    trunk_diff_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    android_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    android_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    gynoid_region_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    gynoid_tissue_percent_fat = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    vat_mass = models.IntegerField(blank=True,null=True)
    vat_volume = models.IntegerField(blank=True,null=True)
    height = models.IntegerField(blank=True,null=True)
    height_at_exam = models.IntegerField(blank=True,null=True)    
    arms_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    arm_left_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    arm_right_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    legs_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    leg_left_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    leg_right_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    ribs_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    trunk_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    trunk_left_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    trunk_right_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    head_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    spine_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    pelvis_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    total_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    total_left_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    total_right_bmd = models.DecimalField(max_digits=6, decimal_places=3,blank=True,null=True)
    total_z_score = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    total_t_score = models.DecimalField(max_digits=6, decimal_places=1,blank=True,null=True)
    bmi = models.DecimalField(max_digits=6, decimal_places=2,blank=True,null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    image = models.TextField(blank=False, null=False)


class appointments(models.Model):
    appt_id = models.IntegerField(null=False, blank=False)
    start_time = models.IntegerField(null=False, blank=False)
    end_time = models.IntegerField(null=False, blank=False)
    user_id = models.ForeignKey(User, related_name='user_appt',on_delete=models.CASCADE, blank=True,null=True)
    has_dexa = models.SmallIntegerField(default=0)
    has_rmr = models.SmallIntegerField(default=0)
    has_vo2 = models.SmallIntegerField(default=0)
    br_code = models.CharField(null=False,blank=False,max_length=45)
    token = models.CharField(null=True,blank=True,max_length=80)
    height = models.IntegerField(null=True,blank=True)
    weight = models.IntegerField(null=True,blank=True)
    SED = 1
    LIGHT = 2
    MOD = 3
    HEAVY = 4
    INTENSE = 5
    lIFESTYLE_TYPE_CHOICES = (
        (SED, _('SED')),
        (LIGHT, _('LIGHT')),
        (HEAVY, _('HEAVY')),
        (INTENSE, _('INTENSE'))
    )
    lifestyle_choices = models.SmallIntegerField(choices=lIFESTYLE_TYPE_CHOICES,null=True,blank=True)
    weight_training = models.SmallIntegerField(null=True,blank=True)
    cardio_minutes = models.IntegerField(null=True, blank=True)
    cardio_method = models.CharField(null=True, blank=True,max_length=45)
    CUT = 1
    BULK = 2
    MAINTAIN = 3
    GOAL_CHOICES = (
        (CUT, _('CUT')),
        (BULK, _('BULK')),
        (MAINTAIN, _('MAINTAIN'))
    )
    GOAL = models.SmallIntegerField(choices=GOAL_CHOICES,null=True,blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    




class employees(models.Model):
    employee_id = models.IntegerField(null=False, blank=False, unique=True)
    first_name = models.CharField(null=False,blank=False,max_length=45)
    email = models.CharField(null=False,blank=False,max_length=45, unique=True )
    password = models.CharField(null=True,blank=True,max_length=255)
    is_technician = models.SmallIntegerField(default=0)
    is_admin = models.SmallIntegerField(default=0)
    br_code = models.CharField(null=True,blank=True,max_length=45)
    reset_email_token = models.CharField(null=True,blank=True,max_length=100)
    reset_email_expiry = models.SmallIntegerField(default=0)
    

    
    
    
    
    





















