import 'package:diplomaticquarterapp/uitl/date_uitl.dart';

class AuthenticatedUser {
  String setupID;
  int patientType;
  int patientID;
  String firstName;
  String middleName;
  String lastName;
  String firstNameN;
  String middleNameN;
  String lastNameN;
  int relationshipID;
  int gender;
  String dateofBirth;
  DateTime dateofBirthDataTime;
  dynamic dateofBirthN;
  String nationalityID;
  dynamic phoneResi;
  dynamic phoneOffice;
  String mobileNumber;
  dynamic faxNumber;
  String emailAddress;
  dynamic bloodGroup;
  dynamic rHFactor;
  bool isEmailAlertRequired;
  bool isSMSAlertRequired;
  String preferredLanguage;
  bool isPrivilegedMember;
  dynamic memberID;
  dynamic expiryDate;
  dynamic isHmgEmployee;
  dynamic employeeID;
  dynamic emergencyContactName;
  dynamic emergencyContactNo;
  int patientPayType;
  dynamic dHCCPatientRefID;
  bool isPatientDummy;
  int status;
  dynamic isStatusCleared;
  int patientIdentificationType;
  String patientIdentificationNo;
  int projectID;
  int infoSourceID;
  dynamic address;
  int age;
  String ageDesc;
  int areaID;
  int createdBy;
  String genderDescription;
  dynamic iR;
  dynamic iSOCityID;
  dynamic iSOCountryID;
  List<ListPrivilege> listPrivilege;
  dynamic marital;
  int outSA;
  dynamic pOBox;
  bool receiveHealthSummaryReport;
  int sourceType;
  dynamic strDateofBirth;
  dynamic tempAddress;
  dynamic zipCode;
  dynamic isFamily;
  dynamic cRSVerificationStatus;
  // dynamic patientPayType;
  // dynamic patientType;
  // dynamic status;

  AuthenticatedUser(
      {this.setupID,
      this.patientType,
      this.patientID,
      this.firstName,
      this.middleName,
      this.lastName,
      this.firstNameN,
      this.middleNameN,
      this.lastNameN,
      this.relationshipID,
      this.gender,
      this.dateofBirth,
      this.dateofBirthN,
      this.nationalityID,
      this.phoneResi,
      this.phoneOffice,
      this.mobileNumber,
      this.faxNumber,
      this.emailAddress,
      this.bloodGroup,
      this.rHFactor,
      this.isEmailAlertRequired,
      this.isSMSAlertRequired,
      this.preferredLanguage,
      this.isPrivilegedMember,
      this.memberID,
      this.expiryDate,
      this.isHmgEmployee,
      this.employeeID,
      this.emergencyContactName,
      this.emergencyContactNo,
      this.patientPayType,
      this.dHCCPatientRefID,
      this.isPatientDummy,
      this.status,
      this.isStatusCleared,
      this.patientIdentificationType,
      this.patientIdentificationNo,
      this.projectID,
      this.infoSourceID,
      this.address,
      this.age,
      this.ageDesc,
      this.areaID,
      this.createdBy,
      this.genderDescription,
      this.iR,
      this.iSOCityID,
      this.iSOCountryID,
      this.listPrivilege,
      this.marital,
      this.outSA,
      this.pOBox,
      this.receiveHealthSummaryReport,
      this.sourceType,
      this.strDateofBirth,
      this.tempAddress,
      this.zipCode,
      this.isFamily,
      this.cRSVerificationStatus});

