from field import *
from user import *
import time
import clr

clr.AddReference('System')
from System import Guid, Convert


class UserFieldRecord:
    fid = ""
    uid = ""
    start_time: time.struct_time
    end_time: time.struct_time

    def __init__(self, *args, **kwargs):
        if len(args) == 0:
            pass
        if len(args) == 1:
            field_record = args[0]
            self.fid = field_record.Fid.ToString()
            self.uid = field_record.Uid.ToString()
            self.start_time = time.strptime(field_record.StartTime.ToString(), "%Y-%m-%d %H:%M:%S")
            self.end_time = time.strptime(field_record.EndTime.ToString(), "%Y-%m-%d %H:%M:%S")
        elif len(args) == 4 and isinstance(args[0], User) and isinstance(args[1], Field) and isinstance(args[2],
                                                                                                        time.struct_time) and isinstance(
            args[3], time.struct_time):
            user, field, start_time, end_time = args
            self.fid = field.id
            self.uid = user.id
            self.start_time = start_time
            self.end_time = end_time
        else:
            raise ValueError("Invalid arguments for UserFieldRecord initialization")

    def parse_to_csharp_object(self, empty_field_record):
        empty_field_record.Fid = Guid.Parse(self.fid)
        empty_field_record.Uid = Guid.Parse(self.uid)
        empty_field_record.StartTime = Convert.ToDateTime(time.strftime("%Y-%m-%d %H:%M:%S", self.start_time))
        empty_field_record.EndTime = Convert.ToDateTime(time.strftime("%Y-%m-%d %H:%M:%S", self.end_time))
        return empty_field_record