from ..cw_model import CWModel


class Ticket(CWModel):

    def __init__(self, json_dict=None):
        self.id = None  # (Integer)
        self.summary = None  # * (String(100))
        self.recordType = None  # (Enum)
        self.board = None  # (BoardReference)
        self.status = None  # (ServiceStatusReference)
        self.project = None  # (ProjectReference)
        self.phase = None  # (ProjectPhaseReference)
        self.wbsCode = None  # (String(50))
        self.company = None  # * (CompanyReference)
        self.site = None  # (SiteReference)
        self.siteName = None  # (String(50))
        self.addressLine1 = None  # (String(50))
        self.addressLine2 = None  # (String(50))
        self.city = None  # (String(50))
        self.stateIdentifier = None  # (String(50))
        self.zip = None  # (String(12))
        self.country = None  # (CountryReference)
        self.contact = None  # (ContactReference)
        self.contactPhoneNumber = None  # (String(20))
        self.contactPhoneExtension = None  # (String(15))
        self.contactEmailAddress = None  # (String(250))
        self.type = None  # (ServiceTypeReference)
        self.subType = None  # (ServiceSubTypeReference)
        self.item = None  # (ServiceItemReference)
        self.team = None  # (ServiceTeamReference)
        self.owner = None  # (MemberReference)
        self.priority = None  # (PriorityReference)
        self.serviceLocation = None  # (ServiceLocationReference)
        self.source = None  # (ServiceSourceReference)
        self.requiredDate = None  # (String)
        self.budgetHours = None  # (Number)
        self.opportunity = None  # (OpportunityReference)
        self.agreement = None  # (AgreementReference)
        self.severity = None  # (Enum)
        self.impact = None  # (Enum)
        self.externalXRef = None  # (String(100))
        self.poNumber = None  # (String(50))
        self.knowledgeBaseCategoryId = None  # (Integer)
        self.knowledgeBaseSubCategoryId = None  # (Integer)
        self.allowAllClientsPortalView = None  # (Boolean)
        self.customerUpdatedFlag = None  # (Boolean)
        self.automaticEmailContactFlag = None  # (Boolean)
        self.automaticEmailResourceFlag = None  # (Boolean)
        self.automaticEmailCcFlag = None  # (Boolean)
        self.automaticEmailCc = None  # (String(1000))
        self.initialDescription = None  # (String)
        self.initialInternalAnalysis = None  # (String)
        self.initialResolution = None  # (String)
        self.contactEmailLookup = None  # (String)
        self.processNotifications = None  # (Boolean)
        self.skipCallback = None  # (Boolean)
        self.closedDate = None  # (String)
        self.closedBy = None  # (String)
        self.closedFlag = None  # (Boolean)
        self.dateEntered = None  # (String)
        self.enteredBy = None  # (String)
        self.actualHours = None  # (Number)
        self.approved = None  # (Boolean)
        self.subBillingMethod = None  # (Enum)
        self.subBillingAmount = None  # (Number)
        self.subDateAccepted = None  # (String)
        self.dateResolved = None  # (String)
        self.dateResplan = None  # (String)
        self.dateResponded = None  # (String)
        self.resolveMinutes = None  # (Integer)
        self.resPlanMinutes = None  # (Integer)
        self.respondMinutes = None  # (Integer)
        self.isInSla = None  # (Boolean)
        self.knowledgeBaseLinkId = None  # (Integer)
        self.resources = None  # (String)
        self.parentTicketId = None  # (Integer)
        self.hasChildTicket = None  # (Boolean)
        self.knowledgeBaseLinkType = None  # (Enum)
        self.billTime = None  # (Enum)
        self.billExpenses = None  # (Enum)
        self.billProducts = None  # (Enum)
        self.predecessorType = None  # (Enum)
        self.predecessorId = None  # (Integer)
        self.predecessorClosedFlag = None  # (Boolean)
        self.lagDays = None  # (Integer)
        self.lagNonworkingDaysFlag = None  # (Boolean)
        self.estimatedStartDate = None  # (String)
        self.duration = None  # (Integer)
        self.locationId = None  # (Integer)
        self.businessUnitId = None  # (Integer)
        self.mobileGuid = None  # (Guid)
        self.sla = None  # (SLAReference)
        self._info = None  # (Metadata)
        self.customFields = None  # (Array)

        # initialize object with json dict
        super().__init__(json_dict)