  AuthenticatedUser.fromJson(Map<String, dynamic> json) {
    setupID = json['SetupID'];
    patientType = json['PatientType'];
    patientID = json['PatientID'];
    firstName = json['FirstName'];
    middleName = json['MiddleName'];
    lastName = json['LastName'];
    firstNameN = json['FirstNameN'];
    middleNameN = json['MiddleNameN'];
    lastNameN = json['LastNameN'];
    relationshipID = json['RelationshipID'];
    gender = json['Gender'];
    dateofBirth = json['DateofBirth'];
    dateofBirthDataTime = DateUtil.convertStringToDate(json['DateofBirth']);
    dateofBirthN = json['DateofBirthN'];
    nationalityID = json['NationalityID'];
    phoneResi = json['PhoneResi'];
    phoneOffice = json['PhoneOffice'];
    mobileNumber = json['MobileNumber'];
    faxNumber = json['FaxNumber'];
    emailAddress = json['EmailAddress'];
    bloodGroup = json['BloodGroup'];
    rHFactor = json['RHFactor'];
    isEmailAlertRequired = json['IsEmailAlertRequired'];
    isSMSAlertRequired = json['IsSMSAlertRequired'];
    preferredLanguage = json['PreferredLanguage'];
    isPrivilegedMember = json['IsPrivilegedMember'];
    memberID = json['MemberID'];
    expiryDate = json['ExpiryDate'];
    isHmgEmployee = json['IsHmgEmployee'];
    employeeID = json['EmployeeID'];
    emergencyContactName = json['EmergencyContactName'];
    emergencyContactNo = json['EmergencyContactNo'];
    patientPayType = json['PatientPayType'];
    dHCCPatientRefID = json['DHCCPatientRefID'];
    isPatientDummy = json['IsPatientDummy'];
    status = json['Status'];
    isStatusCleared = json['IsStatusCleared'];
    patientIdentificationType = json['PatientIdentificationType'];
    patientIdentificationNo = json['PatientIdentificationNo'];
    projectID = json['ProjectID'];
    infoSourceID = json['InfoSourceID'];
    address = json['Address'];
    age = json['Age'];
    ageDesc = json['AgeDesc'];
    areaID = json['AreaID'];
    createdBy = json['CreatedBy'];
    genderDescription = json['GenderDescription'];
    iR = json['IR'];
    iSOCityID = json['ISOCityID'];
    iSOCountryID = json['ISOCountryID'];
    if (json['ListPrivilege'] != null) {
      listPrivilege = new List<ListPrivilege>();
      json['ListPrivilege'].forEach((v) {
        listPrivilege.add(new ListPrivilege.fromJson(v));
      });
    }
    marital = json['Marital'];
    outSA = json['OutSA'];
    pOBox = json['POBox'];
    receiveHealthSummaryReport = json['ReceiveHealthSummaryReport'];
    sourceType = json['SourceType'];
    strDateofBirth = json['StrDateofBirth'];
    tempAddress = json['TempAddress'];
    zipCode = json['ZipCode'];
    isFamily = json['IsFamily'];
    cRSVerificationStatus = json['CRSVerificationStatus'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['SetupID'] = this.setupID;
    data['PatientType'] = this.patientType;
    data['PatientID'] = this.patientID;
    data['FirstName'] = this.firstName;
    data['MiddleName'] = this.middleName;
    data['LastName'] = this.lastName;
    data['FirstNameN'] = this.firstNameN;
    data['MiddleNameN'] = this.middleNameN;
    data['LastNameN'] = this.lastNameN;
    data['RelationshipID'] = this.relationshipID;
    data['Gender'] = this.gender;
    data['DateofBirth'] = this.dateofBirth;
    data['DateofBirthN'] = this.dateofBirthN;
    data['NationalityID'] = this.nationalityID;
    data['PhoneResi'] = this.phoneResi;
    data['PhoneOffice'] = this.phoneOffice;
    data['MobileNumber'] = this.mobileNumber;
    data['FaxNumber'] = this.faxNumber;
    data['EmailAddress'] = this.emailAddress;
    data['BloodGroup'] = this.bloodGroup;
    data['RHFactor'] = this.rHFactor;
    data['IsEmailAlertRequired'] = this.isEmailAlertRequired;
    data['IsSMSAlertRequired'] = this.isSMSAlertRequired;
    data['PreferredLanguage'] = this.preferredLanguage;
    data['IsPrivilegedMember'] = this.isPrivilegedMember;
    data['MemberID'] = this.memberID;
    data['ExpiryDate'] = this.expiryDate;
    data['IsHmgEmployee'] = this.isHmgEmployee;
    data['EmployeeID'] = this.employeeID;
    data['EmergencyContactName'] = this.emergencyContactName;
    data['EmergencyContactNo'] = this.emergencyContactNo;
    data['PatientPayType'] = this.patientPayType;
    data['DHCCPatientRefID'] = this.dHCCPatientRefID;
    data['IsPatientDummy'] = this.isPatientDummy;
    data['Status'] = this.status;
    data['IsStatusCleared'] = this.isStatusCleared;
    data['PatientIdentificationType'] = this.patientIdentificationType;
    data['PatientIdentificationNo'] = this.patientIdentificationNo;
    data['ProjectID'] = this.projectID;
    data['InfoSourceID'] = this.infoSourceID;
    data['Address'] = this.address;
    data['Age'] = this.age;
    data['AgeDesc'] = this.ageDesc;
    data['AreaID'] = this.areaID;
    data['CreatedBy'] = this.createdBy;
    data['GenderDescription'] = this.genderDescription;
    data['IR'] = this.iR;
    data['ISOCityID'] = this.iSOCityID;
    data['ISOCountryID'] = this.iSOCountryID;
    if (this.listPrivilege != null) {
      data['ListPrivilege'] =
          this.listPrivilege.map((v) => v.toJson()).toList();
    }
    data['Marital'] = this.marital;
    data['OutSA'] = this.outSA;
    data['POBox'] = this.pOBox;
    data['ReceiveHealthSummaryReport'] = this.receiveHealthSummaryReport;
    data['SourceType'] = this.sourceType;
    data['StrDateofBirth'] = this.strDateofBirth;
    data['TempAddress'] = this.tempAddress;
    data['ZipCode'] = this.zipCode;
    data['IsFamily'] = this.isFamily;
    data['CRSVerificationStatus'] = this.cRSVerificationStatus;
    return data;
  }
}

class ListPrivilege {
  int iD;
  String serviceName;
  bool previlege;
  dynamic region;

  ListPrivilege({this.iD, this.serviceName, this.previlege, this.region});

  ListPrivilege.fromJson(Map<String, dynamic> json) {
    iD = json['ID'];
    serviceName = json['ServiceName'];
    previlege = json['Previlege'];
    region = json['Region'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['ID'] = this.iD;
    data['ServiceName'] = this.serviceName;
    data['Previlege'] = this.previlege;
    data['Region'] = this.region;
    return data;
  }
}
