{"version":3,"sources":["enquirySummary/drawers/EnquiryFormDrawer.tsx","enquirySummary/radio/OutcomeRadio.tsx","enquirySummary/radio/ActionTypeRadio.tsx","enquirySummary/dialogs/SendEmailDialog.tsx","enquirySummary/hooks/useCreateEnquiryMutation.ts"],"names":["EnquiryFormTab","useStyles","theme","root","padding","width","minWidth","maxWidth","flex","display","flexFlow","position","innerGridContainer","marginTop","marginBottom","hidden","heading","fontSize","typography","pxToRem","color","TemplateColor","Primary","alignItems","textField","buttonContainer","justifyContent","margin","button","spacing","chips","flexWrap","chip","marginLeft","headerDetails","fontWeight","headerLeft","headerRight","customFieldGrid","paddingTop","expandablePanelDetails","paddingBottom","expansionPanelSummary","minHeight","infoContainer","paddingLeft","marginRight","textOverflow","whiteSpace","overflow","textAlign","dropZone","formControl","hideDate","expansionPanel","expansionPanel2","boxShadow","loaderWrapper","top","bottom","right","left","tabs","historyActivityContainer","historyActivityWrapper","activityTab","labelWithIcon","internalNotes","fontStyle","divider","dropZoneFont","checkedIcon","createClientButton","customGroupButton","contactsContainer","expandDrawer","height","dropzoneClass","checkoxContainer","checkbboxWrapper","referrerFieldWrapepr","toggleFieldWrapepr","formControlLabel","startTimeWrapper","textFieldWrapper","staffWrapper","noEmailMeetingWrapper","backgroundColor","mainControlWrapper","selector","fieldAndCheckbox","ratingWrapper","AccordionSummary","headingIcon","displayFlex","card","background","borderRadius","fontFamily","BrandColors","TemplatePrimary","cardWrapper","matterSelectorWrapper","flex2","notes","readRatingWrapper","truncateText","associatedWarning","gap","associatedColor","showContactWrapper","LightTooltip","arrow","palette","common","white","shadows","tooltip","EnquiryFormDrawer","props","classes","countryQuery","tenantQuery","t","isLoading","setIsLoading","isCustomFieldLoading","setIsCustomFieldLoading","filesKey","setKey","appUser","setAppUser","history","regionSettings","isCreateForm","formAction","isFormChanged","showDiscard","tab","details","isEmailNotification","isCreateClient","sourceSystem","homeCountry","isCreateClientOpen","isExpandDrawer","currency","isSendEmailDialogOpen","hideSendAcknowledgement","generalInfoData","undefined","financials","isMarkClientMatterCreatedOpen","matterClientName","isContactDetailsPanelExpand","isEnquiryDetailsPanelExpand","isDetailedEnquiryNotesPanelExpand","isDigitalTrackingPanelExpand","isAssignPanelExpand","isFormSubmit","enquiryQuality","likelihoodToProceed","isOtherContactDetailsPanelExpand","isOtherDetailsPanelExpand","isOther2DetailsPanelExpand","isClient2PostalAddressPanelExpand","isPostalAddressPanelExpand","isOtherSidePostalAddressPanelExpand","timezone","isOtherSidePanelExpand","isBookMeetingFromHistoryActivity","customFieldByHierarchy","state","setState","isSubmitting","setIsSubmitting","enquiryActionData","setEnquiryActionData","tasks","actualRowCountForSearch","recordCount","leadDetailsHistory","setLeadDetailsHistory","guid","createdDate","toDate","createdByName","lastUpdated","isClosed","isContactCreated","isMatterCreated","firstName","lastName","email","gender","initialEnquiryDate","phone","mobile","sourceGuidID","source","isSourceReferrer","officeGuidID","office","sourceNotes","organisation","positionAtOrganisation","areaOfLaw","practiceAreaGuidID","natureOfEnquiry","files","assignedTo","assignedToName","assignedToEmailAddress","assignedBy","assignedByName","assignedByEmailAddress","dateAssigned","followUpDueDate","assignmentReminderOffset","followUpActionGuidID","followUpAction","followUpActionSystemName","followUpSystemAction","followUpDate","outcomeGuidID","outcome","outcomeDate","outcomeNotes","reason","reasonGuidID","followUpNotes","isKeyOpportunity","referrerGuid","referrerName","nameGuid","nameTitle","organisationGuid","estimatedFees","isEstimatedFeesIncludesTax","estimatedDisbursements","isEstimatedDisbursementsIncludesTax","clientFirstName","clientLastName","dOB","isMarketingConsent","isTermsAndConditionsApproved","isPrivacyStatementProvided","isConflictCheckPerformed","isNoConflict","isIdentityCheckPerformed","addressName","floor","number","street","clientAddressStreet2","suburb","postcode","country","pOBoxType","pOBox","postalSuburb","postalState","postalPostCode","postalCountry","referredToFirmGuid","referredToFirmName","notProceedingOutcomeNotes","clientRelationshipToEnquirer","matterId","matterGuid","matterTitle","matterFileNumber","assignedToIsStaff","assignedToStaffGuid","assignedToStaffName","otherPartyFirstName","otherPartyLastName","otherPartyNotes","otherPartyEmail","otherPartyPhone","otherPartyMobile","otherPartyOrganisation","enquiryNotes","integrationContactId","integrationClientId","integrationOtherPartyId","integrationMatterId","integrationMatterDocumentId","otherPartyDOB","otherPartyAddressName","otherPartyFloor","otherPartyNumber","otherPartyStreet","otherPartyStreet2","otherPartySuburb","otherPartyState","otherPartyPostcode","otherPartyCountry","otherPartyPOBoxType","otherPartyPOBox","otherPartyPostalSuburb","otherPartyPostalState","otherPartyPostalPostCode","otherPartyPostalCountry","otherPartyNameGuid","otherPartyOrganisationGuid","isRiskAssessed","riskLevelGuid","riskLevel","riskNotes","secondClientFirstName","secondClientLastName","secondClientRelationshipToEnquirer","secondClientGender","secondClientSuburb","secondClientState","secondClientPostCode","secondClientIsMarketingConsent","secondClientIsTermsAndConditionsApproved","secondClientIsPrivacyStatementProvided","secondClientIsConflictCheckPerformed","secondClientIsIdentityCheckPerformed","secondClientIsNoConflict","secondClientCountry","secondClientAddressName","secondClientFloor","secondClientNumber","secondClientStreet1","secondClientStreet2","secondClientDOB","secondClientPOBoxType","secondClientPOBox","secondClientPostalSuburb","secondClientPostalState","secondClientPostalPostCode","secondClientPostalCountry","secondClientGuid","responseText","eventAndCampaignGuid","eventAndCampaignName","eventAndCampaignNotes","eventAndCampaignNotesGuid","isNameFromDataSource","isOrganisationFromDataSource","isOtherSideFromDataSource","isSecondClientFromDataSource","title","otherPartyTitle","clientTitle","clientGuid","clientEmail","clientPhone","clientMobile","secondClientTitle","secondClientEmail","secondClientPhone","secondClientMobile","customFields","clickThroughUrl","utmSource","utmMedium","utmCampaign","utmContent","utmKeyword","googleClickIdentifier","facebookClickIdentifier","enquiryDetail","setEnquiryDetails","getReminderValue","isAssignment","label","value","enquiryDefaultConfig","reminder","onGetCustomFields","input","form","params","data","onDataGetCustomFieldsRetrieved","crm","prevState","checkEmailTemplateCount","fetchCurrency","fetchAppUserOnEffect","fetchEnquiryDetails","fetchTenantDataOnEffect","fetchHomeCountryOnEffect","fetchTimezone","fetchLeadDetailsHistory","isRefreshData","taskSummary","shouldExecuteQuery","nameSummary","eventAndCampaignAttendeeSummary","entityTypeId","partyDetails","partyAddressesQuery","variables","nameId","isFromDataSource","id","skip","initialValues","duplicateCheck","isBookMeetingEmailDialogOpen","individualSelector","isNameSwitched","organisationSelector","isOrganisationSwitched","assignmentFollowUpDueReminder","hasFollowUpNotesMentions","followUpDueReminder","handleCreateAndClose","handleCreateAndNew","handleUpdate","isAssignmentExpand","isNotProceeding","notProceedingReason","notProceedingReasonGuid","isShowReferrer","staff","startTime","endTime","isAllDay","officeLocation","feeApplicable","isSendConfirmation","meetingNotes","emailTemplate","isContactDetailsChanged","isUpdateContacts","isSentAcknowledgementEmail","updateFollowUpDueForInternalNote","outcomeDateChanged","street2","isShowNotProceedingReferrer","isNotProceedingReferrerSwitched","referredToFirmSelector","isShowNotProceedingReferrerInProceeding","isNotProceedingReferrerSwitchedInProceeding","referredToFirmSelectorInProceeding","referredToFirmGuidInProceeding","referredToFirmNameInProceeding","notProceedingOutcomeNotesInProceeding","matterSelector","isOtherPartyNameSwitched","otherPartyIndividualSelector","isSavedDirectly","riskLevelSelector","followUpBotUrl","eventAndCampaignSelector","eventsAndCampaignNotes","clientIndividualSelector","isClientNameSwitched","secondClientIndividualSelector","isSecondClientNameSwitched","fromName","fromNameGuid","fromNameId","guidID","phoneNumber","attendee","name","entityGuid","attendanceNotes","emailAddress","emailAddresses","nameSummaryPartyDefailts","getPhoneNumberByType","phoneNumbers","type","length","find","getFirstAddressOfEachType","addressTypes","Set","firstAddresses","party","addresses","address","has","addressType","add","push","loading","forEach","buildingName","buildingNumber","addressState","open","fetchMatterDetails","generalInfoDataParams","handleMatterDetailsFetch","generalData","Object","entries","matter","filter","v","map","index","STRING","hide","order","DATE","image","location","ARRAY_OF_IMAGE","client","company","handleAppUserFetch","isAdministrator","prevAppUser","userId","userName","onDataCurrency","options","currencySymbol","symbol","onRetrieveTimezoneData","timezoneOption","leadQueryParams","offset","first","sortColumn","sortDirection","entityGuidID","onEnquiryHistoryDataRetrieved","task","summaryList","createClientTask","taskTypeDescription","toLowerCase","taskStatusDescription","onGetPartyAddresses","values","selection","onDataPartyAddressesRetrieved","change","enquiryQueryParams","onDataRetrieved","emailTemplateCountQueryParams","emailType","NEW_ENQUIRY_RESPONSE","onDataEmailTemplateCountRetrieved","templates","emailTemplateCount","count","isSentAcknowledgementEmailOldValue","getFieldState","batch","customFieldGroupGuid","areaOfLawGuid","enquiry","detail","activity","actions","handleTenantDataFetch","tenantsData","tenant","handleHomeCountryFetch","optionData","stringValue","required","requiredDateValidator","date","isValid","year","dateValidator","birthDateValidator","emailRegex","isTabActivity","isTabMatter","matterDetails","isPoBoxRequired","isSecondClientPoBoxRequired","isOtherPartyPoBoxRequired","onSubmit","errors","documentFile","status","createEnquiry","linkMatter","unlinkMatter","saveBookMetting","saveFollowUp","existingEnquiryDetails","getEnquiryDetails","updatedValues","updateEnquiry","JSON","stringify","window","startDate","endDate","startDateValue","endDateValue","selectedTimezoneUtcOffset","secondaryValue","uiUtcOffset","Date","getTimezoneOffset","difference","isAssignedToTeam","entityType","mutate","mutation","enquiryGuid","sendConfirmation","staffEntityType","then","results","error","onReset","catch","getFollowUpEnquiryInput","getLinkMatterEnquiryInput","getCreateEnquiryInput","closePanel","getUpdateEnquiryInput","reasonGuid","clientDobFinal","secondClientDobFinal","otherPartyDobFinal","tempcustomFieldValues","customField","custom","dateValueFinal","customFieldType","customFieldValue","customFieldGuid","boolValue","dateValue","currencyValue","Currency","dateTimeValue","integerValue","Integer","multiLineTextValue","numberValue","Number","textValue","Text","customFieldLookupListItemGuid","GetFiles","reminderOffset","notProceedingNotes","sendNotification","isSendEnquiryResponse","otherPartyGuid","organisationName","onDropDownSelect","followUpDueValue","getFollowUpDueDefaultValue","organisationSelectorValue","city","postCode","referredToFirmSelectorValue","referredToFirmSelectorInProceedingValue","onSwitch","setConfig","reset","initialize","resetFieldState","HasAccess","hasKeyOpportunity","isForceClose","onEnquiryFormClosed","onActionButtonClick","onExpandPanel","panel","event","expanded","onRatingChange","isDirectCallMutation","onUpdateEnquiryQuality","onUpdateLikelihood","onChange","guidId","onToggleBookMeetingEmailDialog","isOpen","actionButton","submitting","pristine","showEmailNotificationCheckbox","isShowTab","isShowKeyOpportunity","isShowSentAcknowledgementCheckBox","showModifyAndSend","isModifyAndSendPassRequirements","hasBookMeetingEmailPreview","className","variant","onClick","disabled","hasCreateLead","size","hasModifyLead","component","parseInt","hasShowNotificationSendOption","control","checked","onChangeEmailNotification","onSendAcknowledgementEmail","onKeyOpportunity","displayLoader","deepEqual","obj1","obj2","keys1","keys","keys2","key","includes","onFormValueChanged","defaultValues","formValues","allTabFields","detailsTab","some","field","console","log","detectUpdatedTab","getState","document","file","hours","minutes","validTimeOfDay","timeOfDay","timeOfDaySplit","split","isCalculatedDays","addBusinessDays","addDays","set","isCalculatedHours","addhours","addHours","getOutcomeDefaultTime","defaultTime","setHours","isManualEntry","reverseCustomFieldConversion","fieldValues","lookupListName","customFieldId","isInitialLoad","fileNumber","onShowMatterDetails","sessionStorage","setItem","tempMatter","href","createHref","pathname","matterManagementState","onDialogClose","estimatedFeesColour","financial","billedTimeAndFees","unbilledTimeAndFees","estimatedCosts","followUpDueDateValidation","canAssign","followUpDueDateRequired","getCorrespondenceRequired","onContactDetailsChanged","checkDuplicateEmail","tempValue","test","isIncludeEnquiry","isIncludeParty","onDataDupicateCheckRetrieved","onCreateClientDialog","reOpenEnquiry","isDateDue","currentDate","diff","showDateEndOfFromNow","fromNow","formatDate","format","handleTabChange","newValue","tabEdited","onDropdownChange","valueGuid","onCheckBoxChanged","onDateTimePickerChange","formApi","defaultMeetingMinutes","defaultMeetingLength","meetingLengthSplit","onOutcomeDateChange","onChangeAllDay","seconds","milliseconds","CustomPopper","popperProps","placement","getFileItems","filteredFiles","url","win","focus","onFileClicked","onInputChanged","getAddressLabelForPanel","level","streetNumber","street1","onSelection","placeType","postalCode","locality","administrativeAreaLevel1","premise","route","structured_formatting","main_text","onChangeSelection","hasOwnProperty","TEAM","STAFF","timezoneDescription","timezoneSelector","baseUtcOffset","settings","systems","config","timeZone","getEnquiryMatterDocumentInput","historyDocument","uploadEnquiryMatterDocument","enquiryDetails","countValidFiles","validFileCount","item","otherSidePanel","panelTitle","trim","expandIcon","container","xs","md","subscription","touched","meta","helperText","autoComplete","enableSecondary","target","validate","placeholder","animateYearScrolling","autoOk","allowKeyboardControl","inputProps","autocomplete","InputLabelProps","shrink","maxDate","multiline","defaultExpanded","freeSolo","otherPartyAddressPanel","placeTypes","otherPartyPostalAddressPanel","validateUrl","RegExp","otherDetailsPanel","includeOrganisation","otherContactDetailsPanel","clientAddressPanel","clientPostalAddressPanel","otherDetails2Panel","client2AddressPanel","client2PostalAddressPanel","enquiryDetailsPanel","n","join","isNatureOfEnquiryMandatory","onSelectionChange","onBlur","validating","openErrorPanel","style","isUSClient","tempReferrer","referrer","isEmailExist","partyDuplicateCount","enquiryContactDuplicateCount","otherSideEmailAddress","sm","lg","contactName","contactEmailAddress","enquiryName","enquiryEmailAddress","otherSideName","onSourceChanged","isLocationFieldMandatory","onReferrerChanged","includeNonPmsContacts","includePmsContacts","isSourceNotesMandatory","isInternalNotesMandatory","hasEventsAndCampaignsSummary","isEventAndCampaignMandatory","contactDetailsPanel","hasEnquiryOrganisation","organisationPanelContent","organisationPanel","hasEnquiryValue","readOnly","parseFloat","prefix","enquiryValuePanels","hasEnquiryClientDetails","hasEnquiryClient2Details","hasEnquiryRiskAssessment","description","riskAssessedPanel","hasEnquiryOtherSide","hasEnquiryDetailedNotes","detailedEnquiryNotesPanel","hasEnquiryDigitalTracking","isDigitalFieldHasValue","digitalTrackingPanel","hasEnquiryDocuments","maxFileSize","showFileNames","useChipsForPreview","filesLimit","dropzoneText","existingFiles","normalizeFileName","decodeURIComponent","newFiles","onDelete","onDrop","onDropRejected","initialFiles","documentsPanel","canFollowUp","isGuidAsValue","displayLabel","isExternal","isAuthorized","initialFocusedDate","showIcon","getAssignment","hasEnquiryProceeding","isHidePanel","handleExpandChange","disablePortal","getProceeding","isMarkClientMatterWidthLong","i","canCreateContactForLostEnquiry","hasCreateClient","canReOpen","onHistoryAcitivtyAssign","staffGuid","firmOffice","firmOfficeGuid","tempTimezone","tzome","timezoneValue","displayName","timezoneOffset","systemAction","bookMeetingStartDate","bookMeetingEndDate","isCanReOpen","canCreateMatter","FULL_WIDTH","onCreateClient","isCreate","autoScroll","onAssign","hasMarkAsClientCreated","onReOpen","onRadioButtonChange","followUpActionValue","currentTarget","onFollowUpChange","showAllOffice","PopperComponent","minDate","onEmailTemplateChange","EMAIL_RESPONSE","emailTemplateGuid","emailTemplateName","fromEmailAddress","toEmailAddress","onSendEmailDialogClose","markup","newPlainTextValue","mentions","isLoadData","onlyUsedByEnquiries","hasNameGuid","onOutcomeChange","getCustomFields","group","customFieldGroupName","customFieldGroupDescription","isActive","hasCustomField","hasEnquiriesCustomFields","isStandAlone","Fragment","content","show","isAgree","agree","disAgreeLabel","agreeLabel","anchor","enquiryActions","poBoxType","isEnquiryFormOpen","onClose","callback","initialValuesEqual","keepDirtyOnReinitialize","EmailValidateWithRequiredNew","render","handleSubmit","showCustomFieldWarning","tempPracticeAreaGuidID","tempAreaOfLaw","limit","fromAddress","toAddresses","substring","stringTruncate","severity","onUpdateContact","indicatorColor","textColor","centered","canLinkMatter","canChangeLinkedMatter","header","EstimatedCosts","Billed","BilledTimeAndFees","TotalOwing","balanceDue","Unbilled","UnbilledTimeAndFees","BillingMethod","billingMethod","CostAgreementReceived","costAgreementReceived","Disbursements","billedDisbursements","TrustBalance","trustGeneralBalance","unbilledDisbursements","TrustControlledMoneyBalance","trustControlledMoneyBalance","disableRipple","originalDate","numDaysToAdd","daysRemaining","newDate","valueOf","day","primary","main","radioIcon","radioGroup","flexDirection","OutcomeRadio","fetchData","refreshData","onSuccess","onError","fetchPolicy","query","EnquiryOutcomeDataQuery","retrieveEnquiryOutcomeData","onRetrieveSource","outcomeList","outcomes","RadioComp","compProps","handleOnChange","option","ActionTypeRadio","LeadActionDataQuery","retrieveEnquirySourceData","lookup","actionTypes","systemName","tertiaryValue","autoCompleteItem","x","toString","ControlType","commendField","dialogTitle","dropzone","matterLabel","SendEmailDialog","applicationSettingsQuery","emailContent","emailSubject","ccEmailAddress","controlType","quill","emailContentCopy","fileSizeLimit","applications","systemOptions","emailSizeLimit","fetchEmailContentData","EmailContentData","fetchEmailContent","handleEmailDetailFetch","emailDetail","ccAddresses","emailStyle","onFollowUpClosed","sendEmailResponse","toEmailAddresses","ccEmailAddresses","templateGuid","onDiscardChanges","fullWidth","dividers","justify","getOutcomeDateDefaultValue","EmailValidate","changeProps","disableEnforceFocus","onEditorChange","submit","useCreateEnquiryMutation","CreateEnquiryMutation","create","result"],"mappings":"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","file":"static/js/main~a5307647.a3cdfbe3.chunk.js","sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport { updatedDiff } from 'deep-object-diff';\r\nimport {\r\n makeStyles,\r\n Theme,\r\n createStyles,\r\n Grid,\r\n ExpansionPanel,\r\n ExpansionPanelSummary,\r\n Typography,\r\n ExpansionPanelDetails,\r\n TextField,\r\n Button,\r\n CircularProgress,\r\n Drawer,\r\n Tooltip,\r\n Tabs,\r\n Tab,\r\n // Divider,\r\n withStyles,\r\n Checkbox,\r\n FormControlLabel,\r\n Chip,\r\n IconButton,\r\n Popper,\r\n PopperProps,\r\n Divider,\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Card,\r\n} from '@material-ui/core';\r\nimport { KeyboardDatePicker } from '@material-ui/pickers/DatePicker/DatePicker';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport moment from 'moment';\r\nimport { mainTheme } from '../../Theme';\r\nimport {\r\n UpdateEnquiryMutation,\r\n CreateEnquiryMutation,\r\n EnquiryDetailsQueryParams,\r\n retrieveEnquiryDetailsData,\r\n FollowUpEnquiryMutation,\r\n fetchTenantData,\r\n TenantData,\r\n fetchHomeCountry,\r\n OptionData,\r\n CompleteCreateClientMutation,\r\n CreateMeetingBookingTaskMutation,\r\n AppUser,\r\n fetchAppUserData,\r\n AppUserData,\r\n EmailTemplateCountQueryParams,\r\n retrieveEmailTemplateCount,\r\n EmailTemplateData,\r\n EnquiryDefaultConfig,\r\n retrieveGeneralInfoData,\r\n GeneralInfoDataParams,\r\n GeneralInfoData,\r\n Financials,\r\n LinkEnquiryMutation,\r\n // fetchTenantTimezoneData,\r\n UpdateEnquiryQualityMutation,\r\n UpdateEnquiryQualityParams,\r\n UpdateEnquiryLikelihoodMutation,\r\n UpdateLikelihoodParams,\r\n UploadEnquiryMatterDocumentMutation,\r\n // EnquirySummaryQueryParams,\r\n // retrieveEnquirySummaryData,\r\n} from '../EnquirySummaryRepository';\r\nimport {\r\n Form,\r\n Field,\r\n FormSpy,\r\n FieldInputProps,\r\n AnyObject,\r\n} from 'react-final-form';\r\nimport { FormApi, SubmissionErrors, ValidationErrors } from 'final-form';\r\nimport { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport UserSelector from '../../components/UserSelector';\r\nimport { IDownShiftItem } from 'mui-downshift';\r\nimport { client } from '../..';\r\nimport { showNotification } from '../../App';\r\nimport { RvLoader } from '../../components/Loader';\r\n// import { EnquirySummaryContext } from '../EnquirySummaryContext';\r\nimport DialogBox from '../../Dashboard/Component/DialogBox';\r\nimport { DropzoneArea } from 'material-ui-dropzone';\r\nimport { EnquiryDetail, EnquiryData, Actions } from '../models/Enquiry';\r\nimport { GenderSelector } from '../selectors/GenderSelector';\r\nimport { AreaOfLawSelector, IAreaOfLawAutoCompleteItem } from '../selectors/AreaOfLawSelector';\r\n// import { ActionTypeSelector } from '../selectors/ActionType';\r\nimport { ReasonSelector } from '../selectors/ReasonSelector';\r\n// import { OutcomeSelector } from '../selectors/OutcomeSelector';\r\nimport { DocumentFile } from '../../types/DocumentFile';\r\nimport { SourceSelector } from '../selectors/SourceSelector';\r\nimport { KeyboardDateTimePicker } from '@material-ui/pickers/DateTimePicker/DateTimePicker';\r\nimport { ActionTypeRadio } from '../radio/ActionTypeRadio';\r\nimport { OutcomeRadio } from '../radio/OutcomeRadio';\r\nimport { OfficeSelector } from '../../MailingList/selectors/OfficeSelector';\r\nimport { HistoryActivity, HistoryActivityWidth } from '../common/HistoryActivity';\r\nimport MailOutlineIcon from '@material-ui/icons/MailOutline';\r\nimport PhoneOutlinedIcon from '@material-ui/icons/PhoneOutlined';\r\nimport PhoneIphoneIcon from '@material-ui/icons/PhoneIphone';\r\nimport { TextFieldWithMention } from '../../components/TextFieldWithMention';\r\nimport { MentionItem } from 'react-mentions';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport { CreateClientDialog } from '../dialogs/CreateClientDialog';\r\nimport { UserFeature, UserFeatureEnum } from '../../types/UserFeature';\r\nimport { MatterTerminology } from '../../MatterTerminology';\r\nimport { ClientAndContactSelector } from '../../components/ClientAndContactSelector';\r\nimport { OrganisationIAutoCompleteItem, OrganisationSelector } from '../selectors/OrganisationSelector';\r\nimport SyncAltIcon from '@material-ui/icons/SyncAlt';\r\nimport { IndividualNameSummary, IndividualSelector } from '../selectors/IndividualSelector';\r\nimport { CurrencyInput } from '../../components/CurrencyInput';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { CurrencySymbolData, retrieveCurrencySymbolData } from '../../ClientAndContactDetails/referrals/ReferralsDetailsRepository';\r\nimport { EmailTemplateSelector } from '../selectors/EmailTemplateSelector';\r\nimport { EmailTemplateTypeEnum } from '../../emailTemplatesConfiguration/EmailTemplateRespository';\r\nimport { SendEmailDialog } from '../dialogs/SendEmailDialog';\r\nimport { BookMeetingEmailDialog } from '../dialogs/BookMeetingEmailDialog';\r\nimport { Alert, Rating } from '@material-ui/lab';\r\nimport { ReminderSelector } from '../../components/ReminderSelector';\r\nimport ContactMailIcon from '@material-ui/icons/ContactMail';\r\nimport { Address, AddressSelector, PlaceType } from '../selectors/AddressSelector';\r\nimport LocalPostOfficeIcon from '@material-ui/icons/LocalPostOffice';\r\nimport { ReferredToSelector } from '../selectors/ReferredToSelector';\r\nimport { formatNumber } from '../../helpers/ChartHelper';\r\nimport { CustomTable, CustomTableContentProps, ValueTypeEnum } from '../../components/CustomTable';\r\nimport { MarkClientAndMatterCreatedDialog } from '../dialogs/MarkClientAndMatterCreatedDialog';\r\nimport OpenInNewIcon from '@material-ui/icons/OpenInNew';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { OfficeLocationSelector } from '../selectors/OfficeLocationSelector';\r\nimport { MatterAutoCompleteSelector } from '../../components/MatterAutoCompleteSelector';\r\n// import { EntityTypeEnum, UserStaffAndTeamAutoCompleteSelector } from '../selectors/UserStaffAndTeamAutoCompleteSelector';\r\nimport { retrieveTimezoneOptionData, TimezoneOption, TimezoneOptionData, TimezoneSelector } from '../../lookupConfiguration/selectors/TimezoneSelector';\r\n// import { RegionSettingsData } from '../../firmSettingConfiguration/tabs/RegionalTab';\r\nimport { POBoxTypeSelector } from '../../lookupConfiguration/selectors/POBoxTypeSelector';\r\nimport { LeadDetailsHistoryData, LeadDetailsHistoryQueryParams, retrieveLeadDetailsHistoryData, TaskDetails, TaskSummaryList } from '../../leadsDetail/LeadsDetailRepository';\r\nimport { EntityTypeEnum, UserStaffAndTeamAutoCompleteSelector } from '../selectors/UserStaffAndTeamAutoCompleteSelector';\r\nimport { useRegionSettings } from '../../hooks/useRegionSettings';\r\nimport { addEllipsis, arrayToString, arrayToStringWithSeparator, removeTagsAndStyles, retrieveQueryData, separateName } from '../../helpers/commonHelper';\r\nimport { RiskLevelSelector } from '../selectors/RiskLevelSelector';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { TranslationTextList } from '../../locales/common';\r\nimport { TaskSummary } from '../../tasksSummary/TasksSummaryRepository';\r\nimport { EventAndCampaignAttendeeSummary } from '../../eventsAndCampaignsAttendee/EventsAndCampaignsAttendeeRepositories';\r\nimport { NameSummary, PartyAddressesData, PartyAddressesParams, PartyAddressesQuery } from '../../nameSummary/NameSummaryRepository';\r\nimport { EventsAndCampaignIAutoCompleteItem, EventsAndCampaignSelector } from '../../notesSummary/selectors/EventsAndCampaignSelector';\r\nimport { EmailAddress, Partydetails, PhoneNumber } from '../../ClientAndContactDetails/ClientAndContactDetailsRepositories';\r\nimport { DateType } from '@date-io/type';\r\nimport { formatDateString } from '../../helpers/DateHelper';\r\nimport { useQuery } from 'react-apollo';\r\nimport { TitleAutocompleteSelector } from '../selectors/TitleAutocompleteSelector';\r\nimport { debounce } from 'lodash';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport {\r\n CrmDuplicateCheckQuery,\r\n DuplicateCheck,\r\n DuplicateCheckData,\r\n DuplicateCheckParams\r\n} from '../../hooks/useCrmDuplicateCheck';\r\nimport { CustomFieldKeyProps, getField } from '../../enquiryCustomFields/common/getField';\r\nimport { FieldType } from '../../enquiryCustomFields/selectors/CustomFieldTypeSelector';\r\nimport { CustomFieldByHierarchy, CustomFieldByHierarchyData, CustomFieldByHierarchyQuery, CustomFieldByHierarchyQueryParams } from '../../enquiryCustomFields/CustomFieldRepositores';\r\nimport { HistoryFile } from '../common/HistoryFile';\r\nimport { useHomeCountry } from '../../hooks/useHomeCountry';\r\nimport { useTenant } from '../../hooks/useTenant';\r\n// import RenderCount from '../helpers/RenderCount';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n padding: '20px 15px',\r\n width: '100%',\r\n minWidth: '700px',\r\n maxWidth: '700px',\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n position: 'relative',\r\n '& #enquiryForm': {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n }\r\n },\r\n innerGridContainer: {\r\n marginTop: 0,\r\n marginBottom: 0,\r\n },\r\n hidden: {\r\n display: 'none',\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n // fontWeight: theme.typography.fontWeightRegular,\r\n color: mainTheme.TemplateColor.Primary,\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n buttonContainer: {\r\n display: 'flex',\r\n flexFlow: 'column',\r\n justifyContent: 'space-between',\r\n margin: '0 -8px',\r\n // paddingBottom: '20px'\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n chips: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n chip: {\r\n marginLeft: '8px'\r\n },\r\n headerDetails: {\r\n // paddingBottom: '20px',\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& .user': {\r\n fontSize: '24px',\r\n marginBottom: '5px',\r\n color: mainTheme.TemplateColor.Primary,\r\n },\r\n '& .company': {\r\n fontSize: '18px',\r\n fontWeight: 400,\r\n marginBottom: '5px',\r\n // color: mainTheme.TemplateColor.Primary,\r\n },\r\n '& .phone': {\r\n color: mainTheme.TemplateColor.Primary,\r\n marginBottom: '5px',\r\n '& a': {\r\n color: 'inherit'\r\n }\r\n },\r\n '& .email': {\r\n color: mainTheme.TemplateColor.Primary,\r\n marginBottom: '5px',\r\n '& a': {\r\n color: 'inherit'\r\n }\r\n },\r\n '& .common': {\r\n color: '#000',\r\n marginBottom: '5px',\r\n }\r\n },\r\n headerLeft: {\r\n alignItems: 'flex-start'\r\n },\r\n headerRight: {\r\n alignItems: 'flex-end'\r\n },\r\n customFieldGrid: {\r\n paddingTop: '0px !important',\r\n },\r\n expandablePanelDetails: {\r\n paddingBottom: '15px',\r\n },\r\n expansionPanelSummary: {\r\n minHeight: 'auto !important',\r\n '& .MuiExpansionPanelSummary-content': {\r\n justifyContent: 'space-between',\r\n margin: '12px 0',\r\n },\r\n },\r\n infoContainer: {\r\n display: 'flex',\r\n margin: '0 -10px',\r\n paddingLeft: '10px',\r\n justifyContent: 'flex-end',\r\n '& .col': {\r\n padding: '0 10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .label': {\r\n marginRight: '10px',\r\n },\r\n '& .files': {\r\n fontWeight: 600,\r\n },\r\n '& .ellipsis': {\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n width: '250px',\r\n textAlign: 'right',\r\n },\r\n '& .value': {\r\n maxWidth: '400px',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n }\r\n },\r\n },\r\n dropZone: {\r\n minHeight: 'fit-content !important',\r\n '& .MuiDropzoneArea-root': {\r\n minHeight: 'fit-content !important'\r\n }\r\n },\r\n formControl: {\r\n width: '100%',\r\n },\r\n hideDate: {\r\n display: 'none'\r\n },\r\n expansionPanel: {\r\n marginBottom: '16px',\r\n },\r\n expansionPanel2: {\r\n marginBottom: '16px',\r\n boxShadow: '0px 3px 3px -2px rgba(81,115,255, 0.6), 0px 3px 4px 0px rgba(81,115,255,0.14), 0px 1px 8px 0px rgba(81,115,255,0.7)'\r\n },\r\n loaderWrapper: {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n tabs: {\r\n marginBottom: 10,\r\n },\r\n historyActivityContainer: {\r\n flex: 1,\r\n position: 'relative',\r\n flexFlow: 'column',\r\n minHeight: 250,\r\n },\r\n historyActivityWrapper: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0,\r\n },\r\n activityTab: {\r\n flex: 1,\r\n flexFlow: 'column',\r\n },\r\n labelWithIcon: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& svg': {\r\n marginRight: 5,\r\n },\r\n '& a': {\r\n color: 'inherit'\r\n }\r\n },\r\n internalNotes: {\r\n marginTop: 10,\r\n fontStyle: 'italic',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n divider: {\r\n // marginTop: 10,\r\n width: '100%',\r\n },\r\n dropZoneFont: {\r\n '& .MuiDropzoneArea-text': {\r\n fontSize: '1em',\r\n }\r\n },\r\n checkedIcon: {\r\n color: mainTheme.TemplateColor.Primary,\r\n },\r\n createClientButton: {\r\n margin: '0 10px 10px 10px',\r\n flex: 1,\r\n },\r\n customGroupButton: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0 -10px',\r\n },\r\n contactsContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0 -5px',\r\n '& > p': {\r\n padding: '0 5px',\r\n }\r\n },\r\n expandDrawer: {\r\n position: 'absolute',\r\n top: '5px',\r\n right: '10px',\r\n '& .MuiSvgIcon-root': {\r\n width: '20px',\r\n height: '20px',\r\n }\r\n },\r\n dropzoneClass: {\r\n paddingBottom: '15px',\r\n minHeight: 0,\r\n },\r\n checkoxContainer: {\r\n display: 'flex',\r\n alignItems: 'flex-start'\r\n },\r\n checkbboxWrapper: {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'row wrap',\r\n padding: '0 8px',\r\n justifyContent: 'flex-start',\r\n },\r\n margin: {\r\n margin: theme.spacing(1),\r\n },\r\n referrerFieldWrapepr: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .field': {\r\n flex: 1,\r\n },\r\n '& .switcher': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n },\r\n toggleFieldWrapepr: {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n flex: 1,\r\n '& .field': {\r\n flex: 1,\r\n },\r\n '& .switcher': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n },\r\n formControlLabel: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n startTimeWrapper: {\r\n display: 'flex',\r\n flex: 1,\r\n alignItems: 'center',\r\n },\r\n textFieldWrapper: {\r\n flex: 1,\r\n },\r\n staffWrapper: {\r\n fontSize: 14,\r\n color: mainTheme.TemplateColor.Primary,\r\n padding: '0 5px',\r\n },\r\n noEmailMeetingWrapper: {\r\n fontSize: 14,\r\n backgroundColor: 'rgba(243, 243, 158, 0.29)',\r\n padding: '0 5px',\r\n },\r\n mainControlWrapper: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n selector: {\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n fieldAndCheckbox: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .MuiFormControl-root': {\r\n flex: 1\r\n }\r\n },\r\n ratingWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n // justifyContent: 'space-between',\r\n margin: '0 -10px',\r\n '& > legend': {\r\n padding: '0 10px',\r\n },\r\n '& > span': {\r\n padding: '0 10px',\r\n }\r\n },\r\n AccordionSummary: {\r\n '& .MuiAccordionSummary-content': {\r\n justifyContent: 'space-between',\r\n },\r\n },\r\n headingIcon: {\r\n marginRight: '10px',\r\n },\r\n displayFlex: {\r\n display: 'flex'\r\n },\r\n card: {\r\n display: 'flex',\r\n flexFlow: 'column wrap',\r\n minHeight: '85px',\r\n background: '#fff',\r\n width: '100%',\r\n boxShadow: '1px 1px 1px 1px rgba(0,0,0,0.3)',\r\n borderRadius: '5px',\r\n // marginBottom: '15px',\r\n padding: '15px 10px',\r\n fontFamily: 'Nunito',\r\n alignItems: 'center',\r\n [`& .${`label`}`]: {\r\n fontWeight: '400',\r\n marginBottom: '15px',\r\n color: mainTheme.BrandColors.TemplatePrimary,\r\n },\r\n\r\n [`& .${`value`}`]: {\r\n textAlign: 'center',\r\n fontWeight: '400',\r\n fontSize: '2rem',\r\n },\r\n [`& .${`value-string`}`]: {\r\n textAlign: 'center',\r\n fontWeight: '400',\r\n fontSize: '1.5rem',\r\n },\r\n },\r\n cardWrapper: {\r\n maxWidth: '70%',\r\n margin: '0 auto',\r\n },\r\n matterSelectorWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& > div': {\r\n flex: 1\r\n }\r\n },\r\n flex2: {\r\n flex: 2\r\n },\r\n notes: {\r\n backgroundColor: 'rgba(243, 243, 158, 0.29)',\r\n padding: '10px',\r\n },\r\n readRatingWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0 -10px',\r\n '& > div': {\r\n padding: '0 10px'\r\n }\r\n },\r\n truncateText: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '30rem'\r\n },\r\n associatedWarning: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px'\r\n },\r\n associatedColor: {\r\n color: 'orange'\r\n },\r\n showContactWrapper: {\r\n padding: '10px',\r\n display: 'flex',\r\n flexFlow: 'column',\r\n gap: '5px',\r\n // whiteSpace: 'nowrap',\r\n }\r\n })\r\n);\r\n\r\nconst LightTooltip = withStyles((theme: Theme) => ({\r\n arrow: {\r\n color: theme.palette.common.white,\r\n '&::before': {\r\n // backgroundColor: 'blue',\r\n boxShadow: theme.shadows[1],\r\n }\r\n },\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n boxShadow: theme.shadows[1],\r\n fontSize: 11,\r\n },\r\n}))(Tooltip);\r\n\r\ninterface BookingMeetingProps {\r\n staff: IAutoCompleteItem | null;\r\n startTime: Date | null;\r\n endTime: Date | null;\r\n isAllDay: boolean;\r\n officeLocation: IAutoCompleteItem | null;\r\n feeApplicable: number | null;\r\n isSendConfirmation: boolean;\r\n meetingNotes: string | null;\r\n timezone: IAutoCompleteItem | null;\r\n isBookMeetingEmailDialogOpen: boolean;\r\n}\r\n\r\ninterface BotIntegrationProps {\r\n followUpBotUrl: string | null;\r\n}\r\n\r\nexport interface EnquiryCustomFieldMutation {\r\n entityType: number | null;\r\n entityGuid: string | null;\r\n customFieldGuid: string | null;\r\n customFieldGroupGuid?: string | null;\r\n textValue: string | null;\r\n multiLineTextValue: string | null;\r\n integerValue: number | null;\r\n numberValue: number | null;\r\n currencyValue: number | null;\r\n dateValue: Date | null;\r\n dateTimeValue: Date | null;\r\n boolValue: boolean | null;\r\n customFieldLookupListItemGuid: string | null;\r\n lookupListName?: string | null;\r\n // documentGuid: string | null;\r\n}\r\n\r\nexport interface EnquiryCustomFieldProps {\r\n tempPracticeAreaGuidID?: string | null;\r\n tempAreaOfLaw?: string | null;\r\n showCustomFieldWarning?: boolean;\r\n customField?: {\r\n [key: string]: {\r\n [key: string]: CustomFieldKeyProps;\r\n }\r\n }\r\n enquiryCustomField?: EnquiryCustomFieldMutation[];\r\n}\r\n\r\nexport interface EnquiryDigitalTrackingState {\r\n clickThroughUrl: string | null;\r\n utmSource: string | null;\r\n utmMedium: string | null;\r\n utmCampaign: string | null;\r\n utmContent: string | null;\r\n utmKeyword: string | null;\r\n googleClickIdentifier: string | null;\r\n facebookClickIdentifier: string | null;\r\n}\r\n\r\nexport interface Enquiry extends BookingMeetingProps, BotIntegrationProps, EnquiryCustomFieldProps, EnquiryDigitalTrackingState {\r\n duplicateCheck: DuplicateCheck | null;\r\n handleCreateAndClose: boolean | undefined;\r\n handleCreateAndNew: boolean | undefined;\r\n handleUpdate: boolean | undefined;\r\n // showDiscard: boolean;\r\n // isFormChanged: boolean;\r\n isAssignmentExpand: boolean;\r\n\r\n guid?: string;\r\n firstName: string;\r\n lastName: string;\r\n individualSelector: IndividualNameSummary | null;\r\n email: string;\r\n gender: string | null;\r\n initialEnquiryDate: Date | null;\r\n phone: string;\r\n mobile: string;\r\n source: IAutoCompleteItem | null;\r\n office: IAutoCompleteItem | null;\r\n sourceNotes: string;\r\n\r\n organisationSelector: OrganisationIAutoCompleteItem | null;\r\n organisation: string;\r\n positionAtOrganisation: string;\r\n\r\n natureOfEnquiry: string;\r\n practiceAreaGuidID: string | null;\r\n areaOfLaw: string | null;\r\n\r\n internalNotes: string | null;\r\n files: DocumentFile[];\r\n\r\n assignedTo: string | null;\r\n assignedToName: string | null;\r\n assignedBy: string | null;\r\n assignedByName: string | null;\r\n dateAssigned: Date | null;\r\n followUpDueDate: Date | null;\r\n assignmentFollowUpDueReminder: IAutoCompleteItem | null;\r\n\r\n followUpAction: string | null;\r\n followUpActionSystemName: string | null;\r\n followUpSystemAction: string | null;\r\n followUpDate: Date | null;\r\n\r\n outcome: string | null;\r\n outcomeDate: Date | null;\r\n outcomeNotes: string | null;\r\n reason: string | null;\r\n reasonGuidID: string | null;\r\n followUpNotes: string | null;\r\n hasFollowUpNotesMentions: boolean;\r\n isClosed: boolean;\r\n isKeyOpportunity: boolean;\r\n isNotProceeding: boolean;\r\n notProceedingReason: string | null;\r\n notProceedingReasonGuid: string | null;\r\n followUpDueReminder: IAutoCompleteItem | null;\r\n\r\n referrerGuid: string | null;\r\n referrerName: string | null;\r\n isShowReferrer: boolean;\r\n\r\n isNameSwitched: boolean;\r\n isOrganisationSwitched: boolean;\r\n nameGuid: string | null;\r\n organisationGuid: string | null;\r\n\r\n emailTemplate: IAutoCompleteItem | null;\r\n\r\n isContactDetailsChanged: boolean;\r\n isUpdateContacts: boolean;\r\n isSentAcknowledgementEmail: boolean;\r\n\r\n /*\r\n When to update Follow Up Due Date when doing a Internal Notes action\r\n 1. @Mention and no follow up due date change - Do not change previous follow up due date\r\n 2. @Mention and follow up due date change - Update follow up due date\r\n 3. No @Mention and no follow up due date change - Change follow up due date - Because, the user clicked on the Internal Notes option\r\n 4. No @Mention and follow up due date change - Change follow up due date\r\n */\r\n updateFollowUpDueForInternalNote: boolean;\r\n outcomeDateChanged: boolean;\r\n\r\n // Other details fields\r\n estimatedFees: number | null;\r\n isEstimatedFeesIncludesTax: boolean;\r\n estimatedDisbursements: number | null;\r\n isEstimatedDisbursementsIncludesTax: boolean;\r\n enquiryQuality: number | null;\r\n likelihoodToProceed: number | null;\r\n clientFirstName: string | null;\r\n clientLastName: string | null;\r\n dOB: Date | DateType | null;\r\n isMarketingConsent: boolean;\r\n isConflictCheckPerformed: boolean;\r\n isTermsAndConditionsApproved: boolean;\r\n isIdentityCheckPerformed: boolean;\r\n isPrivacyStatementProvided: boolean;\r\n addressName: string | null;\r\n floor: string | null;\r\n number: string | null;\r\n street: string | null;\r\n street2: string | null;\r\n suburb: string | null;\r\n state: string | null;\r\n postcode: string | null;\r\n country: string | null;\r\n pOBox: string | null;\r\n postalSuburb: string | null;\r\n postalState: string | null;\r\n postalPostCode: string | null;\r\n postalCountry: string | null;\r\n isNoConflict: boolean;\r\n\r\n isShowNotProceedingReferrer: boolean;\r\n isNotProceedingReferrerSwitched: boolean;\r\n referredToFirmSelector: IAutoCompleteItem | null;\r\n referredToFirmGuid: string | null;\r\n referredToFirmName: string | null;\r\n notProceedingOutcomeNotes: string | null;\r\n\r\n isShowNotProceedingReferrerInProceeding: boolean;\r\n isNotProceedingReferrerSwitchedInProceeding: boolean;\r\n referredToFirmSelectorInProceeding: IAutoCompleteItem | null;\r\n referredToFirmGuidInProceeding: string | null;\r\n referredToFirmNameInProceeding: string | null;\r\n notProceedingOutcomeNotesInProceeding: string | null;\r\n\r\n clientRelationshipToEnquirer: string | null;\r\n\r\n matterId: number | null;\r\n matterGuid: string | null; // Saved Matter Guid\r\n matterTitle: string | null;\r\n matterFileNumber: string | null;\r\n\r\n // tslint:disable-next-line: no-any\r\n matterSelector: IAutoCompleteItem | null | any; // Selector in Matter Tab\r\n\r\n pOBoxType: string | null;\r\n enquiryNotes: string | null;\r\n\r\n otherPartyFirstName: string | null;\r\n otherPartyLastName: string | null;\r\n otherPartyNotes: string | null;\r\n otherPartyEmail: string | null;\r\n otherPartyPhone: string | null;\r\n otherPartyMobile: string | null;\r\n otherPartyOrganisation: string | null;\r\n otherPartyDOB: Date | null;\r\n otherPartyAddressName: string | null;\r\n otherPartyFloor: string | null;\r\n otherPartyNumber: string | null;\r\n otherPartyStreet: string | null;\r\n otherPartyStreet2: string | null;\r\n otherPartySuburb: string | null;\r\n otherPartyState: string | null;\r\n otherPartyPostcode: string | null;\r\n otherPartyCountry: string | null;\r\n\r\n otherPartyPOBoxType: string | null;\r\n otherPartyPOBox: string | null;\r\n otherPartyPostalSuburb: string | null;\r\n otherPartyPostalState: string | null;\r\n otherPartyPostalPostCode: string | null;\r\n otherPartyPostalCountry: string | null;\r\n isOtherPartyNameSwitched: boolean;\r\n otherPartyNameGuid: string | null;\r\n otherPartyOrganisationGuid: string | null;\r\n otherPartyIndividualSelector: IndividualNameSummary | null;\r\n\r\n isSavedDirectly: boolean;\r\n\r\n isRiskAssessed: boolean | null;\r\n riskLevelSelector: IAutoCompleteItem | null;\r\n riskNotes: string | null;\r\n\r\n secondClientFirstName: null | string;\r\n secondClientLastName: null | string;\r\n secondClientRelationshipToEnquirer: null | string;\r\n secondClientGender: null | string;\r\n secondClientSuburb: null | string;\r\n secondClientState: null | string;\r\n secondClientPostCode: null | string;\r\n secondClientIsMarketingConsent: boolean;\r\n secondClientIsTermsAndConditionsApproved: boolean;\r\n secondClientIsPrivacyStatementProvided: boolean;\r\n secondClientIsConflictCheckPerformed: boolean;\r\n secondClientIsIdentityCheckPerformed: boolean;\r\n secondClientIsNoConflict: boolean;\r\n secondClientCountry: null | string;\r\n secondClientAddressName: null | string;\r\n secondClientFloor: null | string;\r\n secondClientNumber: null | string;\r\n secondClientStreet1: null | string;\r\n secondClientStreet2: null | string;\r\n secondClientDOB: Date | null;\r\n secondClientPOBoxType: null | string;\r\n secondClientPOBox: null | string;\r\n secondClientPostalSuburb: null | string;\r\n secondClientPostalState: null | string;\r\n secondClientPostalPostCode: null | string;\r\n secondClientPostalCountry: null | string;\r\n\r\n responseText: null | string;\r\n\r\n // events and campaigns\r\n eventAndCampaignSelector: EventsAndCampaignIAutoCompleteItem | null;\r\n eventsAndCampaignNotes: string | null;\r\n\r\n // new fields\r\n title: string | null;\r\n otherPartyTitle: string | null;\r\n\r\n clientTitle: string | null;\r\n clientGuid: string | null;\r\n clientEmail: string | null;\r\n clientPhone: string | null;\r\n clientMobile: string | null;\r\n\r\n secondClientTitle: string | null;\r\n secondClientGuid: string | null;\r\n secondClientEmail: string | null;\r\n secondClientPhone: string | null;\r\n secondClientMobile: string | null;\r\n\r\n isClientNameSwitched: boolean;\r\n isSecondClientNameSwitched: boolean;\r\n\r\n clientIndividualSelector: IndividualNameSummary | null;\r\n secondClientIndividualSelector: IndividualNameSummary | null;\r\n\r\n tabEdited?: 'detailsTab' | 'activityTab';\r\n}\r\n\r\ninterface EnquiryFormProps {\r\n guid?: string;\r\n formAction: string;\r\n assignedBy: string | null;\r\n assignedByName: string | null;\r\n onDialogClose?: () => void;\r\n isEnquiryFormOpen: boolean;\r\n isRefreshData?: boolean;\r\n isKeyOpportunity: boolean;\r\n enquiryDefaultConfig?: EnquiryDefaultConfig;\r\n homeCountry: string;\r\n pOBoxType: string | null;\r\n taskSummary?: TaskSummary;\r\n eventAndCampaignAttendeeSummary?: EventAndCampaignAttendeeSummary;\r\n nameSummary?: NameSummary;\r\n partyDetails?: Partydetails;\r\n}\r\n\r\nexport enum EnquiryFormTab {\r\n details = 0,\r\n activity,\r\n matterDetails,\r\n customFields\r\n}\r\n\r\ninterface EnquiryFormState {\r\n isFormChanged: boolean;\r\n showDiscard: boolean;\r\n // showTabsSaveAlert: boolean;\r\n tab: EnquiryFormTab;\r\n isEmailNotification: boolean;\r\n isCreateClientOpen: boolean;\r\n isCreateClient: boolean;\r\n isMarkClientMatterCreatedOpen: boolean;\r\n sourceSystem: string;\r\n homeCountry: string;\r\n isExpandDrawer: boolean;\r\n currency: string;\r\n // tenantTimezone: IAutoCompleteItem | null;\r\n isSendEmailDialogOpen: boolean;\r\n hideSendAcknowledgement: boolean;\r\n generalInfoData?: CustomTableContentProps[];\r\n matterClientName?: string;\r\n financials: Financials | null;\r\n\r\n isFormSubmit: boolean;\r\n isContactDetailsPanelExpand: boolean;\r\n isEnquiryDetailsPanelExpand: boolean;\r\n isAssignPanelExpand: boolean;\r\n isOtherContactDetailsPanelExpand: boolean;\r\n isOtherDetailsPanelExpand: boolean;\r\n isOther2DetailsPanelExpand: boolean;\r\n isPostalAddressPanelExpand: boolean;\r\n isClient2PostalAddressPanelExpand: boolean;\r\n isOtherSidePanelExpand: boolean;\r\n isOtherSidePostalAddressPanelExpand: boolean;\r\n isDetailedEnquiryNotesPanelExpand: boolean;\r\n isDigitalTrackingPanelExpand: boolean;\r\n\r\n enquiryQuality: number | null;\r\n likelihoodToProceed: number | null;\r\n timezone: TimezoneOption[];\r\n isBookMeetingFromHistoryActivity: boolean;\r\n\r\n customFieldByHierarchy?: CustomFieldByHierarchy[];\r\n\r\n}\r\n\r\n// interface PreviousReferrerState {\r\n// referrerGuid: string | null;\r\n// referrerName: string | null;\r\n// sourceGuid: string | null; // Should match with the source, if we want to re-populate the same old value again\r\n// sourceNotes?: string;\r\n// }\r\n\r\nexport const EnquiryFormDrawer: React.FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n\r\n const countryQuery = useHomeCountry();\r\n\r\n const tenantQuery = useTenant();\r\n\r\n const { t } = useTranslation() as {\r\n t: (key: keyof TranslationTextList) => string;\r\n };\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isCustomFieldLoading, setIsCustomFieldLoading] = useState(true);\r\n const [filesKey, setKey] = useState('');\r\n const [appUser, setAppUser] = useState();\r\n const history = useHistory();\r\n\r\n const regionSettings = useRegionSettings();\r\n\r\n const isCreateForm = props.formAction === 'edit' ? false : true;\r\n\r\n const [state, setState] = useState({\r\n isFormChanged: false,\r\n showDiscard: false,\r\n // showTabsSaveAlert: false,\r\n tab: EnquiryFormTab.details,\r\n isEmailNotification: true,\r\n isCreateClient: false,\r\n sourceSystem: '',\r\n homeCountry: '',\r\n isCreateClientOpen: false,\r\n isExpandDrawer: false,\r\n currency: '$',\r\n // tenantTimezone: null,\r\n isSendEmailDialogOpen: false,\r\n hideSendAcknowledgement: true,\r\n generalInfoData: undefined,\r\n financials: null,\r\n isMarkClientMatterCreatedOpen: false,\r\n matterClientName: '',\r\n isContactDetailsPanelExpand: isCreateForm,\r\n isEnquiryDetailsPanelExpand: isCreateForm,\r\n isDetailedEnquiryNotesPanelExpand: false,\r\n isDigitalTrackingPanelExpand: false,\r\n isAssignPanelExpand: false,\r\n isFormSubmit: false,\r\n enquiryQuality: null,\r\n likelihoodToProceed: null,\r\n isOtherContactDetailsPanelExpand: false,\r\n isOtherDetailsPanelExpand: false,\r\n isOther2DetailsPanelExpand: false,\r\n isClient2PostalAddressPanelExpand: false,\r\n isPostalAddressPanelExpand: false,\r\n isOtherSidePostalAddressPanelExpand: false,\r\n timezone: [],\r\n isOtherSidePanelExpand: false,\r\n isBookMeetingFromHistoryActivity: false,\r\n customFieldByHierarchy: []\r\n });\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const [enquiryActionData, setEnquiryActionData] = useState();\r\n\r\n const [leadDetailsHistory, setLeadDetailsHistory] = useState({\r\n tasks: [],\r\n actualRowCountForSearch: 0,\r\n recordCount: 0\r\n });\r\n\r\n // Used for InitialData and fetching saved enquiry\r\n const [enquiryDetail, setEnquiryDetails] = useState({\r\n guid: props.guid,\r\n createdDate: moment().toDate(),\r\n createdByName: '',\r\n lastUpdated: moment().toDate(),\r\n isClosed: false,\r\n isContactCreated: false,\r\n isMatterCreated: false,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n gender: 'Unknown',\r\n initialEnquiryDate: moment().toDate(),\r\n phone: '',\r\n mobile: '',\r\n sourceGuidID: null,\r\n source: '',\r\n isSourceReferrer: false,\r\n officeGuidID: null,\r\n office: '',\r\n sourceNotes: '',\r\n\r\n organisation: '',\r\n positionAtOrganisation: '',\r\n\r\n areaOfLaw: '',\r\n practiceAreaGuidID: '',\r\n natureOfEnquiry: '',\r\n\r\n internalNotes: null,\r\n files: [],\r\n\r\n assignedTo: null,\r\n assignedToName: null, // Display Name\r\n assignedToEmailAddress: null,\r\n assignedBy: null,\r\n assignedByName: null, // Display Name\r\n assignedByEmailAddress: null,\r\n dateAssigned: moment().toDate(),\r\n followUpDueDate: null,\r\n assignmentReminderOffset: null,\r\n\r\n followUpActionGuidID: null,\r\n followUpAction: null,\r\n followUpActionSystemName: null,\r\n followUpSystemAction: null,\r\n followUpDate: null,\r\n outcomeGuidID: null,\r\n outcome: null,\r\n outcomeDate: null,\r\n outcomeNotes: '',\r\n reason: null,\r\n reasonGuidID: null,\r\n followUpNotes: null,\r\n isKeyOpportunity: props.isKeyOpportunity,\r\n referrerGuid: null,\r\n referrerName: null,\r\n nameGuid: null,\r\n nameTitle: null,\r\n organisationGuid: null,\r\n\r\n estimatedFees: null,\r\n isEstimatedFeesIncludesTax: false,\r\n estimatedDisbursements: null,\r\n isEstimatedDisbursementsIncludesTax: false,\r\n enquiryQuality: null,\r\n likelihoodToProceed: null,\r\n clientFirstName: null,\r\n clientLastName: null,\r\n dOB: null,\r\n isMarketingConsent: false,\r\n isTermsAndConditionsApproved: false,\r\n isPrivacyStatementProvided: false,\r\n isConflictCheckPerformed: false,\r\n isNoConflict: false,\r\n isIdentityCheckPerformed: false,\r\n addressName: null,\r\n floor: null,\r\n number: null,\r\n street: null,\r\n clientAddressStreet2: null,\r\n suburb: null,\r\n state: null,\r\n postcode: null,\r\n country: null,\r\n pOBoxType: props.pOBoxType ? props.pOBoxType : null,\r\n pOBox: null,\r\n postalSuburb: null,\r\n postalState: null,\r\n postalPostCode: null,\r\n postalCountry: null,\r\n referredToFirmGuid: null,\r\n referredToFirmName: '',\r\n notProceedingOutcomeNotes: null,\r\n clientRelationshipToEnquirer: null,\r\n matterId: null,\r\n matterGuid: null,\r\n matterTitle: null,\r\n matterFileNumber: null,\r\n assignedToIsStaff: false,\r\n assignedToStaffGuid: null,\r\n assignedToStaffName: null,\r\n otherPartyFirstName: null,\r\n otherPartyLastName: null,\r\n otherPartyNotes: null,\r\n otherPartyEmail: null,\r\n otherPartyPhone: null,\r\n otherPartyMobile: null,\r\n otherPartyOrganisation: null,\r\n enquiryNotes: null,\r\n integrationContactId: null,\r\n integrationClientId: null,\r\n integrationOtherPartyId: null,\r\n integrationMatterId: null,\r\n integrationMatterDocumentId: null,\r\n otherPartyDOB: null,\r\n otherPartyAddressName: null,\r\n otherPartyFloor: null,\r\n otherPartyNumber: null,\r\n otherPartyStreet: null,\r\n otherPartyStreet2: null,\r\n otherPartySuburb: null,\r\n otherPartyState: null,\r\n otherPartyPostcode: null,\r\n otherPartyCountry: null,\r\n\r\n otherPartyPOBoxType: props.pOBoxType ? props.pOBoxType : null,\r\n otherPartyPOBox: null,\r\n otherPartyPostalSuburb: null,\r\n otherPartyPostalState: null,\r\n otherPartyPostalPostCode: null,\r\n otherPartyPostalCountry: null,\r\n otherPartyNameGuid: null,\r\n otherPartyOrganisationGuid: null,\r\n\r\n isRiskAssessed: null,\r\n riskLevelGuid: null,\r\n riskLevel: null,\r\n riskNotes: null,\r\n\r\n secondClientFirstName: null,\r\n secondClientLastName: null,\r\n secondClientRelationshipToEnquirer: null,\r\n secondClientGender: 'Unknown',\r\n secondClientSuburb: null,\r\n secondClientState: null,\r\n secondClientPostCode: null,\r\n secondClientIsMarketingConsent: false,\r\n secondClientIsTermsAndConditionsApproved: false,\r\n secondClientIsPrivacyStatementProvided: false,\r\n secondClientIsConflictCheckPerformed: false,\r\n secondClientIsIdentityCheckPerformed: false,\r\n secondClientIsNoConflict: false,\r\n secondClientCountry: null,\r\n secondClientAddressName: null,\r\n secondClientFloor: null,\r\n secondClientNumber: null,\r\n secondClientStreet1: null,\r\n secondClientStreet2: null,\r\n secondClientDOB: null,\r\n secondClientPOBoxType: props.pOBoxType ? props.pOBoxType : null,\r\n secondClientPOBox: null,\r\n secondClientPostalSuburb: null,\r\n secondClientPostalState: null,\r\n secondClientPostalPostCode: null,\r\n secondClientPostalCountry: null,\r\n secondClientGuid: null,\r\n\r\n responseText: null,\r\n\r\n eventAndCampaignGuid: null,\r\n eventAndCampaignName: null,\r\n eventAndCampaignNotes: null,\r\n eventAndCampaignNotesGuid: null,\r\n\r\n isNameFromDataSource: null,\r\n isOrganisationFromDataSource: null,\r\n isOtherSideFromDataSource: null,\r\n isSecondClientFromDataSource: null,\r\n\r\n // new fields\r\n title: null,\r\n otherPartyTitle: null,\r\n\r\n clientTitle: null,\r\n clientGuid: null,\r\n clientEmail: null,\r\n clientPhone: null,\r\n clientMobile: null,\r\n\r\n secondClientTitle: null,\r\n secondClientEmail: null,\r\n secondClientPhone: null,\r\n secondClientMobile: null,\r\n\r\n customFields: [],\r\n\r\n clickThroughUrl: null,\r\n utmSource: null,\r\n utmMedium: null,\r\n utmCampaign: null,\r\n utmContent: null,\r\n utmKeyword: null,\r\n googleClickIdentifier: null,\r\n facebookClickIdentifier: null,\r\n });\r\n\r\n const getReminderValue = (isAssignment: boolean) => {\r\n if (isAssignment && enquiryDetail && enquiryDetail.assignmentReminderOffset) {\r\n return { label: enquiryDetail.assignmentReminderOffset, value: enquiryDetail.assignmentReminderOffset };\r\n } else if (props.enquiryDefaultConfig && props.enquiryDefaultConfig.reminder) {\r\n return { label: props.enquiryDefaultConfig.reminder, value: props.enquiryDefaultConfig.reminder };\r\n } else {\r\n return { label: 'None', value: 'None' };\r\n }\r\n };\r\n\r\n const onGetCustomFields = (input: CustomFieldByHierarchyQueryParams, form?: FormApi) => {\r\n\r\n setIsCustomFieldLoading(true);\r\n\r\n const params: CustomFieldByHierarchyQueryParams = {\r\n ...input\r\n };\r\n\r\n retrieveQueryData(\r\n CustomFieldByHierarchyQuery,\r\n params,\r\n false,\r\n (data) => onDataGetCustomFieldsRetrieved(data, form),\r\n // tslint:disable-next-line: no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n setIsLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const onDataGetCustomFieldsRetrieved = (data: CustomFieldByHierarchyData, form?: FormApi) => {\r\n const { customFieldByHierarchy } = data.crm\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n customFieldByHierarchy: customFieldByHierarchy\r\n };\r\n });\r\n\r\n setIsCustomFieldLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n checkEmailTemplateCount(null);\r\n fetchCurrency();\r\n // tslint:disable-next-line: align\r\n }, []);\r\n\r\n useEffect(() => {\r\n // - Ran only once\r\n // If we recieve a guid, then fetch EnquiryDetail\r\n if (props.guid) {\r\n setIsLoading(true);\r\n fetchAppUserOnEffect();\r\n fetchEnquiryDetails(props.guid);\r\n fetchTenantDataOnEffect();\r\n fetchHomeCountryOnEffect();\r\n // fetchTenantTimezone();\r\n fetchTimezone();\r\n fetchLeadDetailsHistory(props.guid);\r\n } else {\r\n setIsLoading(false);\r\n }\r\n // tslint:disable-next-line: align\r\n }, [props.isRefreshData, props.guid]);\r\n\r\n const shouldExecuteQuery =\r\n props.nameSummary ||\r\n (props.eventAndCampaignAttendeeSummary && (props.eventAndCampaignAttendeeSummary.entityTypeId === 0 || props.eventAndCampaignAttendeeSummary.entityTypeId === 2)) ||\r\n props.partyDetails\r\n ? true\r\n : false;\r\n\r\n const partyAddressesQuery = useQuery(PartyAddressesQuery, {\r\n variables: {\r\n ...(props.nameSummary && {\r\n nameId: props.nameSummary.nameId,\r\n isFromDataSource: props.nameSummary.isFromDataSource\r\n }) as PartyAddressesParams,\r\n ...(props.eventAndCampaignAttendeeSummary && {\r\n nameId: (props.eventAndCampaignAttendeeSummary as EventAndCampaignAttendeeSummary).nameId,\r\n isFromDataSource: (props.eventAndCampaignAttendeeSummary as EventAndCampaignAttendeeSummary).entityTypeId === 0\r\n }) as PartyAddressesParams,\r\n ...(props.partyDetails && {\r\n nameId: props.partyDetails.id,\r\n isFromDataSource: props.partyDetails.isFromDataSource\r\n }) as PartyAddressesParams\r\n },\r\n skip: !shouldExecuteQuery\r\n });\r\n\r\n // Form's State\r\n let initialValues: Enquiry = {\r\n duplicateCheck: null,\r\n isBookMeetingEmailDialogOpen: false,\r\n isClosed: false,\r\n firstName: '',\r\n lastName: '',\r\n individualSelector: null,\r\n isNameSwitched: false, // props.taskSummary && props.taskSummary.fromName && props.taskSummary.fromNameGuid ? true : false,\r\n nameGuid: null,\r\n email: '',\r\n gender: 'Unknown',\r\n initialEnquiryDate: moment().toDate(),\r\n phone: '',\r\n mobile: '',\r\n source: null,\r\n office: null,\r\n sourceNotes: '',\r\n\r\n organisationSelector: null,\r\n isOrganisationSwitched: false, // props.taskSummary && props.taskSummary.organisation && props.taskSummary.organisationGuid ? true : false,\r\n organisation: '',\r\n organisationGuid: null,\r\n positionAtOrganisation: '',\r\n\r\n practiceAreaGuidID: null,\r\n areaOfLaw: '',\r\n natureOfEnquiry: '',\r\n\r\n internalNotes: '',\r\n files: [],\r\n\r\n assignedTo: null,\r\n assignedToName: null, // Display Name\r\n assignedBy: props.assignedBy,\r\n assignedByName: props.assignedByName, // Display Name\r\n dateAssigned: moment().toDate(),\r\n followUpDueDate: null,\r\n assignmentFollowUpDueReminder: getReminderValue(true),\r\n\r\n // followUpAction: 'Email',\r\n followUpAction: null,\r\n followUpActionSystemName: null,\r\n followUpSystemAction: null,\r\n followUpDate: null,\r\n // outcome: 'More Follow Up',\r\n outcome: null,\r\n outcomeDate: null,\r\n outcomeNotes: '',\r\n reason: null,\r\n reasonGuidID: null,\r\n followUpNotes: null,\r\n hasFollowUpNotesMentions: false,\r\n followUpDueReminder: null,\r\n\r\n handleCreateAndClose: false,\r\n handleCreateAndNew: false,\r\n handleUpdate: false,\r\n // showDiscard: false,\r\n // isFormChanged: false,\r\n isAssignmentExpand: true,\r\n isKeyOpportunity: props.isKeyOpportunity,\r\n isNotProceeding: false,\r\n notProceedingReason: null,\r\n notProceedingReasonGuid: null,\r\n\r\n referrerGuid: null,\r\n referrerName: null,\r\n isShowReferrer: false,\r\n\r\n staff: null,\r\n startTime: null, // moment().add(1, 'hour').toDate(),\r\n endTime: null, // moment().add(2, 'hour').toDate(),\r\n isAllDay: false,\r\n officeLocation: null,\r\n feeApplicable: null,\r\n isSendConfirmation: true,\r\n meetingNotes: null,\r\n timezone: null,\r\n\r\n emailTemplate: null,\r\n\r\n isContactDetailsChanged: false,\r\n isUpdateContacts: false,\r\n isSentAcknowledgementEmail: false,\r\n updateFollowUpDueForInternalNote: true,\r\n outcomeDateChanged: false,\r\n\r\n estimatedFees: null,\r\n isEstimatedFeesIncludesTax: false,\r\n estimatedDisbursements: null,\r\n isEstimatedDisbursementsIncludesTax: false,\r\n enquiryQuality: 3,\r\n likelihoodToProceed: 3,\r\n clientFirstName: null,\r\n clientLastName: null,\r\n dOB: null,\r\n isMarketingConsent: false,\r\n isConflictCheckPerformed: false,\r\n isTermsAndConditionsApproved: false,\r\n isIdentityCheckPerformed: false,\r\n isPrivacyStatementProvided: false,\r\n addressName: null,\r\n floor: null,\r\n number: null,\r\n street: null,\r\n street2: null,\r\n suburb: null,\r\n state: null,\r\n postcode: null,\r\n country: null,\r\n pOBox: null,\r\n postalSuburb: null,\r\n postalState: null,\r\n postalPostCode: null,\r\n postalCountry: null,\r\n isNoConflict: false,\r\n isShowNotProceedingReferrer: false,\r\n isNotProceedingReferrerSwitched: false,\r\n referredToFirmSelector: null,\r\n referredToFirmGuid: null,\r\n referredToFirmName: null,\r\n notProceedingOutcomeNotes: null,\r\n // Fields inside proceeding section\r\n isShowNotProceedingReferrerInProceeding: false,\r\n isNotProceedingReferrerSwitchedInProceeding: false,\r\n referredToFirmSelectorInProceeding: null,\r\n referredToFirmGuidInProceeding: null,\r\n referredToFirmNameInProceeding: null,\r\n notProceedingOutcomeNotesInProceeding: null,\r\n clientRelationshipToEnquirer: null,\r\n matterId: null,\r\n matterGuid: null,\r\n matterTitle: null,\r\n matterFileNumber: null,\r\n matterSelector: null,\r\n pOBoxType: props.pOBoxType,\r\n enquiryNotes: null,\r\n\r\n otherPartyFirstName: null,\r\n otherPartyLastName: null,\r\n otherPartyNotes: null,\r\n otherPartyEmail: null,\r\n otherPartyMobile: null,\r\n otherPartyPhone: null,\r\n otherPartyOrganisation: null,\r\n otherPartyDOB: null,\r\n otherPartyAddressName: null,\r\n otherPartyFloor: null,\r\n otherPartyNumber: null,\r\n otherPartyStreet: null,\r\n otherPartyStreet2: null,\r\n otherPartySuburb: null,\r\n otherPartyState: null,\r\n otherPartyPostcode: null,\r\n otherPartyCountry: null,\r\n\r\n otherPartyPOBoxType: props.pOBoxType,\r\n otherPartyPOBox: null,\r\n otherPartyPostalSuburb: null,\r\n otherPartyPostalState: null,\r\n otherPartyPostalPostCode: null,\r\n otherPartyPostalCountry: null,\r\n isOtherPartyNameSwitched: false,\r\n otherPartyNameGuid: null,\r\n otherPartyOrganisationGuid: null,\r\n otherPartyIndividualSelector: null,\r\n\r\n isSavedDirectly: false,\r\n\r\n isRiskAssessed: null,\r\n riskLevelSelector: null,\r\n riskNotes: null,\r\n\r\n secondClientFirstName: null,\r\n secondClientLastName: null,\r\n secondClientRelationshipToEnquirer: null,\r\n secondClientGender: 'Unknown',\r\n secondClientSuburb: null,\r\n secondClientState: null,\r\n secondClientPostCode: null,\r\n secondClientIsMarketingConsent: false,\r\n secondClientIsTermsAndConditionsApproved: false,\r\n secondClientIsPrivacyStatementProvided: false,\r\n secondClientIsConflictCheckPerformed: false,\r\n secondClientIsIdentityCheckPerformed: false,\r\n secondClientIsNoConflict: false,\r\n secondClientCountry: null,\r\n secondClientAddressName: null,\r\n secondClientFloor: null,\r\n secondClientNumber: null,\r\n secondClientStreet1: null,\r\n secondClientStreet2: null,\r\n secondClientDOB: null,\r\n secondClientPOBoxType: props.pOBoxType,\r\n secondClientPOBox: null,\r\n secondClientPostalSuburb: null,\r\n secondClientPostalState: null,\r\n secondClientPostalPostCode: null,\r\n secondClientPostalCountry: null,\r\n\r\n responseText: null,\r\n\r\n // bot integration\r\n followUpBotUrl: null,\r\n\r\n // events and campaigns\r\n eventAndCampaignSelector: null,\r\n eventsAndCampaignNotes: null,\r\n\r\n title: 'None',\r\n clientTitle: 'None',\r\n secondClientTitle: 'None',\r\n clientEmail: null,\r\n clientGuid: null,\r\n clientMobile: null,\r\n clientPhone: null,\r\n otherPartyTitle: 'None',\r\n secondClientGuid: null,\r\n secondClientEmail: null,\r\n secondClientMobile: null,\r\n secondClientPhone: null,\r\n clientIndividualSelector: null,\r\n isClientNameSwitched: false,\r\n secondClientIndividualSelector: null,\r\n isSecondClientNameSwitched: false,\r\n\r\n clickThroughUrl: null,\r\n utmSource: null,\r\n utmMedium: null,\r\n utmCampaign: null,\r\n utmContent: null,\r\n utmKeyword: null,\r\n googleClickIdentifier: null,\r\n facebookClickIdentifier: null,\r\n };\r\n\r\n const getTaskSummaryIndividualSelectorValue = (taskSummary?: TaskSummary) => {\r\n if (!taskSummary) {\r\n return null;\r\n }\r\n\r\n if (!(props.taskSummary && props.taskSummary.fromName && props.taskSummary.fromNameGuid)) {\r\n return null;\r\n }\r\n\r\n return {\r\n label: props.taskSummary.fromName,\r\n value: props.taskSummary.fromNameGuid,\r\n nameId: props.taskSummary.fromNameId,\r\n guidID: props.taskSummary.fromNameGuid,\r\n // isFromDataSource: taskSummary.isFromDataSource \r\n };\r\n };\r\n\r\n // get all possible data from task summary to enquiry form\r\n if (props.taskSummary) {\r\n initialValues = {\r\n ...initialValues,\r\n firstName: props.taskSummary && props.taskSummary.fromName ? separateName(props.taskSummary.fromName).firstName : '',\r\n lastName: props.taskSummary && props.taskSummary.fromName ? separateName(props.taskSummary.fromName).lastName : '',\r\n individualSelector: getTaskSummaryIndividualSelectorValue(props.taskSummary) as IndividualNameSummary,\r\n nameGuid: props.taskSummary && props.taskSummary.fromNameGuid ? props.taskSummary.fromNameGuid : null,\r\n phone: props.taskSummary ? props.taskSummary.phoneNumber ?? '' : '',\r\n organisationSelector:\r\n props.taskSummary && props.taskSummary.organisation && props.taskSummary.organisationGuid\r\n ? { label: props.taskSummary.organisation, value: props.taskSummary.organisationGuid } as OrganisationIAutoCompleteItem\r\n : null,\r\n organisation: props.taskSummary ? props.taskSummary.organisation ?? '' : '',\r\n organisationGuid: props.taskSummary && props.taskSummary.organisationGuid ? props.taskSummary.organisationGuid : null,\r\n natureOfEnquiry: props.taskSummary && props.taskSummary.notes ? removeTagsAndStyles(props.taskSummary.notes) : '',\r\n };\r\n }\r\n\r\n const getEventsIndividualSelectorValue = (attendee?: EventAndCampaignAttendeeSummary) => {\r\n\r\n if (!attendee) {\r\n return null;\r\n }\r\n\r\n if (!attendee.name && !attendee.entityGuid && !attendee.nameId) {\r\n return null;\r\n }\r\n\r\n return {\r\n label: attendee.name,\r\n value: attendee.entityGuid,\r\n nameId: attendee.nameId,\r\n guidID: attendee.entityGuid,\r\n isFromDataSource: attendee.entityTypeId === 0 ? true : false\r\n };\r\n };\r\n\r\n // get all possible data from event and campaign attendee summary to enquiry form\r\n if (props.eventAndCampaignAttendeeSummary) {\r\n initialValues = {\r\n ...initialValues,\r\n\r\n // individual\r\n firstName:\r\n props.eventAndCampaignAttendeeSummary && props.eventAndCampaignAttendeeSummary.name ? separateName(props.eventAndCampaignAttendeeSummary.name).firstName : '',\r\n lastName: props.eventAndCampaignAttendeeSummary && props.eventAndCampaignAttendeeSummary.name ? separateName(props.eventAndCampaignAttendeeSummary.name).lastName : '',\r\n\r\n ...(props.eventAndCampaignAttendeeSummary &&\r\n (props.eventAndCampaignAttendeeSummary.entityTypeId === 0 || props.eventAndCampaignAttendeeSummary.entityTypeId === 2) && {\r\n individualSelector: getEventsIndividualSelectorValue(props.eventAndCampaignAttendeeSummary) as IndividualNameSummary,\r\n nameGuid: props.eventAndCampaignAttendeeSummary && props.eventAndCampaignAttendeeSummary.entityGuid ? props.eventAndCampaignAttendeeSummary.entityGuid : null,\r\n }),\r\n\r\n phone: props.eventAndCampaignAttendeeSummary ? props.eventAndCampaignAttendeeSummary.phone ?? '' : '',\r\n mobile: props.eventAndCampaignAttendeeSummary ? props.eventAndCampaignAttendeeSummary.mobile ?? '' : '',\r\n email: props.eventAndCampaignAttendeeSummary ? props.eventAndCampaignAttendeeSummary.email ?? '' : '',\r\n\r\n // organistaion\r\n organisation: props.eventAndCampaignAttendeeSummary ? props.eventAndCampaignAttendeeSummary.organisation ?? '' : '',\r\n organisationSelector:\r\n props.eventAndCampaignAttendeeSummary && props.eventAndCampaignAttendeeSummary.organisation && props.eventAndCampaignAttendeeSummary.organisationGuid\r\n ? ({\r\n label: props.eventAndCampaignAttendeeSummary.organisation,\r\n value: props.eventAndCampaignAttendeeSummary.organisationGuid,\r\n } as OrganisationIAutoCompleteItem)\r\n : null,\r\n organisationGuid:\r\n props.eventAndCampaignAttendeeSummary && props.eventAndCampaignAttendeeSummary.organisationGuid ? props.eventAndCampaignAttendeeSummary.organisationGuid : null,\r\n natureOfEnquiry:\r\n props.eventAndCampaignAttendeeSummary && props.eventAndCampaignAttendeeSummary.attendanceNotes\r\n ? removeTagsAndStyles(props.eventAndCampaignAttendeeSummary.attendanceNotes)\r\n : '',\r\n\r\n eventAndCampaignSelector:\r\n props.eventAndCampaignAttendeeSummary && props.eventAndCampaignAttendeeSummary.eventAndCampaignName && props.eventAndCampaignAttendeeSummary.eventAndCampaignGuid\r\n ? ({\r\n label: props.eventAndCampaignAttendeeSummary.eventAndCampaignName,\r\n value: props.eventAndCampaignAttendeeSummary.eventAndCampaignGuid,\r\n } as EventsAndCampaignIAutoCompleteItem)\r\n : null,\r\n eventsAndCampaignNotes: props.eventAndCampaignAttendeeSummary ? props.eventAndCampaignAttendeeSummary.attendanceNotes : null,\r\n };\r\n }\r\n\r\n const getNameSummaryIndividualSelectorValue = (nameSummary?: NameSummary) => {\r\n\r\n if (!nameSummary) {\r\n return null;\r\n }\r\n\r\n if (!nameSummary.name && !nameSummary.guidID && !nameSummary.nameId) {\r\n return null;\r\n }\r\n\r\n return {\r\n label: nameSummary.name,\r\n value: nameSummary.guidID,\r\n nameId: nameSummary.nameId,\r\n guidID: nameSummary.guidID,\r\n isFromDataSource: nameSummary.isFromDataSource\r\n };\r\n };\r\n\r\n if (props.nameSummary) {\r\n initialValues = {\r\n ...initialValues,\r\n\r\n // individual\r\n firstName: props.nameSummary && props.nameSummary.name ? separateName(props.nameSummary.name).firstName : '',\r\n lastName: props.nameSummary && props.nameSummary.name ? separateName(props.nameSummary.name).lastName : '',\r\n\r\n individualSelector: getNameSummaryIndividualSelectorValue(props.nameSummary) as IndividualNameSummary,\r\n nameGuid: props.nameSummary && props.nameSummary.guidID,\r\n // ...(props.nameSummary && props.nameSummary.entityTypeId === 0 && { \r\n // individualSelector: getEventsIndividualSelectorValue(props.nameSummary) as IndividualNameSummary,\r\n // nameGuid: props.nameSummary && props.nameSummary.entityGuid ? props.nameSummary.entityGuid : null,\r\n // }),\r\n\r\n phone: props.nameSummary ? props.nameSummary.phone ?? '' : '',\r\n mobile: props.nameSummary ? props.nameSummary.mobile ?? '' : '',\r\n email: props.nameSummary ? props.nameSummary.emailAddress ?? '' : '',\r\n\r\n // organistaion\r\n // organisation: props.nameSummary ? props.nameSummary.organisation ?? '' : '',\r\n // organisationSelector:\r\n // props.nameSummary && props.nameSummary.organisation && props.nameSummary.organisationGuid\r\n // ? { label: props.nameSummary.organisation, value: props.nameSummary.organisationGuid }\r\n // : null,\r\n // organisationGuid: props.nameSummary && props.nameSummary.organisationGuid ? props.nameSummary.organisationGuid : null,\r\n // natureOfEnquiry: props.nameSummary && props.nameSummary.notes ? removeTagsAndStyles(props.nameSummary.notes) : '',\r\n\r\n };\r\n }\r\n\r\n const getPartyDetailsIndividualSelectorValue = (nameSummaryPartyDefailts?: Partydetails) => {\r\n\r\n if (!nameSummaryPartyDefailts) {\r\n return null;\r\n }\r\n\r\n if (!nameSummaryPartyDefailts.firstName && !nameSummaryPartyDefailts.lastName && !nameSummaryPartyDefailts.guid && !nameSummaryPartyDefailts.id) {\r\n return null;\r\n }\r\n\r\n const fullName = `${nameSummaryPartyDefailts.firstName} ${nameSummaryPartyDefailts.lastName}`; // Concatenate firstName and lastName\r\n\r\n return {\r\n label: fullName,\r\n value: nameSummaryPartyDefailts.guid,\r\n nameId: nameSummaryPartyDefailts.id,\r\n guidID: nameSummaryPartyDefailts.guid,\r\n isFromDataSource: nameSummaryPartyDefailts.isFromDataSource\r\n };\r\n };\r\n\r\n const getPhoneNumberByType = (phoneNumbers: PhoneNumber[], type: 'Phone' | 'Mobile') => {\r\n if (phoneNumbers.length === 0) {\r\n return null;\r\n }\r\n return phoneNumbers.find(phone => phone.type === type) ?? null;\r\n };\r\n\r\n const getPartyFirstEmail = (emailAddresses: EmailAddress[]) => {\r\n if (emailAddresses.length === 0) {\r\n return null;\r\n }\r\n return emailAddresses[0];\r\n };\r\n\r\n const getFirstAddressOfEachType = (data: PartyAddressesData) => {\r\n const addressTypes = new Set();\r\n const firstAddresses = [];\r\n\r\n for (const address of data.party.addresses.address) {\r\n if (!addressTypes.has(address.addressType)) {\r\n addressTypes.add(address.addressType);\r\n firstAddresses.push(address);\r\n }\r\n }\r\n\r\n return firstAddresses;\r\n };\r\n\r\n if (props.partyDetails) {\r\n\r\n initialValues = {\r\n ...initialValues,\r\n\r\n // individual\r\n firstName: props.partyDetails && props.partyDetails.firstName ? props.partyDetails.firstName : '',\r\n lastName: props.partyDetails && props.partyDetails.lastName ? props.partyDetails.lastName : '',\r\n // tslint:disable-next-line: no-any\r\n individualSelector: getPartyDetailsIndividualSelectorValue(props.partyDetails) as any,\r\n nameGuid: props.partyDetails && props.partyDetails.guid,\r\n // ...(props.partyDetails && props.partyDetails.entityTypeId === 0 && { \r\n // individualSelector: getEventsIndividualSelectorValue(props.partyDetails) as IndividualNameSummary,\r\n // nameGuid: props.partyDetails && props.partyDetails.entityGuid ? props.partyDetails.entityGuid : null,\r\n // }),\r\n\r\n phone: props.partyDetails ? getPhoneNumberByType(props.partyDetails.phoneNumbers, 'Phone')?.number ?? '' : '',\r\n mobile: props.partyDetails ? getPhoneNumberByType(props.partyDetails.phoneNumbers, 'Mobile')?.number ?? '' : '',\r\n email: props.partyDetails.emailAddresses ? getPartyFirstEmail(props.partyDetails.emailAddresses)?.email ?? '' : '',\r\n\r\n // organistaion\r\n // organisation: props.partyDetails ? props.partyDetails.organisation ?? '' : '',\r\n // organisationSelector:\r\n // props.partyDetails && props.partyDetails.organisation && props.partyDetails.organisationGuid\r\n // ? { label: props.partyDetails.organisation, value: props.partyDetails.organisationGuid }\r\n // : null,\r\n // organisationGuid: props.partyDetails && props.partyDetails.organisationGuid ? props.partyDetails.organisationGuid : null,\r\n // natureOfEnquiry: props.partyDetails && props.partyDetails.nameNotes ? removeTagsAndStyles(props.partyDetails.nameNotes) : '',\r\n };\r\n }\r\n\r\n // set default value for address if exists in the party addresss\r\n if (partyAddressesQuery.data && partyAddressesQuery.data.party.addresses.address.length > 0 && !partyAddressesQuery.loading) {\r\n\r\n const addresses = getFirstAddressOfEachType(partyAddressesQuery.data);\r\n\r\n addresses.forEach((address) => {\r\n // tslint:disable-next-line: no-shadow-variable\r\n const { addressType, country, floor, name: buildingName, number: buildingNumber, postcode, state: addressState, street, suburb } = address;\r\n\r\n initialValues = {\r\n ...initialValues,\r\n ...(addressType === 'Street' && {\r\n addressName: buildingName,\r\n floor: floor,\r\n number: buildingNumber,\r\n street: street,\r\n street2: '',\r\n suburb: suburb,\r\n state: addressState,\r\n postcode: postcode,\r\n country: country,\r\n }),\r\n ...(addressType === 'POBox' && {\r\n pOBox: buildingNumber,\r\n postalSuburb: suburb,\r\n postalState: addressState,\r\n postalPostCode: postcode,\r\n postalCountry: country,\r\n })\r\n };\r\n });\r\n }\r\n\r\n const fetchMatterDetails = (id: number) => {\r\n const generalInfoDataParams: GeneralInfoDataParams = {\r\n id: id\r\n };\r\n\r\n retrieveGeneralInfoData(\r\n generalInfoDataParams,\r\n true,\r\n (data: GeneralInfoData) => handleMatterDetailsFetch(data),\r\n // tslint:disable-next-line: no-any\r\n (reason: any) => showNotification('Failed to Fetch App User Settings', reason, 'error')\r\n );\r\n };\r\n\r\n const handleMatterDetailsFetch = (data: GeneralInfoData) => {\r\n const generalData: CustomTableContentProps[] = Object\r\n .entries(data.matter)\r\n .filter(([_, v]) => v != null && v !== undefined && v.length > 0)\r\n // tslint:disable-next-line: no-any\r\n .map((matter: any, index) => {\r\n\r\n let name = matter[0];\r\n let value = matter[1];\r\n let type = ValueTypeEnum.STRING;\r\n let hide = true;\r\n let order = index;\r\n\r\n if (matter[0] === 'id') {\r\n name = 'Id';\r\n }\r\n if (matter[0] === 'matterCategory') {\r\n name = 'Category';\r\n hide = false;\r\n order = 2;\r\n }\r\n if (matter[0] === 'country') {\r\n name = 'Country';\r\n }\r\n if (matter[0] === 'family') {\r\n name = 'Family';\r\n }\r\n if (matter[0] === 'fileLocation') {\r\n name = 'Location';\r\n }\r\n if (matter[0] === 'fileNumber') {\r\n name = 'File Number';\r\n }\r\n if (matter[0] === 'firbStatus') {\r\n name = 'Status';\r\n }\r\n if (matter[0] === 'lastUpdate') {\r\n name = 'Last Update';\r\n type = ValueTypeEnum.DATE;\r\n }\r\n if (matter[0] === 'matterType') {\r\n name = 'Matter Type';\r\n hide = false;\r\n order = 3;\r\n }\r\n if (matter[0] === 'property') {\r\n name = 'Property';\r\n }\r\n if (matter[0] === 'propertyLabel') {\r\n name = 'Property Label';\r\n }\r\n if (matter[0] === 'stage') {\r\n name = 'Stage';\r\n }\r\n if (matter[0] === 'state') {\r\n name = 'State';\r\n }\r\n if (matter[0] === 'status') {\r\n name = 'Status';\r\n hide = false;\r\n order = 1;\r\n }\r\n if (matter[0] === 'description') {\r\n name = 'Description';\r\n }\r\n if (name === 'title') {\r\n name = 'Title';\r\n hide = false;\r\n order = 0;\r\n }\r\n if (name === 'images') {\r\n name = 'Images';\r\n // tslint:disable-next-line: no-any\r\n value = matter[1].image.map((image: any) => image.location);\r\n type = ValueTypeEnum.ARRAY_OF_IMAGE;\r\n }\r\n\r\n return {\r\n client: {\r\n value: name,\r\n type: ValueTypeEnum.STRING\r\n },\r\n company: {\r\n value: value,\r\n type: type\r\n },\r\n hide: hide,\r\n order: order\r\n };\r\n }); // .filter(a => a.items[0].value !== null && a.name !== 'id' && a.name !== '__typename');\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n generalInfoData: generalData,\r\n financials: data.matter.financials,\r\n matterClientName: data.matter.client\r\n };\r\n });\r\n };\r\n\r\n const fetchAppUserOnEffect = () => {\r\n fetchAppUserData(\r\n false,\r\n (data: AppUserData) => {\r\n handleAppUserFetch(data);\r\n },\r\n (reason) => {\r\n showNotification('Failed to Fetch App User Settings', reason, 'error');\r\n }\r\n );\r\n };\r\n\r\n const handleAppUserFetch = (data?: AppUserData) => {\r\n if (\r\n data !== null &&\r\n data?.appUser !== undefined &&\r\n data.appUser.isAdministrator !== undefined\r\n ) {\r\n setAppUser((prevAppUser) => {\r\n // Object.assign would also work\r\n return {\r\n ...prevAppUser,\r\n userId: data.appUser.userId,\r\n name: data.appUser.name,\r\n isAdministrator: data.appUser.isAdministrator,\r\n userName: data.appUser.userName\r\n };\r\n });\r\n }\r\n };\r\n\r\n const fetchCurrency = () => {\r\n retrieveCurrencySymbolData(\r\n false,\r\n // tslint:disable-next-line: no-any\r\n (data: any) => onDataCurrency(data),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n });\r\n };\r\n\r\n const onDataCurrency = (data: CurrencySymbolData) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n currency: data.options.currencySymbol.symbol\r\n };\r\n });\r\n };\r\n\r\n // const fetchTenantTimezone = () => {\r\n // fetchTenantTimezoneData(\r\n // false,\r\n // // tslint:disable-next-line: no-any\r\n // (data: any) => onDataTenantTimezone(data),\r\n // // tslint:disable-next-line:no-any\r\n // function (reason: any): void {\r\n // showNotification(null, reason, 'error');\r\n // });\r\n // };\r\n\r\n // const onDataTenantTimezone = (data: RegionSettingsData) => {\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // tenantTimezone: {\r\n // value: data.settings.systems.regionSettings.config.timeZone,\r\n // label: data.settings.systems.regionSettings.config.timeZoneDescription,\r\n // secondaryValue: data.settings.systems.regionSettings.config.baseUtcOffset\r\n // }\r\n // };\r\n // });\r\n // };\r\n\r\n const fetchTimezone = () => {\r\n retrieveTimezoneOptionData(\r\n false,\r\n // tslint:disable-next-line: no-console\r\n (data) => onRetrieveTimezoneData(data),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n }\r\n );\r\n };\r\n\r\n const onRetrieveTimezoneData = (data: TimezoneOptionData) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n timezone: data.options.timezoneOption\r\n };\r\n });\r\n };\r\n\r\n const fetchLeadDetailsHistory = (guid: string) => {\r\n var leadQueryParams: LeadDetailsHistoryQueryParams = {\r\n offset: null,\r\n first: null,\r\n filter: null,\r\n sortColumn: 'DueDate',\r\n sortDirection: 'ASC',\r\n entityGuidID: guid\r\n };\r\n\r\n retrieveLeadDetailsHistoryData(\r\n leadQueryParams,\r\n true,\r\n // tslint:disable-next-line: no-any\r\n (data: any) => onEnquiryHistoryDataRetrieved(data),\r\n // tslint:disable-next-line\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n }\r\n );\r\n };\r\n\r\n const onEnquiryHistoryDataRetrieved = (data: LeadDetailsHistoryData) => {\r\n\r\n setLeadDetailsHistory(data.task.summaryList);\r\n\r\n const summaryList = data.task.summaryList;\r\n\r\n // const task = summaryList.tasks[summaryList.tasks.length - 1];\r\n const createClientTask = summaryList.tasks.find((task: TaskDetails) => {\r\n return (task.taskTypeDescription.toLowerCase() === 'create client' || task.taskTypeDescription.toLowerCase() === 'create matter')\r\n && task.taskStatusDescription.toLowerCase() === 'not started';\r\n });\r\n\r\n let isCreateClient = false;\r\n if (createClientTask) {\r\n isCreateClient = true;\r\n }\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isCreateClient: isCreateClient\r\n };\r\n });\r\n };\r\n\r\n const onGetPartyAddresses = (form: FormApi, values: AnyObject, selection: IndividualNameSummary, name: string) => {\r\n\r\n const params: PartyAddressesParams = {\r\n nameId: selection.nameId,\r\n isFromDataSource: selection.isFromDataSource\r\n };\r\n\r\n retrieveQueryData(\r\n PartyAddressesQuery,\r\n params,\r\n false,\r\n (data) => onDataPartyAddressesRetrieved(data, form, values, name),\r\n // tslint:disable-next-line: no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n setIsLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const onDataPartyAddressesRetrieved = (data: PartyAddressesData, form: FormApi, values: AnyObject, name: string) => {\r\n\r\n if (data && data.party.addresses.address.length === 0) {\r\n\r\n if (name === 'individualSelector' || name === 'clientIndividualSelector') {\r\n\r\n form.change('addressName', null);\r\n form.change('floor', null);\r\n form.change('number', null);\r\n form.change('street', null);\r\n // form.change('street2', street2);\r\n form.change('suburb', null);\r\n form.change('state', null);\r\n form.change('postcode', null);\r\n form.change('country', null);\r\n\r\n }\r\n\r\n if (name === 'secondClientIndividualSelector') {\r\n\r\n form.change('secondClientAddressName', null);\r\n form.change('secondClientFloor', null);\r\n form.change('secondClientNumber', null);\r\n form.change('secondClientStreet1', null);\r\n // form.change('secondClientStreet2', null);\r\n form.change('secondClientSuburb', null);\r\n form.change('secondClientState', null);\r\n form.change('secondClientPostCode', null);\r\n form.change('secondClientCountry', null);\r\n\r\n }\r\n\r\n if (name === 'otherPartyIndividualSelector') {\r\n form.change('otherPartyAddressName', null);\r\n form.change('otherPartyFloor', null);\r\n form.change('otherPartyNumber', null);\r\n form.change('otherPartyStreet', null);\r\n form.change('otherPartySuburb', null);\r\n form.change('otherPartyState', null);\r\n form.change('otherPartyPostcode', null);\r\n form.change('otherPartyCountry', null);\r\n }\r\n } else {\r\n\r\n const addresses = getFirstAddressOfEachType(data);\r\n\r\n addresses.forEach((address) => {\r\n // tslint:disable-next-line: no-shadow-variable\r\n const { addressType, country, floor, name: buildingName, number: buildingNumber, postcode, state: addressState, street, suburb } = address;\r\n\r\n if (addressType === 'Street') {\r\n\r\n if (name === 'individualSelector' || name === 'clientIndividualSelector') {\r\n\r\n form.change('addressName', buildingName);\r\n form.change('floor', floor);\r\n form.change('number', buildingNumber);\r\n form.change('street', street);\r\n // form.change('street2', street2);\r\n form.change('suburb', suburb);\r\n form.change('state', addressState);\r\n form.change('postcode', postcode);\r\n form.change('country', country);\r\n }\r\n\r\n if (name === 'secondClientIndividualSelector') {\r\n form.change('secondClientAddressName', buildingName);\r\n form.change('secondClientFloor', floor);\r\n form.change('secondClientNumber', buildingNumber);\r\n form.change('secondClientStreet1', street);\r\n // form.change('secondClientStreet2', street2);\r\n form.change('secondClientSuburb', suburb);\r\n form.change('secondClientState', addressState);\r\n form.change('secondClientPostCode', postcode);\r\n form.change('secondClientCountry', country);\r\n }\r\n\r\n if (name === 'otherPartyIndividualSelector') {\r\n form.change('otherPartyAddressName', buildingName);\r\n form.change('otherPartyFloor', floor);\r\n form.change('otherPartyNumber', buildingNumber);\r\n form.change('otherPartyStreet', street);\r\n form.change('otherPartySuburb', suburb);\r\n form.change('otherPartyState', addressState);\r\n form.change('otherPartyPostcode', postcode);\r\n form.change('otherPartyCountry', country);\r\n }\r\n }\r\n\r\n if (addressType === 'POBox') {\r\n\r\n if (name === 'individualSelector') {\r\n // form.change('pOBoxType', null);\r\n form.change('pOBox', buildingNumber);\r\n form.change('postalSuburb', suburb);\r\n form.change('postalState', addressState);\r\n form.change('postalPostCode', postcode);\r\n form.change('postalCountry', country);\r\n }\r\n\r\n if (name === 'otherPartyIndividualSelector') {\r\n form.change('otherPartyPOBox', buildingNumber);\r\n form.change('otherPartyPostalSuburb', suburb);\r\n form.change('otherPartyPostalState', addressState);\r\n form.change('otherPartyPostalPostCode', postcode);\r\n form.change('otherPartyPostalCountry', country);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n const fetchEnquiryDetails = (guid: string) => {\r\n var enquiryQueryParams: EnquiryDetailsQueryParams = {\r\n guid: guid,\r\n };\r\n\r\n retrieveEnquiryDetailsData(\r\n enquiryQueryParams,\r\n true,\r\n (data) => onDataRetrieved(data),\r\n // tslint:disable-next-line\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n setIsLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const checkEmailTemplateCount = (areaOfLaw: string | null, form?: FormApi) => {\r\n var emailTemplateCountQueryParams: EmailTemplateCountQueryParams = {\r\n emailType: EmailTemplateTypeEnum[EmailTemplateTypeEnum.NEW_ENQUIRY_RESPONSE],\r\n areaOfLaw: areaOfLaw === null ? '' : areaOfLaw,\r\n };\r\n\r\n retrieveEmailTemplateCount(\r\n emailTemplateCountQueryParams,\r\n true,\r\n (data) => onDataEmailTemplateCountRetrieved(data, form),\r\n // tslint:disable-next-line\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n setIsLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const onDataEmailTemplateCountRetrieved = (data: EmailTemplateData, form?: FormApi) => {\r\n if (data && data.templates && data.templates.emailTemplateCount\r\n && data.templates.emailTemplateCount.count !== undefined) {\r\n\r\n if (form) {\r\n let isSentAcknowledgementEmailOldValue = form.getFieldState('isSentAcknowledgementEmail')?.value;\r\n let isSentAcknowledgementEmailNewValue = false;\r\n\r\n if (isSentAcknowledgementEmailOldValue === true) {\r\n if (data.templates.emailTemplateCount.count > 0) {\r\n isSentAcknowledgementEmailNewValue = true;\r\n } else {\r\n isSentAcknowledgementEmailNewValue = false;\r\n }\r\n }\r\n\r\n // If the value was ticked, and if we don't have any templates now, then untick it.\r\n form.batch(() => {\r\n form.change('isSentAcknowledgementEmail', isSentAcknowledgementEmailNewValue);\r\n });\r\n }\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n hideSendAcknowledgement: data.templates.emailTemplateCount.count > 0 ? false : true\r\n };\r\n });\r\n }\r\n };\r\n\r\n const onDataRetrieved = (data: EnquiryData) => {\r\n\r\n onGetCustomFields({\r\n customFieldGroupGuid: null,\r\n areaOfLawGuid: data.enquiry.detail.practiceAreaGuidID,\r\n // locationGuid: data.enquiry.detail.officeGuidID ? data.enquiry.detail.officeGuidID : null,\r\n });\r\n\r\n const detail = data.enquiry.detail;\r\n\r\n // tslint:disable-next-line: no-console\r\n // console.log('Other details', detail);\r\n\r\n setEnquiryDetails(data.enquiry.detail);\r\n\r\n checkEmailTemplateCount(data.enquiry.detail.areaOfLaw);\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormChanged: false,\r\n tab: detail.assignedTo && detail.assignedToName ? EnquiryFormTab.activity : EnquiryFormTab.details\r\n };\r\n });\r\n\r\n if (data.enquiry.actions) {\r\n setEnquiryActionData(data.enquiry.actions);\r\n }\r\n\r\n if (detail.matterId !== null && detail.matterId !== 0) {\r\n fetchMatterDetails(detail.matterId);\r\n }\r\n\r\n setKey('' + data.enquiry.detail.guid);\r\n\r\n setIsLoading(false);\r\n };\r\n\r\n const fetchTenantDataOnEffect = () => {\r\n fetchTenantData(\r\n false,\r\n (data: TenantData) => {\r\n handleTenantDataFetch(data);\r\n },\r\n (reason) => {\r\n showNotification('Failed to Fetch Tenant Data', reason, 'error');\r\n }\r\n );\r\n };\r\n\r\n const handleTenantDataFetch = (tenantsData?: TenantData) => {\r\n if (\r\n tenantsData !== null &&\r\n tenantsData?.tenant !== undefined &&\r\n tenantsData.tenant.sourceSystem !== undefined\r\n ) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n sourceSystem: tenantsData.tenant.sourceSystem\r\n };\r\n });\r\n }\r\n };\r\n\r\n const fetchHomeCountryOnEffect = () => {\r\n fetchHomeCountry(\r\n false,\r\n (data: OptionData) => {\r\n handleHomeCountryFetch(data);\r\n },\r\n (reason) => {\r\n showNotification('Failed to Fetch Home Country Settings', reason, 'error');\r\n }\r\n );\r\n };\r\n\r\n const handleHomeCountryFetch = (optionData?: OptionData) => {\r\n if (\r\n optionData !== null &&\r\n optionData?.options !== undefined &&\r\n optionData.options.homeCountry !== undefined\r\n ) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n homeCountry: optionData.options.homeCountry.stringValue === null ? 'au' : optionData.options.homeCountry.stringValue,\r\n };\r\n });\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const required = (value: any) => {\r\n return value ? undefined : 'Required';\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const requiredDateValidator = (value: any) => {\r\n if (value) {\r\n // check for a valid date and check for sql's min date\r\n var date = moment(value);\r\n\r\n if (date.isValid() && date.year() >= 1753) {\r\n return undefined;\r\n } else {\r\n return 'Incorrect Date';\r\n }\r\n } else {\r\n return 'Required';\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const dateValidator = (value: any) => {\r\n if (value) {\r\n // check for a valid date and check for sql's min date\r\n var date = moment(value);\r\n\r\n if (date.isValid() && date.year() >= 1753) {\r\n return undefined;\r\n } else {\r\n return 'Incorrect Date';\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const birthDateValidator = (value: any) => {\r\n if (value) {\r\n // check for a valid date and check for sql's min date\r\n var date = moment(value);\r\n\r\n if (date.isValid() && date.year() >= 1753 && date.toDate() <= moment().toDate()) {\r\n return undefined;\r\n } else {\r\n return 'Incorrect Date';\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n // tslint:disable-next-line\r\n const emailRegex = /^(([^<>()\\\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n // tslint:disable-next-line: no-any\r\n const EmailValidateWithRequiredNew = (value: any) => {\r\n let error: string = '';\r\n\r\n if (value === undefined) {\r\n return value ? '' : 'One of Email/Telephone/Mobile are required'; // 'Email is required';\r\n } else if (value.length === 0) {\r\n return value ? '' : 'One of Email/Telephone/Mobile are required'; // 'Email is required';\r\n } else if (!emailRegex.test(value)) {\r\n error = 'Email is not valid';\r\n }\r\n return error;\r\n };\r\n\r\n const isTabActivity = () => {\r\n return state.tab === EnquiryFormTab.activity;\r\n };\r\n\r\n const isTabMatter = () => {\r\n return state.tab === EnquiryFormTab.matterDetails;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const isPoBoxRequired = (values: any) => {\r\n if (values.postalSuburb || values.postalState || values.postalPostCode || values.postalCountry) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const isSecondClientPoBoxRequired = (values: any) => {\r\n if (values.secondClientPostalSuburb || values.secondClientPostalState || values.secondClientPostalPostCode || values.secondClientPostalCountry) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const isOtherPartyPoBoxRequired = (values: any) => {\r\n if (values.otherPartyPostalSuburb || values.otherPartyPostalState || values.otherPartyPostalPostCode || values.otherPartyPostalCountry) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onSubmit = (form: FormApi, values: any, errors?: SubmissionErrors) => {\r\n setIsSubmitting(true);\r\n\r\n // Check if we have new Files\r\n const newFiles = values.files.filter((documentFile: DocumentFile) => {\r\n return documentFile.status === 1;\r\n });\r\n\r\n // tslint:disable-next-line: no-console\r\n // console.log('On Submit New Files', newFiles);\r\n\r\n if (newFiles.length > 0) {\r\n setIsLoading(true);\r\n }\r\n\r\n if (values.handleCreateAndClose) {\r\n createEnquiry(form, values);\r\n } else if (values.handleCreateAndNew) {\r\n createEnquiry(form, values);\r\n } else {\r\n\r\n // update enquiry details\r\n if (isTabMatter()) {\r\n if (!values.matterSelector) {\r\n unlinkMatter(form, values);\r\n } else {\r\n linkMatter(form, values);\r\n }\r\n } else if (!isTabActivity()) {\r\n\r\n const existingEnquiryDetails = getEnquiryDetails(false);\r\n\r\n const updatedValues = updatedDiff(existingEnquiryDetails, values);\r\n\r\n updateEnquiry(form, values, JSON.stringify(updatedValues));\r\n\r\n } else {\r\n\r\n if (values.followUpSystemAction === 'BookMeeting') {\r\n saveBookMetting(form, values);\r\n } else {\r\n saveFollowUp(form, values);\r\n }\r\n }\r\n }\r\n\r\n if (values.followUpBotUrl && values.followUpSystemAction === 'CallForm') {\r\n window.open(`${values.followUpBotUrl}`, '_blank');\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const saveBookMetting = (form: FormApi, values: AnyObject) => {\r\n\r\n let startDate = values.startTime === null ? moment() : moment(values.startTime);\r\n let endDate = values.endTime === null ? moment() : moment(values.endTime);\r\n\r\n let startDateValue = values.startTime === null ? moment().toDate() : moment(values.startTime).toDate();\r\n let endDateValue = values.endTime === null ? moment().toDate() : moment(values.endTime).toDate();\r\n\r\n // If UI timezone is different from location's timezone, then add the offset difference to start and end time.\r\n // let locationUtcOffset = values.officeLocation.baseUtcOffset;\r\n let selectedTimezoneUtcOffset = values.timezone.secondaryValue;\r\n let uiUtcOffset = new Date().getTimezoneOffset() * -1; // comparing with UI's offset because the graphql will convert to UTC based on the UI timezone\r\n\r\n if (selectedTimezoneUtcOffset !== uiUtcOffset && selectedTimezoneUtcOffset > 0) {\r\n let difference = uiUtcOffset - selectedTimezoneUtcOffset;\r\n startDateValue = moment(startDate).add(difference, 'minutes').toDate();\r\n endDateValue = moment(endDate).add(difference, 'minutes').toDate();\r\n }\r\n\r\n var isAssignedToTeam = (values.staff ? values.staff.entityType : 0) === 6;\r\n // book meeting\r\n client.mutate({\r\n mutation: CreateMeetingBookingTaskMutation,\r\n variables: {\r\n input: {\r\n enquiryGuid: props.guid ? props.guid : null,\r\n assignedTo: isAssignedToTeam ? (values.staff ? values.staff!.value : null) : values.assignedTo, // Set it to the existing assigned to value // (appUser ? appUser!.userId : null),\r\n followUpAction: values.followUpAction,\r\n followUpActionSystemName: values.followUpActionSystemName,\r\n startDate: startDateValue,\r\n endDate: endDateValue,\r\n isAllDay: values.isAllDay,\r\n location: values.officeLocation ? values.officeLocation!.label : null,\r\n feeApplicable: values.feeApplicable ? values.feeApplicable : null,\r\n sendConfirmation: values.isSendConfirmation,\r\n staff: values.staff ? values.staff!.value : null,\r\n staffEntityType: values.staff ? values.staff.entityType : null,\r\n meetingNotes: values.meetingNotes ? values.meetingNotes : null,\r\n timezone: values.timezone ? values.timezone!.value : null\r\n }\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any; }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n\r\n // var link = document.getElementById('resetButton');\r\n // if (link !== null) {\r\n // link.click();\r\n // }\r\n // setIsSubmitting(false);\r\n onReset(form, values);\r\n } else {\r\n showNotification('Failed to Save Follow up', results.data.error, 'error');\r\n setIsSubmitting(false);\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Save Follow up', reason, 'error');\r\n setIsSubmitting(false);\r\n });\r\n };\r\n\r\n const saveFollowUp = (form: FormApi, values: Enquiry) => {\r\n // Save the File\r\n client.mutate({\r\n mutation: FollowUpEnquiryMutation,\r\n variables: {\r\n input: getFollowUpEnquiryInput(values)\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any; }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n\r\n // var link = document.getElementById('resetButton');\r\n // if (link !== null) {\r\n // link.click();\r\n // }\r\n // setIsSubmitting(false);\r\n onReset(form, values);\r\n\r\n } else {\r\n showNotification('Failed to Save Follow up', results.data.error, 'error');\r\n setIsSubmitting(false);\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Save Follow up', reason, 'error');\r\n setIsSubmitting(false);\r\n });\r\n };\r\n\r\n const linkMatter = (form: FormApi, values: Enquiry) => {\r\n\r\n client.mutate({\r\n mutation: LinkEnquiryMutation,\r\n variables: {\r\n input: getLinkMatterEnquiryInput(values)\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any; }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n\r\n // var link = document.getElementById('resetButton');\r\n // if (link !== null) {\r\n // link.click();\r\n // }\r\n // setIsSubmitting(false);\r\n\r\n onReset(form, values);\r\n\r\n } else {\r\n showNotification('Failed to Link Matter', results.data.error, 'error');\r\n setIsSubmitting(false);\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Link Matter', reason, 'error');\r\n setIsSubmitting(false);\r\n });\r\n };\r\n\r\n const createEnquiry = (form: FormApi, values: Enquiry) => {\r\n // Save the File\r\n client\r\n .mutate({\r\n mutation: CreateEnquiryMutation,\r\n variables: {\r\n input: getCreateEnquiryInput(values)\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n\r\n // move into subscription success\r\n if (values.handleCreateAndNew) {\r\n // tslint:disable-next-line: no-console\r\n // console.log('handleCreateAndNew', values.handleCreateAndNew, 'reset');\r\n // tslint:disable-next-line\r\n // var link = document.getElementById('resetButton');\r\n // if (link !== null) {\r\n // link.click();\r\n // }\r\n onReset(form, values);\r\n } else {\r\n setIsSubmitting(false);\r\n closePanel(form, values, true);\r\n }\r\n } else {\r\n showNotification('Failed to Save Enquiry', results.data.error, 'error');\r\n setIsSubmitting(false);\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Save Enquiry', reason, 'error');\r\n setIsSubmitting(false);\r\n });\r\n };\r\n\r\n const updateEnquiry = (form: FormApi, values: Enquiry, updatedValues: string) => {\r\n // Save the File\r\n client\r\n .mutate({\r\n mutation: UpdateEnquiryMutation,\r\n variables: {\r\n input: getUpdateEnquiryInput(values, updatedValues)\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n\r\n // var link = document.getElementById('resetButton');\r\n // if (link !== null) {\r\n // link.click();\r\n // }\r\n // onReset(form, values);\r\n setIsSubmitting(false);\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // showTabsSaveAlert: false\r\n // };\r\n // });\r\n\r\n form.change('tabEdited', undefined);\r\n\r\n // onReset(form, values);\r\n } else {\r\n showNotification('Failed to Save Enquiry', results.data.error, 'error');\r\n setIsSubmitting(false);\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Save Enquiry', reason, 'error');\r\n setIsSubmitting(false);\r\n });\r\n };\r\n\r\n const getCreateEnquiryInput = (values: Enquiry) => {\r\n // Set not proceeding values\r\n let followUpAction = values.followUpAction;\r\n let followUpActionSystemName = values.followUpActionSystemName;\r\n let reason = values.reason;\r\n let reasonGuid = values.reasonGuidID;\r\n let outcome = values.outcome;\r\n let outcomeDate = /*values.outcome === 'New Client' || values.outcome === 'New Matter' ||*/ values.outcome === 'Proceeding' || values.outcome === 'Not Proceeding'\r\n ? values.followUpDate : values.outcomeDate;\r\n let outcomeNotes = values.outcomeNotes;\r\n let followUpDueDate = values.assignedTo ? values.followUpDueDate : null;\r\n\r\n if (values.isNotProceeding) {\r\n followUpAction = null; // If not proceeding on creation, there is no follow up action.\r\n followUpActionSystemName = null;\r\n reason = values.notProceedingReason;\r\n reasonGuid = values.notProceedingReasonGuid;\r\n outcome = 'Not Proceeding';\r\n outcomeDate = moment().toDate();\r\n outcomeNotes = '';\r\n // FollowUpDue in Assignment is not mandatory if not proceeding. But, if we set the value, then use that. Or else pass a default value\r\n followUpDueDate = followUpDueDate ? followUpDueDate : moment().toDate();\r\n }\r\n\r\n let clientDobFinal = formatDateString(values.dOB);\r\n let secondClientDobFinal = formatDateString(values.secondClientDOB);\r\n let otherPartyDobFinal = formatDateString(values.otherPartyDOB);\r\n\r\n const tempCustomValues: CustomFieldKeyProps[] = values.customField ? Object.values(values.customField as CustomFieldKeyProps) : [];\r\n\r\n const tempcustomFieldValues: EnquiryCustomFieldMutation[] = tempCustomValues.map((custom: CustomFieldKeyProps) => {\r\n\r\n const dateValueFinal = custom.customFieldType === FieldType.Date ? formatDateString(custom.customFieldValue) : null;\r\n\r\n return {\r\n entityType: 1,\r\n entityGuid: null,\r\n customFieldGuid: custom.customFieldGuid,\r\n // customFieldGroupGuid: custom.customFieldGroupGuid,\r\n boolValue: custom.customFieldType === FieldType['Yes/No'] ? custom.customFieldValue : null,\r\n dateValue: dateValueFinal as any,\r\n currencyValue: custom.customFieldType === FieldType.Currency ? custom.customFieldValue : null,\r\n dateTimeValue: custom.customFieldType === FieldType['Date/Time'] ? custom.customFieldValue : null,\r\n integerValue: custom.customFieldType === FieldType.Integer ? custom.customFieldValue : null,\r\n multiLineTextValue: custom.customFieldType === FieldType['Multi Line'] ? custom.customFieldValue : null,\r\n numberValue: custom.customFieldType === FieldType.Number ? custom.customFieldValue : null,\r\n textValue: custom.customFieldType === FieldType.Text ? custom.customFieldValue : null,\r\n customFieldLookupListItemGuid: custom.customFieldType === FieldType['Lookup List'] && custom.customFieldValue ? custom.customFieldValue.value : null,\r\n };\r\n });\r\n\r\n return {\r\n firstName: values.firstName,\r\n lastName: values.lastName,\r\n email: values.email,\r\n gender: values.gender ? values.gender : 'Unknown',\r\n initialEnquiryDate: values.initialEnquiryDate,\r\n phone: values.phone,\r\n mobile: values.mobile,\r\n source: values.source!.label,\r\n office: values.office && values.office.label ? values.office.label : null,\r\n sourceNotes: values.sourceNotes,\r\n organisation: values.organisation,\r\n positionAtOrganisation: values.positionAtOrganisation,\r\n natureOfEnquiry: values.natureOfEnquiry,\r\n // practiceAreaGuidID: values.practiceAreaGuidID,\r\n areaOfLaw: values.areaOfLaw,\r\n internalNotes: values.internalNotes,\r\n files: GetFiles(values.files),\r\n\r\n // Assignment\r\n assignedTo: values.assignedTo,\r\n followUpDueDate: followUpDueDate,\r\n assignedBy: values.assignedBy,\r\n dateAssigned: values.dateAssigned,\r\n reminderOffset: values.assignedTo\r\n ? values.assignmentFollowUpDueReminder ? values.assignmentFollowUpDueReminder.value : null\r\n : null,\r\n\r\n // Follow Up\r\n followUpAction: followUpAction,\r\n followUpActionSystemName: followUpActionSystemName,\r\n followUpDate: values.followUpAction ? values.followUpDate : null, // Date in Follow Up\r\n outcome: outcome,\r\n outcomeDate: outcomeDate,\r\n outcomeNotes: outcomeNotes,\r\n reason: reason,\r\n reasonGuid: reasonGuid,\r\n followUpNotes: values.followUpNotes,\r\n referredToFirmName: values.referredToFirmNameInProceeding,\r\n referredToFirmGuid: values.referredToFirmGuidInProceeding,\r\n notProceedingNotes: values.notProceedingOutcomeNotesInProceeding,\r\n\r\n sendNotification: state.isEmailNotification,\r\n isKeyOpportunity: values.isKeyOpportunity,\r\n referrerGuid: values.referrerGuid,\r\n nameGuid: values.nameGuid,\r\n organisationGuid: values.organisationGuid,\r\n\r\n isUpdateContacts: values.isUpdateContacts,\r\n isSendEnquiryResponse: values.isSentAcknowledgementEmail,\r\n\r\n estimatedFees: values.estimatedFees,\r\n isEstimatedFeesIncludesTax: values.isEstimatedFeesIncludesTax,\r\n estimatedDisbursements: values.estimatedDisbursements,\r\n isEstimatedDisbursementsIncludesTax: values.isEstimatedDisbursementsIncludesTax,\r\n enquiryQuality: values.enquiryQuality,\r\n likelihoodToProceed: values.likelihoodToProceed,\r\n clientFirstName: values.clientFirstName,\r\n clientLastName: values.clientLastName,\r\n dOB: clientDobFinal,\r\n isMarketingConsent: values.isMarketingConsent,\r\n isConflictCheckPerformed: values.isConflictCheckPerformed,\r\n isTermsAndConditionsApproved: values.isTermsAndConditionsApproved,\r\n isIdentityCheckPerformed: values.isIdentityCheckPerformed,\r\n isPrivacyStatementProvided: values.isPrivacyStatementProvided,\r\n addressName: values.addressName,\r\n floor: values.floor,\r\n number: values.number,\r\n street: values.street,\r\n clientAddressStreet2: values.street2,\r\n suburb: values.suburb,\r\n state: values.state,\r\n postcode: values.postcode,\r\n country: values.country,\r\n pOBoxType: values.pOBox ? values.pOBoxType ? values.pOBoxType : null : null,\r\n pOBox: values.pOBox,\r\n postalSuburb: values.postalSuburb,\r\n postalState: values.postalState,\r\n postalPostCode: values.postalPostCode,\r\n postalCountry: values.postalCountry,\r\n isNoConflict: values.isNoConflict,\r\n clientRelationshipToEnquirer: values.clientRelationshipToEnquirer,\r\n otherPartyFirstName: values.otherPartyFirstName,\r\n otherPartyLastName: values.otherPartyLastName,\r\n otherPartyNotes: values.otherPartyNotes,\r\n otherPartyEmail: values.otherPartyEmail,\r\n otherPartyPhone: values.otherPartyPhone,\r\n otherPartyMobile: values.otherPartyMobile,\r\n otherPartyOrganisation: values.otherPartyOrganisation,\r\n enquiryNotes: values.enquiryNotes,\r\n otherPartyDOB: otherPartyDobFinal,\r\n otherPartyAddressName: values.otherPartyAddressName,\r\n otherPartyFloor: values.otherPartyFloor,\r\n otherPartyNumber: values.otherPartyNumber,\r\n otherPartyStreet: values.otherPartyStreet,\r\n otherPartyStreet2: values.otherPartyStreet2,\r\n otherPartySuburb: values.otherPartySuburb,\r\n otherPartyState: values.otherPartyState,\r\n otherPartyPostcode: values.otherPartyPostcode,\r\n otherPartyCountry: values.otherPartyCountry,\r\n\r\n otherPartyPOBoxType: values.otherPartyPOBoxType,\r\n otherPartyPOBox: values.otherPartyPOBox,\r\n otherPartyPostalSuburb: values.otherPartyPostalSuburb,\r\n otherPartyPostalState: values.otherPartyPostalState,\r\n otherPartyPostalPostCode: values.otherPartyPostalPostCode,\r\n otherPartyPostalCountry: values.otherPartyPostalCountry,\r\n otherPartyGuid: values.otherPartyNameGuid,\r\n otherPartyOrganisationGuid: values.otherPartyOrganisationGuid,\r\n\r\n isRiskAssessed: values.isRiskAssessed,\r\n riskLevel: values.isRiskAssessed ? values.riskLevelSelector ? values.riskLevelSelector.label : null : null,\r\n riskNotes: values.isRiskAssessed ? values.riskNotes : null,\r\n\r\n secondClientFirstName: values.secondClientFirstName,\r\n secondClientLastName: values.secondClientLastName,\r\n secondClientRelationshipToEnquirer: values.secondClientRelationshipToEnquirer,\r\n secondClientGender: values.secondClientGender ?? 'Unknown',\r\n secondClientSuburb: values.secondClientSuburb,\r\n secondClientState: values.secondClientState,\r\n secondClientPostCode: values.secondClientPostCode,\r\n secondClientIsMarketingConsent: values.secondClientIsMarketingConsent,\r\n secondClientIsTermsAndConditionsApproved: values.secondClientIsTermsAndConditionsApproved,\r\n secondClientIsPrivacyStatementProvided: values.secondClientIsPrivacyStatementProvided,\r\n secondClientIsConflictCheckPerformed: values.secondClientIsConflictCheckPerformed,\r\n secondClientIsIdentityCheckPerformed: values.secondClientIsIdentityCheckPerformed,\r\n secondClientIsNoConflict: values.secondClientIsNoConflict,\r\n secondClientCountry: values.secondClientCountry,\r\n secondClientAddressName: values.secondClientAddressName,\r\n secondClientFloor: values.secondClientFloor,\r\n secondClientNumber: values.secondClientNumber,\r\n secondClientStreet1: values.secondClientStreet1,\r\n secondClientStreet2: values.secondClientStreet2,\r\n secondClientDOB: secondClientDobFinal,\r\n secondClientPOBoxType: values.secondClientPOBoxType,\r\n secondClientPOBox: values.secondClientPOBox,\r\n secondClientPostalSuburb: values.secondClientPostalSuburb,\r\n secondClientPostalState: values.secondClientPostalState,\r\n secondClientPostalPostCode: values.secondClientPostalPostCode,\r\n secondClientPostalCountry: values.secondClientPostalCountry,\r\n\r\n responseText: values.responseText,\r\n\r\n // events and campaign\r\n eventAndCampaignGuid: values.eventAndCampaignSelector ? values.eventAndCampaignSelector.value : null,\r\n eventAndCampaignNotes: values.eventsAndCampaignNotes,\r\n\r\n isNameFromDataSource: values.individualSelector?.isFromDataSource ?? null,\r\n // tslint:disable-next-line: max-line-length\r\n isOrganisationFromDataSource: values.organisationSelector?.isFromDataSource ?? (values.individualSelector?.organisationName !== null ? values.individualSelector?.isFromDataSource : null),\r\n isOtherSideFromDataSource: values.otherPartyIndividualSelector?.isFromDataSource ?? null,\r\n isSecondClientFromDataSource: values.secondClientIndividualSelector?.isFromDataSource ?? null,\r\n\r\n title: values.title,\r\n clientTitle: values.clientTitle,\r\n secondClientTitle: values.secondClientTitle,\r\n otherPartyTitle: values.otherPartyTitle,\r\n clientGuid: values.clientGuid,\r\n clientEmail: values.clientEmail,\r\n clientPhone: values.clientPhone,\r\n clientMobile: values.clientMobile,\r\n secondClientGuid: values.secondClientGuid,\r\n secondClientEmail: values.secondClientEmail,\r\n secondClientPhone: values.secondClientPhone,\r\n secondClientMobile: values.secondClientMobile,\r\n\r\n customFields: tempcustomFieldValues,\r\n\r\n clickThroughUrl: values.clickThroughUrl,\r\n utmSource: values.utmSource,\r\n utmMedium: values.utmMedium,\r\n utmCampaign: values.utmCampaign,\r\n utmContent: values.utmContent,\r\n utmKeyword: values.utmKeyword,\r\n googleClickIdentifier: values.googleClickIdentifier,\r\n facebookClickIdentifier: values.facebookClickIdentifier,\r\n };\r\n };\r\n\r\n const getUpdateEnquiryInput = (values: Enquiry, updatedValues: string) => {\r\n\r\n let clientDobFinal = formatDateString(values.dOB);\r\n let secondClientDobFinal = formatDateString(values.secondClientDOB);\r\n let otherPartyDobFinal = formatDateString(values.otherPartyDOB);\r\n\r\n const tempCustomValues: CustomFieldKeyProps[] = values.customField ? Object.values(values.customField as CustomFieldKeyProps) : [];\r\n\r\n const tempcustomFieldValues: EnquiryCustomFieldMutation[] = tempCustomValues.map((custom: CustomFieldKeyProps) => {\r\n\r\n const dateValueFinal = custom.customFieldType === FieldType.Date ? formatDateString(custom.customFieldValue) : null;\r\n\r\n return {\r\n entityType: 1,\r\n entityGuid: null,\r\n customFieldGuid: custom.customFieldGuid,\r\n boolValue: custom.customFieldType === FieldType['Yes/No'] ? custom.customFieldValue : null,\r\n dateValue: dateValueFinal as any,\r\n currencyValue: custom.customFieldType === FieldType.Currency ? custom.customFieldValue : null,\r\n dateTimeValue: custom.customFieldType === FieldType['Date/Time'] ? custom.customFieldValue : null,\r\n integerValue: custom.customFieldType === FieldType.Integer ? custom.customFieldValue : null,\r\n multiLineTextValue: custom.customFieldType === FieldType['Multi Line'] ? custom.customFieldValue : null,\r\n numberValue: custom.customFieldType === FieldType.Number ? custom.customFieldValue : null,\r\n textValue: custom.customFieldType === FieldType.Text ? custom.customFieldValue : null,\r\n customFieldLookupListItemGuid: custom.customFieldType === FieldType['Lookup List'] && custom.customFieldValue ? custom.customFieldValue.value : null,\r\n // customFieldGroupGuid: null\r\n };\r\n });\r\n\r\n return {\r\n guid: values.guid,\r\n firstName: values.firstName,\r\n lastName: values.lastName,\r\n email: values.email,\r\n gender: values.gender ? values.gender : 'Unknown',\r\n initialEnquiryDate: values.initialEnquiryDate,\r\n phone: values.phone,\r\n mobile: values.mobile,\r\n source: values.source!.label,\r\n office: values.office && values.office.label ? values.office.label : null,\r\n sourceNotes: values.sourceNotes,\r\n organisation: values.organisation,\r\n positionAtOrganisation: values.positionAtOrganisation,\r\n natureOfEnquiry: values.natureOfEnquiry,\r\n areaOfLaw: values.areaOfLaw,\r\n internalNotes: values.internalNotes,\r\n files: GetFiles(values.files),\r\n\r\n assignedTo: values.assignedTo,\r\n followUpDueDate: values.assignedTo ? values.followUpDueDate : null,\r\n assignedBy: values.assignedBy,\r\n dateAssigned: values.dateAssigned,\r\n reminderOffset: values.assignedTo\r\n ? values.assignmentFollowUpDueReminder ? values.assignmentFollowUpDueReminder.value : null\r\n : null,\r\n\r\n followUpAction: null, // values.followUpAction,\r\n followUpActionSystemName: null,\r\n followUpDate: null, // values.followUpAction ? values.followUpDate : null,\r\n outcome: null, // values.outcome,\r\n outcomeDate: null, // values.outcome === 'New Client' || values.outcome === 'Not Proceeding' ? values.followUpDate : values.outcomeDate,\r\n outcomeNotes: null,\r\n reason: null, // values.reason,\r\n reasonGuid: null, // values.reasonGuidID,\r\n followUpNotes: null, // values.followUpNotes,\r\n\r\n updatedValues: updatedValues,\r\n sendNotification: state.isEmailNotification,\r\n isKeyOpportunity: values.isKeyOpportunity,\r\n referrerGuid: values.referrerGuid,\r\n nameGuid: values.nameGuid,\r\n organisationGuid: values.organisationGuid,\r\n\r\n isUpdateContacts: values.isUpdateContacts,\r\n isSendEnquiryResponse: values.isSentAcknowledgementEmail,\r\n\r\n estimatedFees: values.estimatedFees,\r\n isEstimatedFeesIncludesTax: values.isEstimatedFeesIncludesTax,\r\n estimatedDisbursements: values.estimatedDisbursements,\r\n isEstimatedDisbursementsIncludesTax: values.isEstimatedDisbursementsIncludesTax,\r\n enquiryQuality: values.enquiryQuality,\r\n likelihoodToProceed: values.likelihoodToProceed,\r\n clientFirstName: values.clientFirstName,\r\n clientLastName: values.clientLastName,\r\n dOB: clientDobFinal,\r\n isMarketingConsent: values.isMarketingConsent,\r\n isConflictCheckPerformed: values.isConflictCheckPerformed,\r\n isTermsAndConditionsApproved: values.isTermsAndConditionsApproved,\r\n isIdentityCheckPerformed: values.isIdentityCheckPerformed,\r\n isPrivacyStatementProvided: values.isPrivacyStatementProvided,\r\n addressName: values.addressName,\r\n floor: values.floor,\r\n number: values.number,\r\n street: values.street,\r\n clientAddressStreet2: values.street2,\r\n suburb: values.suburb,\r\n state: values.state,\r\n postcode: values.postcode,\r\n country: values.country,\r\n pOBoxType: values.pOBox ? values.pOBoxType ? values.pOBoxType : null : null,\r\n pOBox: values.pOBox,\r\n postalSuburb: values.postalSuburb,\r\n postalState: values.postalState,\r\n postalPostCode: values.postalPostCode,\r\n postalCountry: values.postalCountry,\r\n isNoConflict: values.isNoConflict,\r\n clientRelationshipToEnquirer: values.clientRelationshipToEnquirer,\r\n otherPartyFirstName: values.otherPartyFirstName,\r\n otherPartyLastName: values.otherPartyLastName,\r\n otherPartyNotes: values.otherPartyNotes,\r\n otherPartyEmail: values.otherPartyEmail,\r\n otherPartyPhone: values.otherPartyPhone,\r\n otherPartyMobile: values.otherPartyMobile,\r\n otherPartyOrganisation: values.otherPartyOrganisation,\r\n enquiryNotes: values.enquiryNotes,\r\n otherPartyDOB: otherPartyDobFinal,\r\n otherPartyAddressName: values.otherPartyAddressName,\r\n otherPartyFloor: values.otherPartyFloor,\r\n otherPartyNumber: values.otherPartyNumber,\r\n otherPartyStreet: values.otherPartyStreet,\r\n otherPartyStreet2: values.otherPartyStreet2,\r\n otherPartySuburb: values.otherPartySuburb,\r\n otherPartyState: values.otherPartyState,\r\n otherPartyPostcode: values.otherPartyPostcode,\r\n otherPartyCountry: values.otherPartyCountry,\r\n\r\n otherPartyPOBoxType: values.otherPartyPOBoxType,\r\n otherPartyPOBox: values.otherPartyPOBox,\r\n otherPartyPostalSuburb: values.otherPartyPostalSuburb,\r\n otherPartyPostalState: values.otherPartyPostalState,\r\n otherPartyPostalPostCode: values.otherPartyPostalPostCode,\r\n otherPartyPostalCountry: values.otherPartyPostalCountry,\r\n otherPartyGuid: values.otherPartyNameGuid,\r\n otherPartyOrganisationGuid: values.otherPartyOrganisationGuid,\r\n\r\n isRiskAssessed: values.isRiskAssessed,\r\n riskLevel: values.isRiskAssessed ? values.riskLevelSelector ? values.riskLevelSelector.label : null : null,\r\n riskNotes: values.isRiskAssessed ? values.riskNotes : null,\r\n\r\n secondClientFirstName: values.secondClientFirstName,\r\n secondClientLastName: values.secondClientLastName,\r\n secondClientRelationshipToEnquirer: values.secondClientRelationshipToEnquirer,\r\n secondClientGender: values.secondClientGender ?? 'Unknown',\r\n secondClientSuburb: values.secondClientSuburb,\r\n secondClientState: values.secondClientState,\r\n secondClientPostCode: values.secondClientPostCode,\r\n secondClientIsMarketingConsent: values.secondClientIsMarketingConsent,\r\n secondClientIsTermsAndConditionsApproved: values.secondClientIsTermsAndConditionsApproved,\r\n secondClientIsPrivacyStatementProvided: values.secondClientIsPrivacyStatementProvided,\r\n secondClientIsConflictCheckPerformed: values.secondClientIsConflictCheckPerformed,\r\n secondClientIsIdentityCheckPerformed: values.secondClientIsIdentityCheckPerformed,\r\n secondClientIsNoConflict: values.secondClientIsNoConflict,\r\n secondClientCountry: values.secondClientCountry,\r\n secondClientAddressName: values.secondClientAddressName,\r\n secondClientFloor: values.secondClientFloor,\r\n secondClientNumber: values.secondClientNumber,\r\n secondClientStreet1: values.secondClientStreet1,\r\n secondClientStreet2: values.secondClientStreet2,\r\n secondClientDOB: secondClientDobFinal,\r\n secondClientPOBoxType: values.secondClientPOBoxType,\r\n secondClientPOBox: values.secondClientPOBox,\r\n secondClientPostalSuburb: values.secondClientPostalSuburb,\r\n secondClientPostalState: values.secondClientPostalState,\r\n secondClientPostalPostCode: values.secondClientPostalPostCode,\r\n secondClientPostalCountry: values.secondClientPostalCountry,\r\n\r\n responseText: values.responseText,\r\n\r\n // events and campaign\r\n eventAndCampaignGuid: values.eventAndCampaignSelector ? values.eventAndCampaignSelector.value : null,\r\n eventAndCampaignNotes: values.eventsAndCampaignNotes,\r\n\r\n isNameFromDataSource: values.individualSelector?.isFromDataSource ?? null,\r\n isOrganisationFromDataSource: values.organisationSelector?.isFromDataSource ?? null,\r\n\r\n isOtherSideFromDataSource: values.otherPartyIndividualSelector?.isFromDataSource ?? null,\r\n isSecondClientFromDataSource: values.secondClientIndividualSelector?.isFromDataSource ?? null,\r\n\r\n title: values.title,\r\n clientTitle: values.clientTitle,\r\n secondClientTitle: values.secondClientTitle,\r\n otherPartyTitle: values.otherPartyTitle,\r\n clientGuid: values.clientGuid,\r\n clientEmail: values.clientEmail,\r\n clientPhone: values.clientPhone,\r\n clientMobile: values.clientMobile,\r\n secondClientGuid: values.secondClientGuid,\r\n secondClientEmail: values.secondClientEmail,\r\n secondClientPhone: values.secondClientPhone,\r\n secondClientMobile: values.secondClientMobile,\r\n\r\n customFields: tempcustomFieldValues,\r\n\r\n clickThroughUrl: values.clickThroughUrl,\r\n utmSource: values.utmSource,\r\n utmMedium: values.utmMedium,\r\n utmCampaign: values.utmCampaign,\r\n utmContent: values.utmContent,\r\n utmKeyword: values.utmKeyword,\r\n googleClickIdentifier: values.googleClickIdentifier,\r\n facebookClickIdentifier: values.facebookClickIdentifier,\r\n };\r\n };\r\n\r\n const onSelectionChange = (form: FormApi, selection: IAreaOfLawAutoCompleteItem, name: string, values: AnyObject) => {\r\n if (name === 'areaOfLaw') {\r\n form.batch(() => {\r\n\r\n form.change('tempPracticeAreaGuidID', selection && selection.value ? selection.value : '');\r\n form.change('tempAreaOfLaw', selection && selection.label ? selection.label : '');\r\n\r\n if (values.customField && Object.keys(values.customField).length > 0) {\r\n form.change('showCustomFieldWarning', true);\r\n } else {\r\n form.change('practiceAreaGuidID', selection && selection.value ? selection.value : '');\r\n form.change('areaOfLaw', selection && selection.label ? selection.label : '');\r\n onGetCustomFields({\r\n areaOfLawGuid: selection && selection.value ? selection.value : null,\r\n customFieldGroupGuid: null,\r\n }, form);\r\n }\r\n\r\n if (!props.guid) {\r\n form.change('estimatedFees', selection && selection.estimatedFees ? selection.estimatedFees : null);\r\n form.change('estimatedDisbursements', selection && selection.estimatedDisbursements ? selection.estimatedDisbursements : null);\r\n form.change('isEstimatedFeesIncludesTax', selection && selection.isEstimatedFeesIncludesTax ? selection.isEstimatedFeesIncludesTax : false);\r\n form.change('isEstimatedDisbursementsIncludesTax', selection && selection.isEstimatedDisbursementsIncludesTax\r\n ? selection.isEstimatedDisbursementsIncludesTax\r\n : false);\r\n }\r\n });\r\n\r\n if (selection && selection.label) {\r\n checkEmailTemplateCount(selection.label, form);\r\n }\r\n }\r\n };\r\n\r\n const onFollowUpChange = (\r\n form: FormApi,\r\n // tslint:disable-next-line: no-any\r\n values: any,\r\n event: React.ChangeEvent,\r\n checked: boolean,\r\n value: string,\r\n systemAction: string,\r\n url: string | null,\r\n ) => {\r\n const followUpActionValue = event && event.currentTarget && event.currentTarget.value ? event.currentTarget.value : '';\r\n const followUpActionSystemName = value ? value : '';\r\n const followUpSystemAction = systemAction ? systemAction : '';\r\n\r\n form.batch(() => {\r\n form.change('followUpAction', followUpActionValue);\r\n form.change('followUpActionSystemName', followUpActionSystemName);\r\n form.change('followUpSystemAction', followUpSystemAction);\r\n form.change('followUpBotUrl', url);\r\n\r\n if (systemAction && systemAction.toLowerCase() === 'internalnotes') {\r\n if (values.hasFollowUpNotesMentions === true && values.outcomeDateChanged === false) {\r\n form.change('updateFollowUpDueForInternalNote', true);\r\n } else {\r\n form.change('updateFollowUpDueForInternalNote', true);\r\n }\r\n }\r\n\r\n if (followUpSystemAction === 'CreateEmail') {\r\n setIsSubmitting(true);\r\n } else {\r\n setIsSubmitting(false);\r\n form.change('emailTemplate', null);\r\n }\r\n\r\n if (followUpActionValue && !values.outcome) {\r\n form.change('outcome', followUpActionValue ? 'More Follow Up' : '');\r\n }\r\n });\r\n };\r\n\r\n const onEmailTemplateChange = (form: FormApi, selection: IAutoCompleteItem) => {\r\n form.change('emailTemplate', selection);\r\n\r\n if (selection && selection.value) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isSendEmailDialogOpen: true\r\n };\r\n });\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onOutcomeChange = (form: FormApi, values: any, event: React.ChangeEvent, checked: boolean) => {\r\n const outcome = event && event.currentTarget && event.currentTarget.value ? event.currentTarget.value : '';\r\n\r\n form.batch(() => {\r\n form.change('outcome', outcome);\r\n\r\n if (outcome !== 'Not Proceeding') {\r\n form.change('reason', null);\r\n form.change('reasonGuidID', null);\r\n form.change('isShowNotProceedingReferrer', false);\r\n }\r\n });\r\n };\r\n\r\n const stringTruncate = (value: string, limit: number) => {\r\n if (value.length > limit) {\r\n return `${value.substring(0, limit)}...`;\r\n }\r\n return value;\r\n };\r\n\r\n const getInternalNotes = (value: string, limit: number) => {\r\n if (value.length >= limit) {\r\n return (\r\n \r\n

\r\n {stringTruncate(value, (limit - 3))}\r\n

\r\n \r\n );\r\n } else {\r\n return (\r\n

\r\n {value}\r\n

\r\n );\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any max-line-length\r\n const onDropDownSelect = (form: FormApi, values: AnyObject, input: FieldInputProps, selection: IndividualNameSummary | IDownShiftItem | any, name: string) => {\r\n // input.OnChange(selection.value);\r\n if (name === 'assignedTo') {\r\n form.batch(() => {\r\n form.change('assignedTo', selection.value);\r\n form.change('assignedToName', selection.label);\r\n\r\n if (selection.value === undefined) {\r\n form.change('isNotProceeding', false);\r\n form.change('notProceedingReason', null);\r\n form.change('notProceedingReasonGuid', null);\r\n } else {\r\n if (values.followUpDueDate === undefined || values.followUpDueDate === null) {\r\n // only set assignment's follow up due value when we select assigned to value\r\n let followUpDueValue = getFollowUpDueDefaultValue();\r\n form.change('followUpDueDate', followUpDueValue);\r\n }\r\n }\r\n });\r\n } else if (name === 'assignedBy') {\r\n form.batch(() => {\r\n form.change('assignedBy', selection.value);\r\n form.change('assignedByName', selection.label);\r\n });\r\n } else if (name === 'individualSelector') {\r\n form.batch(() => {\r\n // Update required fields\r\n if (selection) {\r\n form.change('firstName', selection && selection.firstName ? selection.firstName : '');\r\n form.change('lastName', selection && selection.lastName ? selection.lastName : '');\r\n form.change('nameGuid', selection && selection.guidID ? selection.guidID : null);\r\n form.change('email', selection && selection.emailAddress ? selection.emailAddress : '');\r\n form.change('phone', selection && selection.phone ? selection.phone : '');\r\n form.change('mobile', selection && selection.mobile ? selection.mobile : '');\r\n form.change('gender', selection && selection.gender ? selection.gender : null);\r\n form.change('title', selection && selection.title ? selection.title : 'None');\r\n\r\n if (selection && selection.organisationName && selection.organisationGuid) {\r\n // Only change if the selected individual has an organisation.\r\n const organisationSelectorValue: OrganisationIAutoCompleteItem = {\r\n label: selection.organisationName,\r\n value: selection.organisationGuid,\r\n isFromDataSource: selection.isFromDataSource\r\n } as OrganisationIAutoCompleteItem;\r\n\r\n // Do not switch if the organisation is selected through Last Name Search. We disable organisation field\r\n // form.change('isOrganisationSwitched', true);\r\n form.change('organisationSelector', organisationSelectorValue);\r\n form.change('organisation', selection && selection.organisationName ? selection.organisationName : null);\r\n form.change('organisationGuid', selection && selection.organisationGuid ? selection.organisationGuid : null);\r\n }\r\n\r\n if (values.isNameSwitched) {\r\n form.change('isNameSwitched', !values.isNameSwitched);\r\n }\r\n }\r\n });\r\n } else if (name === 'clientIndividualSelector') {\r\n form.batch(() => {\r\n // Update required fields\r\n if (selection) {\r\n form.change('clientFirstName', selection && selection.firstName ? selection.firstName : '');\r\n form.change('clientLastName', selection && selection.lastName ? selection.lastName : '');\r\n form.change('clientGuid', selection && selection.guidID ? selection.guidID : null);\r\n form.change('clientEmail', selection && selection.emailAddress ? selection.emailAddress : '');\r\n form.change('clientPhone', selection && selection.phone ? selection.phone : '');\r\n form.change('clientMobile', selection && selection.mobile ? selection.mobile : '');\r\n form.change('gender', selection && selection.gender ? selection.gender : null);\r\n form.change('clientTitle', selection && selection.title ? selection.title : 'None');\r\n\r\n if (values.isClientNameSwitched) {\r\n form.change('isClientNameSwitched', !values.isClientNameSwitched);\r\n }\r\n }\r\n });\r\n } else if (name === 'secondClientIndividualSelector') {\r\n form.batch(() => {\r\n // Update required fields\r\n if (selection) {\r\n form.change('secondClientFirstName', selection && selection.firstName ? selection.firstName : '');\r\n form.change('secondClientLastName', selection && selection.lastName ? selection.lastName : '');\r\n form.change('secondClientEmail', selection && selection.emailAddress ? selection.emailAddress : '');\r\n form.change('secondClientPhone', selection && selection.phone ? selection.phone : '');\r\n form.change('secondClientMobile', selection && selection.mobile ? selection.mobile : '');\r\n form.change('secondClientGender', selection && selection.gender ? selection.gender : null);\r\n form.change('secondClientTitle', selection && selection.title ? selection.title : 'None');\r\n form.change('secondClientGuid', selection && selection.guidID ? selection.guidID : null);\r\n\r\n if (values.isSecondClientNameSwitched) {\r\n form.change('isSecondClientNameSwitched', !values.isSecondClientNameSwitched);\r\n }\r\n }\r\n });\r\n } else if (name === 'organisationSelector') {\r\n form.batch(() => {\r\n form.change('organisation', selection && selection.label ? selection.label : '');\r\n form.change('organisationGuid', selection && selection.value ? selection.value : null);\r\n\r\n if (values.isOrganisationSwitched) {\r\n form.change('isOrganisationSwitched', !values.isOrganisationSwitched);\r\n }\r\n });\r\n } else if (name === 'otherPartyIndividualSelector') {\r\n form.batch(() => {\r\n // Update required fields\r\n if (selection) {\r\n form.change('otherPartyFirstName', selection && selection.firstName ? selection.firstName : '');\r\n form.change('otherPartyLastName', selection && selection.lastName ? selection.lastName : '');\r\n form.change('otherPartyNameGuid', selection && selection.guidID ? selection.guidID : null);\r\n form.change('otherPartyEmail', selection && selection.emailAddress ? selection.emailAddress : '');\r\n form.change('otherPartyPhone', selection && selection.phone ? selection.phone : '');\r\n form.change('otherPartyMobile', selection && selection.mobile ? selection.mobile : '');\r\n\r\n form.change('otherPartyAddressName', selection && selection.addressName ? selection.addressName : '');\r\n form.change('otherPartyFloor', selection && selection.floor ? selection.floor : '');\r\n form.change('otherPartyNumber', selection && selection.number ? selection.number : '');\r\n form.change('otherPartyStreet', selection && selection.street ? selection.street : '');\r\n form.change('otherPartySuburb', selection && selection.city ? selection.city : '');\r\n form.change('otherPartyState', selection && selection.state ? selection.state : '');\r\n form.change('otherPartyPostcode', selection && selection.postCode ? selection.postCode : '');\r\n form.change('otherPartyCountry', selection && selection.country ? selection.country : '');\r\n form.change('otherPartyTitle', selection && selection.title ? selection.title : 'None');\r\n\r\n if (selection && selection.organisationName && selection.organisationGuid) {\r\n // Do not switch if the organisation is selected through Last Name Search. We disable organisation field\r\n // form.change('isOrganisationSwitched', true);\r\n form.change('otherPartyOrganisation', selection && selection.organisationName ? selection.organisationName : null);\r\n form.change('otherPartyOrganisationGuid', selection && selection.organisationGuid ? selection.organisationGuid : null);\r\n }\r\n\r\n if (values.isOtherPartyNameSwitched) {\r\n form.change('isOtherPartyNameSwitched', !values.isOtherPartyNameSwitched);\r\n }\r\n }\r\n });\r\n } else if (name === 'referredToFirmSelector') {\r\n form.batch(() => {\r\n const referredToFirmSelectorValue: IAutoCompleteItem = {\r\n label: selection && selection.label ? selection.label : '',\r\n value: selection && selection.value ? selection.value : null\r\n };\r\n\r\n form.change('referredToFirmSelector', referredToFirmSelectorValue);\r\n form.change('referredToFirmName', selection && selection.label ? selection.label : '');\r\n form.change('referredToFirmGuid', selection && selection.value ? selection.value : null);\r\n });\r\n } else if (name === 'referredToFirmSelectorInProceeding') {\r\n form.batch(() => {\r\n const referredToFirmSelectorInProceedingValue: IAutoCompleteItem = {\r\n label: selection && selection.label ? selection.label : '',\r\n value: selection && selection.value ? selection.value : null\r\n };\r\n\r\n form.change('referredToFirmSelectorInProceeding', referredToFirmSelectorInProceedingValue);\r\n form.change('referredToFirmNameInProceeding', selection && selection.label ? selection.label : '');\r\n form.change('referredToFirmGuidInProceeding', selection && selection.value ? selection.value : null);\r\n });\r\n }\r\n };\r\n\r\n const onSwitch = (form: FormApi, values: AnyObject, name: string) => {\r\n if (name === 'lastName') {\r\n form.batch(() => {\r\n form.change('individualSelector', null); // clear the selector value\r\n\r\n if (!values.isNameSwitched) {\r\n form.change('nameGuid', null);\r\n }\r\n\r\n form.change('isNameSwitched', !values.isNameSwitched);\r\n });\r\n } else if (name === 'organisation') {\r\n form.batch(() => {\r\n form.change('isOrganisationSwitched', !values.isOrganisationSwitched);\r\n form.change('organisationSelector', null);\r\n form.change('organisationGuid', null);\r\n form.change('organisation', '');\r\n });\r\n } else if (name === 'referredToFirm') {\r\n form.batch(() => {\r\n form.change('isNotProceedingReferrerSwitched', !values.isNotProceedingReferrerSwitched);\r\n // form.change('isShowNotProceedingReferrer', !values.isShowNotProceedingReferrer);\r\n form.change('referredToFirmSelector', null);\r\n form.change('referredToFirmGuid', null);\r\n form.change('referredToFirmName', '');\r\n });\r\n } else if (name === 'referredToFirmInProceeding') {\r\n form.batch(() => {\r\n form.change('isNotProceedingReferrerSwitchedInProceeding', !values.isNotProceedingReferrerSwitchedInProceeding);\r\n // form.change('isShowNotProceedingReferrer', !values.isShowNotProceedingReferrer);\r\n form.change('referredToFirmSelectorInProceeding', null);\r\n form.change('referredToFirmGuidInProceeding', null);\r\n form.change('referredToFirmNameInProceeding', '');\r\n });\r\n } else if (name === 'otherPartyLastName') {\r\n form.batch(() => {\r\n form.change('otherPartyIndividualSelector', null); // clear the selector value\r\n\r\n if (!values.isOtherPartyNameSwitched) {\r\n form.change('otherPartyNameGuid', null);\r\n form.change('otherPartyOrganisationGuid', null);\r\n }\r\n\r\n form.change('isOtherPartyNameSwitched', !values.isOtherPartyNameSwitched);\r\n });\r\n } else if (name === 'clientLastName') {\r\n form.batch(() => {\r\n form.change('clientIndividualSelector', null); // clear the selector value\r\n\r\n if (!values.isClientNameSwitched) {\r\n form.change('clientGuid', null);\r\n }\r\n\r\n form.change('isClientNameSwitched', !values.isClientNameSwitched);\r\n });\r\n } else if (name === 'secondClientLastName') {\r\n form.batch(() => {\r\n form.change('secondClientIndividualSelector', null); // clear the selector value\r\n\r\n if (!values.isSecondClientNameSwitched) {\r\n form.change('secondClientGuid', null);\r\n }\r\n\r\n form.change('isSecondClientNameSwitched', !values.isSecondClientNameSwitched);\r\n });\r\n }\r\n };\r\n\r\n const onReset = (form: FormApi, values: AnyObject) => {\r\n // If we are using keepDirtyOnReinitialize, then the form.Reset() will not work.\r\n // So we have change this to false, reset and then set it to true\r\n form.setConfig('keepDirtyOnReinitialize', false);\r\n\r\n form.batch(() => {\r\n form.reset();\r\n form.initialize(initialValues);\r\n\r\n // Do this to reset touched prop\r\n form.resetFieldState('firstName');\r\n form.resetFieldState('lastName');\r\n form.resetFieldState('email');\r\n form.resetFieldState('gender');\r\n form.resetFieldState('initialEnquiryDate');\r\n form.resetFieldState('phone');\r\n form.resetFieldState('mobile');\r\n form.resetFieldState('source');\r\n form.resetFieldState('office');\r\n form.resetFieldState('sourceNotes');\r\n form.resetFieldState('organisation');\r\n form.resetFieldState('positionAtOrganisation');\r\n form.resetFieldState('areaOfLaw');\r\n form.resetFieldState('natureOfEnquiry');\r\n form.resetFieldState('internalNotes');\r\n form.resetFieldState('files');\r\n form.resetFieldState('assignedTo');\r\n form.resetFieldState('assignedBy');\r\n form.resetFieldState('dateAssigned');\r\n form.resetFieldState('assignmentFollowUpDueReminder');\r\n\r\n // Other details\r\n form.resetFieldState('estimatedFees');\r\n form.resetFieldState('isEstimatedFeesIncludesTax');\r\n form.resetFieldState('estimatedDisbursements');\r\n form.resetFieldState('isEstimatedDisbursementsIncludesTax');\r\n form.resetFieldState('enquiryQuality');\r\n form.resetFieldState('likelihoodToProceed');\r\n form.resetFieldState('clientFirstName');\r\n form.resetFieldState('clientLastName');\r\n form.resetFieldState('dOB');\r\n form.resetFieldState('isMarketingConsent');\r\n form.resetFieldState('isConflictCheckPerformed');\r\n form.resetFieldState('isTermsAndConditionsApproved');\r\n form.resetFieldState('isIdentityCheckPerformed');\r\n form.resetFieldState('isPrivacyStatementProvided');\r\n form.resetFieldState('addressName');\r\n form.resetFieldState('floor');\r\n form.resetFieldState('number');\r\n form.resetFieldState('street');\r\n form.resetFieldState('street2');\r\n form.resetFieldState('suburb');\r\n form.resetFieldState('state');\r\n form.resetFieldState('postcode');\r\n form.resetFieldState('country');\r\n form.resetFieldState('pOBoxType');\r\n form.resetFieldState('pOBox');\r\n form.resetFieldState('postalSuburb');\r\n form.resetFieldState('postalState');\r\n form.resetFieldState('postalPostCode');\r\n form.resetFieldState('postalCountry');\r\n form.resetFieldState('isNoConflict');\r\n\r\n form.resetFieldState('otherPartyFirstName');\r\n form.resetFieldState('otherPartyLastName');\r\n form.resetFieldState('otherPartyNotes');\r\n form.resetFieldState('enquiryNotes');\r\n\r\n form.resetFieldState('otherPartyDOB');\r\n form.resetFieldState('otherPartyAddressName');\r\n form.resetFieldState('otherPartyFloor');\r\n form.resetFieldState('otherPartyNumber');\r\n form.resetFieldState('otherPartyStreet');\r\n form.resetFieldState('otherPartyStreet2');\r\n form.resetFieldState('otherPartySuburb');\r\n form.resetFieldState('otherPartyState');\r\n form.resetFieldState('otherPartyPostcode');\r\n form.resetFieldState('otherPartyCountry');\r\n\r\n form.resetFieldState('otherPartyPOBoxType');\r\n form.resetFieldState('otherPartyPOBox');\r\n form.resetFieldState('otherPartyPostalSuburb');\r\n form.resetFieldState('otherPartyPostalState');\r\n form.resetFieldState('otherPartyPostalPostCode');\r\n form.resetFieldState('otherPartyPostalCountry');\r\n\r\n form.change('otherPartyNameGuid', null);\r\n form.change('otherPartyOrganisationGuid', null);\r\n\r\n // We are not resetting here because, in few conditions, these fields does not exists in UI and that will throw errors.\r\n\r\n form.change('followUpAction', 'Emailed');\r\n\r\n form.change('followUpDueDate', null);\r\n form.change('followUpDate', null);\r\n form.change('outcome', null);\r\n form.change('outcomeDate', null);\r\n form.change('outcomeNotes', '');\r\n form.change('reason', null);\r\n form.change('followUpNotes', null);\r\n form.change('followUpDueReminder', null);\r\n\r\n form.change('followUpActionSystemName', '');\r\n form.change('followUpSystemAction', '');\r\n form.change('isContactDetailsChanged', false);\r\n form.change('isUpdateContacts', false);\r\n form.change('updateFollowUpDueForInternalNote', true);\r\n form.change('outcomeDateChanged', false);\r\n\r\n form.change('isNotProceedingReferrerSwitched', false);\r\n form.change('referredToFirmGuid', null);\r\n form.change('referredToFirmName', null);\r\n form.change('notProceedingOutcomeNotes', null);\r\n\r\n form.change('isNotProceedingReferrerSwitchedInProceeding', false);\r\n form.change('referredToFirmGuidInProceeding', null);\r\n form.change('referredToFirmNameInProceeding', null);\r\n form.change('notProceedingOutcomeNotesInProceeding', null);\r\n form.change('isSavedDirectly', false);\r\n\r\n form.change('riskNotes', null);\r\n form.change('riskLevelSelector', null);\r\n form.change('isRiskAssessed', null);\r\n\r\n // client 2 details\r\n form.change('secondClientFirstName', null);\r\n form.change('secondClientLastName', null);\r\n form.change('secondClientRelationshipToEnquirer', null);\r\n form.change('secondClientGender', 'Unknown');\r\n form.change('secondClientSuburb', null);\r\n form.change('secondClientState', null);\r\n form.change('secondClientPostCode', null);\r\n form.change('secondClientIsMarketingConsent', false);\r\n form.change('secondClientIsTermsAndConditionsApproved', false);\r\n form.change('secondClientIsPrivacyStatementProvided', false);\r\n form.change('secondClientIsConflictCheckPerformed', false);\r\n form.change('secondClientIsIdentityCheckPerformed', false);\r\n form.change('secondClientIsNoConflict', false);\r\n form.change('secondClientCountry', null);\r\n form.change('secondClientAddressName', null);\r\n form.change('secondClientFloor', null);\r\n form.change('secondClientNumber', null);\r\n form.change('secondClientStreet1', null);\r\n form.change('secondClientStreet2', null);\r\n form.change('secondClientDOB', null);\r\n form.change('secondClientPOBoxType', null);\r\n form.change('secondClientPOBox', null);\r\n form.change('secondClientPostalSuburb', null);\r\n form.change('secondClientPostalState', null);\r\n form.change('secondClientPostalPostCode', null);\r\n form.change('secondClientPostalCountry', null);\r\n\r\n if (UserFeature.HasAccess(UserFeatureEnum.hasKeyOpportunity)) {\r\n form.change('isKeyOpportunity', props.isKeyOpportunity);\r\n }\r\n\r\n form.change('isSentAcknowledgementEmail', false);\r\n\r\n if (!props.guid) {\r\n form.resetFieldState('isNotProceeding');\r\n form.resetFieldState('notProceedingReason');\r\n }\r\n\r\n form.change('hasFollowUpNotesMentions', false);\r\n\r\n form.change('tabEdited', undefined);\r\n });\r\n\r\n form.setConfig('keepDirtyOnReinitialize', true);\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showDiscard: false,\r\n // showTabsSaveAlert: false,\r\n isFormChanged: false,\r\n isKeyOpportunity: props.isKeyOpportunity,\r\n tab: EnquiryFormTab.details,\r\n isContactDetailsPanelExpand: isCreateForm,\r\n isEnquiryDetailsPanelExpand: isCreateForm,\r\n isAssignPanelExpand: false,\r\n isBookMeetingFromHistoryActivity: false\r\n };\r\n });\r\n\r\n setIsSubmitting(false);\r\n };\r\n\r\n const onHistoryCreateClient = (name: string) => (isCreate: boolean) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n [name]: isCreate\r\n };\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const closePanel = (form: FormApi, values: any, isForceClose: boolean) => {\r\n if (state.isFormChanged === true && !isForceClose) {\r\n // If required pass the values from FormSpy and compare using updateDiff as shown above\r\n // form.change('showDiscard', true); // TODO: Remove if not used. Why this?\r\n\r\n form.change('tabEdited', undefined);\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showDiscard: true,\r\n // showTabsSaveAlert: false\r\n };\r\n });\r\n\r\n } else {\r\n onEnquiryFormClosed();\r\n }\r\n };\r\n\r\n const onActionButtonClick = (form: FormApi, handleCreateAndClose: boolean, handleCreateAndNew: boolean, handleUpdate: boolean) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormSubmit: true\r\n };\r\n });\r\n\r\n form.batch(() => {\r\n form.change('handleCreateAndClose', handleCreateAndClose);\r\n form.change('handleCreateAndNew', handleCreateAndNew);\r\n form.change('handleUpdate', handleUpdate);\r\n });\r\n };\r\n\r\n const onExpandPanel = (panel: string) => (event: React.ChangeEvent<{}>, expanded: boolean) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n [panel]: expanded\r\n };\r\n });\r\n };\r\n\r\n const openErrorPanel = (errors: ValidationErrors) => {\r\n if (Object.keys(errors).length) {\r\n setState((prevState) => {\r\n\r\n let isContactDetailsPanelExpand = false;\r\n let isEnquiryDetailsPanelExpand = false;\r\n let isAssignPanelExpand = false;\r\n let isOtherDetailsPanelExpand = false;\r\n let isOther2DetailsPanelExpand = false;\r\n let isClient2PostalAddressPanelExpand = false;\r\n let isPostalAddressPanelExpand = false;\r\n\r\n if (errors.hasOwnProperty('firstName')\r\n || errors.hasOwnProperty('lastName')\r\n || errors.hasOwnProperty('email')\r\n || errors.hasOwnProperty('mobile')\r\n || errors.hasOwnProperty('phone')\r\n || errors.hasOwnProperty('source')\r\n || errors.hasOwnProperty('office')\r\n || errors.hasOwnProperty('eventAndCampaignSelector')\r\n || errors.hasOwnProperty('internalNotes')\r\n || errors.hasOwnProperty('sourceNotes')\r\n ) {\r\n isContactDetailsPanelExpand = true;\r\n }\r\n if (prevState.isContactDetailsPanelExpand) {\r\n isContactDetailsPanelExpand = true;\r\n }\r\n\r\n if (errors.hasOwnProperty('areaOfLaw')) {\r\n isEnquiryDetailsPanelExpand = true;\r\n }\r\n\r\n if (prevState.isEnquiryDetailsPanelExpand) {\r\n isEnquiryDetailsPanelExpand = true;\r\n }\r\n\r\n if (errors.hasOwnProperty('followUpDueDate')) {\r\n isAssignPanelExpand = true;\r\n }\r\n\r\n if (prevState.isAssignPanelExpand) {\r\n isAssignPanelExpand = true;\r\n }\r\n\r\n if (errors.hasOwnProperty('pOBox')) {\r\n isOtherDetailsPanelExpand = true;\r\n isPostalAddressPanelExpand = true;\r\n }\r\n\r\n if (errors.hasOwnProperty('secondClientPOBox')) {\r\n isOther2DetailsPanelExpand = true;\r\n isClient2PostalAddressPanelExpand = true;\r\n }\r\n\r\n if (prevState.isOtherDetailsPanelExpand) {\r\n isOtherDetailsPanelExpand = true;\r\n }\r\n\r\n if (prevState.isPostalAddressPanelExpand) {\r\n isPostalAddressPanelExpand = true;\r\n }\r\n\r\n return {\r\n ...prevState,\r\n isContactDetailsPanelExpand: isContactDetailsPanelExpand,\r\n isEnquiryDetailsPanelExpand: isEnquiryDetailsPanelExpand,\r\n isAssignPanelExpand: isAssignPanelExpand,\r\n isOtherDetailsPanelExpand: isOtherDetailsPanelExpand,\r\n isPostalAddressPanelExpand: isPostalAddressPanelExpand,\r\n isOther2DetailsPanelExpand: isOther2DetailsPanelExpand,\r\n isClient2PostalAddressPanelExpand: isClient2PostalAddressPanelExpand,\r\n isFormSubmit: false\r\n };\r\n });\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any max-line-length\r\n const onRatingChange = (name: string, isDirectCallMutation: boolean, input: FieldInputProps, form: FormApi, values: AnyObject) => (event: React.ChangeEvent<{}>, value: number | null) => {\r\n if (isDirectCallMutation) {\r\n form.change('isSavedDirectly', true);\r\n\r\n if (name === 'enquiryQuality') {\r\n onUpdateEnquiryQuality(value, values);\r\n }\r\n if (name === 'likelihoodToProceed') {\r\n onUpdateLikelihood(value, values);\r\n }\r\n } else {\r\n form.change('isSavedDirectly', false);\r\n }\r\n\r\n input.onChange(value);\r\n };\r\n\r\n const onUpdateEnquiryQuality = (value: number | null, values: AnyObject) => {\r\n\r\n client\r\n // tslint:disable-next-line: no-any\r\n .mutate({\r\n mutation: UpdateEnquiryQualityMutation,\r\n variables: {\r\n enquiryQuality: value,\r\n guidId: props.guid ? props.guid : null,\r\n isKeyOpportunity: values.isKeyOpportunity\r\n },\r\n });\r\n };\r\n\r\n const onUpdateLikelihood = (value: number | null, values: AnyObject) => {\r\n client\r\n // tslint:disable-next-line: no-any\r\n .mutate({\r\n mutation: UpdateEnquiryLikelihoodMutation,\r\n variables: {\r\n likelihoodToProceed: value,\r\n guidId: props.guid ? props.guid : null,\r\n isKeyOpportunity: values.isKeyOpportunity\r\n },\r\n });\r\n };\r\n\r\n const onToggleBookMeetingEmailDialog = (form: FormApi, isOpen: boolean) => {\r\n form.change('isBookMeetingEmailDialogOpen', isOpen);\r\n };\r\n\r\n const actionButton = (\r\n // tslint:disable-next-line: no-any\r\n form: FormApi,\r\n submitting: boolean,\r\n pristine: boolean,\r\n // tslint:disable-next-line: no-any\r\n values: any,\r\n showEmailNotificationCheckbox: boolean,\r\n isShowTab: boolean,\r\n isShowKeyOpportunity: boolean,\r\n isShowSentAcknowledgementCheckBox: boolean,\r\n showModifyAndSend: boolean\r\n ) => {\r\n\r\n const isModifyAndSendPassRequirements = values.followUpSystemAction === 'BookMeeting' && values.staff\r\n && values.officeLocation && values.timezone && values.startTime && values.endTime\r\n && UserFeature.HasAccess(UserFeatureEnum.hasBookMeetingEmailPreview);\r\n\r\n return (\r\n
\r\n {/* */}\r\n
\r\n {!isCreateForm ? (\r\n
\r\n {\r\n onActionButtonClick(form, false, false, true);\r\n }}\r\n disabled={(submitting || pristine || isSubmitting) || values.isSavedDirectly || !UserFeature.HasAccess(UserFeatureEnum.hasModifyLead)}\r\n >\r\n {isLoading &&
}\r\n {!isLoading && 'Save'}\r\n {/* Update */}\r\n \r\n {isModifyAndSendPassRequirements && showModifyAndSend && (\r\n onToggleBookMeetingEmailDialog(form, true)}\r\n >\r\n Review & Send\r\n \r\n )}\r\n
\r\n ) : (\r\n
\r\n {\r\n onActionButtonClick(form, true, false, false);\r\n }}\r\n disabled={submitting || (pristine && !props.taskSummary) || isSubmitting || !UserFeature.HasAccess(UserFeatureEnum.hasCreateLead)}\r\n\r\n >\r\n {isLoading &&
Saving...
}\r\n {!isLoading && 'Save and Close'}\r\n \r\n {/* {\r\n // When we attach a document the form crashes. Find a solution to that before changing this back.\r\n onActionButtonClick(form, true, false, false);\r\n }}\r\n disabled={submitting || (pristine && !props.taskSummary) || isSubmitting}\r\n >\r\n {isLoading &&
Saving...
}\r\n {!isLoading && 'Save and New'}\r\n */}\r\n
\r\n )}\r\n {/* {!!!isCreateForm && state.tab === EnquiryFormTab.details && (\r\n
\r\n {showEmailNotificationCheckbox && (\r\n }\r\n onChange={onChangeEmailNotification}\r\n name=\"emailNotification\"\r\n />\r\n }\r\n label=\"Email Notification\"\r\n />\r\n )}\r\n {isShowSentAcknowledgementCheckBox && !state.hideSendAcknowledgement && (\r\n \r\n {({ input, meta }) => (\r\n }\r\n onChange={(event: React.ChangeEvent, checked: boolean) => {\r\n // Another approach.\r\n onSendAcknowledgementEmail(form, values, input, checked);\r\n }}\r\n name=\"isSentAcknowledgementEmail\"\r\n />\r\n }\r\n label=\"Send Acknowledgement\"\r\n />\r\n )}\r\n \r\n )}\r\n {isShowKeyOpportunity && UserFeature.HasAccess(UserFeatureEnum.hasKeyOpportunity)\r\n && (\r\n \r\n {({ input, meta }) => (\r\n }\r\n onChange={(event: React.ChangeEvent, checked: boolean) => {\r\n // Another approach.\r\n onKeyOpportunity(form, values, input, checked);\r\n }}\r\n name=\"isKeyOpportunity\"\r\n />\r\n }\r\n label=\"Key Opportunity\"\r\n />\r\n )}\r\n \r\n )}\r\n
\r\n )} */}\r\n {!!!isCreateForm && state.tab === EnquiryFormTab.activity && isShowTab && (\r\n
\r\n \r\n {(\r\n { input } /* FieldRenderProps */\r\n ) => {\r\n // tslint:disable-next-line: radix\r\n return (\r\n
\r\n Enquiry Quality\r\n \r\n
\r\n );\r\n }}\r\n
\r\n \r\n {(\r\n { input } /* FieldRenderProps */\r\n ) => {\r\n // tslint:disable-next-line: radix\r\n return (\r\n
\r\n Likelihood to Proceed\r\n \r\n
\r\n );\r\n }}\r\n
\r\n
\r\n )}\r\n
\r\n closePanel(form, values, false)}\r\n >\r\n {isLoading &&
}\r\n {!isLoading && 'Close'}\r\n {/* Close */}\r\n \r\n {/* onReset(form, values)}\r\n disabled={submitting || pristine}\r\n className={classes.hidden}\r\n >\r\n {isLoading &&
}\r\n {!isLoading && 'Reset'}\r\n */}\r\n
\r\n
\r\n {state.tab === EnquiryFormTab.details && (\r\n
\r\n {showEmailNotificationCheckbox && UserFeature.HasAccess(UserFeatureEnum.hasShowNotificationSendOption) && (\r\n \r\n {({ input, meta }) => (\r\n }\r\n onChange={onChangeEmailNotification}\r\n name=\"emailNotification\"\r\n />\r\n }\r\n label=\"Email Notification\"\r\n />\r\n )}\r\n \r\n )}\r\n {isShowSentAcknowledgementCheckBox && !state.hideSendAcknowledgement && (\r\n \r\n {({ input, meta }) => (\r\n }\r\n onChange={(event: React.ChangeEvent, checked: boolean) => {\r\n // Another approach.\r\n onSendAcknowledgementEmail(form, values, input, checked);\r\n }}\r\n name=\"isSentAcknowledgementEmail\"\r\n />\r\n }\r\n label=\"Send Acknowledgement\"\r\n />\r\n )}\r\n \r\n )}\r\n {isShowKeyOpportunity && UserFeature.HasAccess(UserFeatureEnum.hasKeyOpportunity) && (\r\n \r\n {({ input, meta }) => (\r\n }\r\n onChange={(event: React.ChangeEvent, checked: boolean) => {\r\n // Another approach.\r\n onKeyOpportunity(form, values, input, checked);\r\n }}\r\n name=\"isKeyOpportunity\"\r\n />\r\n }\r\n label=\"Key Opportunity\"\r\n />\r\n )}\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n };\r\n\r\n const displayLoader = () => {\r\n if (isLoading || regionSettings.loading || partyAddressesQuery.loading || countryQuery.loading || tenantQuery.loading) {\r\n return ;\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n\r\n const getDetailsTabFields = () => [\r\n // contact details\r\n 'title',\r\n 'firstName',\r\n 'individualSelector',\r\n 'lastName',\r\n 'initialEnquiryDate',\r\n 'email',\r\n 'phone',\r\n 'mobile',\r\n 'source',\r\n 'office',\r\n 'referrer',\r\n 'sourceNotes',\r\n 'internalNotes',\r\n 'eventAndCampaignSelector',\r\n 'eventsAndCampaignNotes',\r\n\r\n // organisation\r\n\r\n 'organisationSelector',\r\n 'organisation',\r\n 'positionAtOrganisation',\r\n\r\n // enquiryDetails\r\n 'natureOfEnquiry',\r\n 'areaOfLaw',\r\n\r\n // enquiryValuePanels\r\n 'estimatedFees',\r\n 'isEstimatedFeesIncludesTax',\r\n 'estimatedDisbursements',\r\n 'isEstimatedDisbursementsIncludesTax',\r\n 'enquiryQuality',\r\n 'likelihoodToProceed',\r\n 'enquiryNotes',\r\n\r\n\r\n // otherDetailsPanel\r\n 'clientTitle',\r\n 'clientFirstName',\r\n 'clientIndividualSelector',\r\n 'clientLastName',\r\n 'clientRelationshipToEnquirer',\r\n 'clientEmail',\r\n 'clientPhone',\r\n 'clientMobile',\r\n 'dOB',\r\n 'gender',\r\n 'isMarketingConsent',\r\n 'isTermsAndConditionsApproved',\r\n 'isPrivacyStatementProvided',\r\n 'isConflictCheckPerformed',\r\n 'isNoConflict',\r\n 'isIdentityCheckPerformed',\r\n\r\n // clientAddressPanel\r\n 'addressName',\r\n 'floor',\r\n 'number',\r\n 'street',\r\n 'street2',\r\n 'suburb',\r\n 'state',\r\n 'postcode',\r\n 'country',\r\n\r\n // clientPostalAddressPanel\r\n 'pOBoxType',\r\n 'pOBox',\r\n 'postalSuburb',\r\n 'postalState',\r\n 'postalPostCode',\r\n 'postalCountry',\r\n\r\n\r\n // otherDetails2Panel\r\n 'secondClientTitle',\r\n 'secondClientFirstName',\r\n 'secondClientIndividualSelector',\r\n 'secondClientLastName',\r\n 'secondClientRelationshipToEnquirer',\r\n 'secondClientEmail',\r\n 'secondClientPhone',\r\n 'secondClientMobile',\r\n 'secondClientDOB',\r\n 'secondClientGender',\r\n 'secondClientIsMarketingConsent',\r\n 'secondClientIsTermsAndConditionsApproved',\r\n 'secondClientIsPrivacyStatementProvided',\r\n 'secondClientIsConflictCheckPerformed',\r\n 'secondClientIsNoConflict',\r\n 'secondClientIsIdentityCheckPerformed',\r\n\r\n // client2AddressPanel\r\n 'secondClientAddressName',\r\n 'secondClientFloor',\r\n 'secondClientNumber',\r\n 'secondClientStreet1',\r\n 'secondClientStreet2',\r\n 'secondClientSuburb',\r\n 'secondClientState',\r\n 'secondClientPostCode',\r\n 'secondClientCountry',\r\n\r\n // client2PostalAddressPanel\r\n 'secondClientPOBoxType',\r\n 'secondClientPOBox',\r\n 'secondClientPostalSuburb',\r\n 'secondClientPostalState',\r\n 'secondClientPostalPostCode',\r\n 'secondClientPostalCountry',\r\n\r\n // riskAssessedPanel\r\n 'isRiskAssessed',\r\n 'riskLevelSelector',\r\n 'riskNotes',\r\n\r\n // otherSidePanel\r\n 'otherPartyTitle',\r\n 'otherPartyFirstName',\r\n 'otherPartyIndividualSelector',\r\n 'otherPartyLastName',\r\n 'otherPartyEmail',\r\n 'otherPartyPhone',\r\n 'otherPartyMobile',\r\n 'otherPartyDOB',\r\n 'otherPartyOrganisation',\r\n 'otherPartyNotes',\r\n\r\n // detailedEnquiryNotesPanel\r\n 'responseText',\r\n\r\n // custom fields\r\n 'customField'\r\n ];\r\n\r\n const getActivitiesTabFields = () => [\r\n 'followUpAction',\r\n 'staff',\r\n 'isSendConfirmation',\r\n 'officeLocation',\r\n 'timezone',\r\n 'startTime',\r\n 'endTime',\r\n 'isAllDay',\r\n 'meetingNotes',\r\n 'feeApplicable',\r\n 'emailTemplate',\r\n 'followUpDate',\r\n 'followUpNotes',\r\n 'outcome',\r\n 'followUpDueReminder',\r\n 'outcomeNotes',\r\n 'reason',\r\n 'referredToFirmName',\r\n 'referredToFirmSelector',\r\n 'notProceedingOutcomeNotes'\r\n ];\r\n\r\n const deepEqual = (obj1: any, obj2: any) => {\r\n if (obj1 === obj2) return true;\r\n if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 == null || obj2 == null) return false;\r\n\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n\r\n if (keys1.length !== keys2.length) return false;\r\n\r\n for (const key of keys1) {\r\n if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const detectUpdatedTab = (form: FormApi, formValues: any, initialValues: any) => {\r\n\r\n const allTabFields = {\r\n detailsTab: getDetailsTabFields(),\r\n activityTab: getActivitiesTabFields(),\r\n };\r\n\r\n // Determine which tab's fields were updated based on form values\r\n for (const [tab, fields] of Object.entries(allTabFields)) {\r\n if (fields.some((field) => {\r\n if (field === 'customField') {\r\n return !deepEqual(formValues[field], initialValues[field]);\r\n }\r\n return formValues[field] !== initialValues[field];\r\n })) {\r\n console.log('tab', tab);\r\n form.change('tabEdited', tab as any);\r\n // setUpdatedTab(tab);\r\n break;\r\n }\r\n }\r\n };\r\n\r\n // tslint:disable-next-line\r\n const onFormValueChanged = (form: FormApi, props: any, defaultValues: Enquiry) => {\r\n\r\n const { values } = props;\r\n\r\n detectUpdatedTab(form, values, defaultValues);\r\n\r\n // If isSavedDirectly is true, then we don't want to enable save button/ show discard messages\r\n let formState = form.getState().values;\r\n if (formState.isSavedDirectly === true) {\r\n // Check pristine prop for Follow Up Section's controls. if they are not pristine anymore, then the form is changed.\r\n if ((form.getFieldState('followUpAction') !== undefined && !form.getFieldState('followUpAction')?.pristine) ||\r\n (form.getFieldState('staff') !== undefined && !form.getFieldState('staff')?.pristine) ||\r\n (form.getFieldState('isSendConfirmation') !== undefined && !form.getFieldState('isSendConfirmation')?.pristine) ||\r\n (form.getFieldState('officeLocation') !== undefined && !form.getFieldState('officeLocation')?.pristine) ||\r\n (form.getFieldState('timezone') !== undefined && !form.getFieldState('timezone')?.pristine) ||\r\n (form.getFieldState('startTime') !== undefined && !form.getFieldState('startTime')?.pristine) ||\r\n (form.getFieldState('endTime') !== undefined && !form.getFieldState('endTime')?.pristine) ||\r\n (form.getFieldState('isAllDay') !== undefined && !form.getFieldState('isAllDay')?.pristine) ||\r\n (form.getFieldState('meetingNotes') !== undefined && !form.getFieldState('meetingNotes')?.pristine) ||\r\n (form.getFieldState('feeApplicable') !== undefined && !form.getFieldState('feeApplicable')?.pristine) ||\r\n (form.getFieldState('emailTemplate') !== undefined && !form.getFieldState('emailTemplate')?.pristine) ||\r\n (form.getFieldState('followUpDate') !== undefined && !form.getFieldState('followUpDate')?.pristine) ||\r\n (form.getFieldState('followUpNotes') !== undefined && !form.getFieldState('followUpNotes')?.pristine) ||\r\n (form.getFieldState('outcome') !== undefined && !form.getFieldState('outcome')?.pristine) ||\r\n (form.getFieldState('outcomeDate') !== undefined && !form.getFieldState('outcomeDate')?.pristine) ||\r\n (form.getFieldState('followUpDueReminder') !== undefined && !form.getFieldState('followUpDueReminder')?.pristine) ||\r\n (form.getFieldState('outcomeNotes') !== undefined && !form.getFieldState('outcomeNotes')?.pristine) ||\r\n (form.getFieldState('reason') !== undefined && !form.getFieldState('reason')?.pristine) ||\r\n (form.getFieldState('referredToFirmName') !== undefined && !form.getFieldState('referredToFirmName')?.pristine) ||\r\n (form.getFieldState('referredToFirmSelector') !== undefined && !form.getFieldState('referredToFirmSelector')?.pristine) ||\r\n (form.getFieldState('notProceedingOutcomeNotes') !== undefined && !form.getFieldState('notProceedingOutcomeNotes')?.pristine)\r\n ) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormChanged: true\r\n };\r\n });\r\n form.change('isSavedDirectly', false);\r\n } else if (!state.isFormChanged) {\r\n // Set it to not changed if the values are changed from rating controls.\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormChanged: false\r\n };\r\n });\r\n }\r\n } else if (!props.pristine) {\r\n if (!state.isFormChanged) {\r\n // let currentChangesMadeInTheDetailsTab = state.tab === EnquiryFormTab.details;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormChanged: true,\r\n // showTabsSaveAlert: true // currentChangesMadeInTheDetailsTab\r\n };\r\n });\r\n form.change('isSavedDirectly', false);\r\n } else { // isFormChanged = true. But changes could have been made from other tabs before coming into the details tab.\r\n // let currentChangesMadeInTheDetailsTab = state.tab === EnquiryFormTab.details;\r\n\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // showTabsSaveAlert: true // currentChangesMadeInTheDetailsTab\r\n // };\r\n // });\r\n }\r\n }\r\n\r\n // If Estimated Fees has value then set Likelihood to Proceed to 3 stars\r\n if (form.getFieldState('estimatedFees')?.value) {\r\n if (form.getFieldState('likelihoodToProceed')?.value === null || form.getFieldState('likelihoodToProceed')?.value === 0) {\r\n form.change('likelihoodToProceed', 3);\r\n }\r\n }\r\n };\r\n\r\n const GetFiles = (files: DocumentFile[]) => {\r\n return files.map((document: DocumentFile) => {\r\n return {\r\n file: document.file,\r\n name: document.name,\r\n guidID: document.guidID,\r\n status: document.status\r\n };\r\n });\r\n };\r\n\r\n const getFollowUpEnquiryInput = (values: Enquiry) => {\r\n return {\r\n enquiryGuid: props.guid,\r\n followUpAction: values.followUpAction,\r\n followUpActionSystemName: values.followUpActionSystemName,\r\n followUpDate: values.followUpDate === null ? moment().toDate() : moment(values.followUpDate).toDate(),\r\n outcome: values.outcome,\r\n outcomeDate: values.outcomeDate === null ? null : moment(values.outcomeDate).toDate(),\r\n outcomeNotes: values.outcomeNotes,\r\n reason: values.reason,\r\n reasonGuid: values.reasonGuidID,\r\n followUpNotes: values.followUpNotes,\r\n reminderOffset: values.outcome === 'More Follow Up' // Only set reminderOffSet value if the outcome is More Follow Up\r\n ? (values.followUpDueReminder ? values.followUpDueReminder.value : null)\r\n : null,\r\n updateFollowUpDueForInternalNote: values.updateFollowUpDueForInternalNote,\r\n referredToFirmName: values.referredToFirmName,\r\n referredToFirmGuid: values.referredToFirmGuid,\r\n notProceedingNotes: values.notProceedingOutcomeNotes\r\n };\r\n };\r\n\r\n const getLinkMatterEnquiryInput = (values: Enquiry) => {\r\n return {\r\n enquiryGuid: props.guid,\r\n matterGuid: values.matterSelector.value\r\n };\r\n };\r\n\r\n const getFollowUpDueDefaultValue = () => {\r\n // check outcome date (FollowUpDue)\r\n let outcomeDate: Date | null = null;\r\n\r\n if (props.enquiryDefaultConfig) {\r\n\r\n let hours = 0;\r\n let minutes = 0;\r\n let validTimeOfDay = false;\r\n\r\n if (props.enquiryDefaultConfig.timeOfDay && props.enquiryDefaultConfig.timeOfDay.toLowerCase() !== 'invalid date') {\r\n var timeOfDaySplit = props.enquiryDefaultConfig.timeOfDay ? props.enquiryDefaultConfig.timeOfDay.split(':') : null;\r\n\r\n if (timeOfDaySplit) {\r\n validTimeOfDay = true;\r\n hours = Number(timeOfDaySplit[0]);\r\n minutes = Number(timeOfDaySplit[1]);\r\n }\r\n }\r\n\r\n if (props.enquiryDefaultConfig.isCalculatedDays) {\r\n let date = addBusinessDays(moment().toDate(), props.enquiryDefaultConfig.addDays ? props.enquiryDefaultConfig.addDays : 0);\r\n\r\n if (validTimeOfDay) {\r\n outcomeDate = date\r\n .set('hour', hours)\r\n .set('minute', minutes)\r\n .toDate();\r\n } else {\r\n outcomeDate = date.toDate();\r\n }\r\n } else if (props.enquiryDefaultConfig.isCalculatedHours) {\r\n let addhours = props.enquiryDefaultConfig.addHours ? props.enquiryDefaultConfig.addHours : 0;\r\n\r\n outcomeDate = moment()\r\n .add(addhours, 'hour')\r\n .toDate();\r\n }\r\n }\r\n\r\n return outcomeDate;\r\n };\r\n\r\n const getOutcomeDefaultTime = () => {\r\n let defaultTime = new Date().setHours(17, 0, 0, 0);\r\n\r\n let hours = 0;\r\n let minutes = 0;\r\n\r\n if (props.enquiryDefaultConfig && props.enquiryDefaultConfig.isManualEntry\r\n && props.enquiryDefaultConfig.timeOfDay && props.enquiryDefaultConfig.timeOfDay.toLowerCase() !== 'invalid date') {\r\n var timeOfDaySplit = props.enquiryDefaultConfig.timeOfDay ? props.enquiryDefaultConfig.timeOfDay.split(':') : null;\r\n\r\n if (timeOfDaySplit) {\r\n hours = Number(timeOfDaySplit[0]);\r\n minutes = Number(timeOfDaySplit[1]);\r\n }\r\n\r\n defaultTime = new Date().setHours(hours, minutes, 0, 0);\r\n }\r\n\r\n return defaultTime;\r\n };\r\n\r\n const reverseCustomFieldConversion = (fieldValues: EnquiryCustomFieldMutation[]) => {\r\n const customField: { [key: string]: CustomFieldKeyProps } = {};\r\n\r\n fieldValues.forEach(field => {\r\n let customFieldType = 0; // Default to Text\r\n\r\n if (field.boolValue !== null) customFieldType = FieldType['Yes/No'];\r\n else if (field.dateValue !== null) customFieldType = FieldType.Date;\r\n else if (field.currencyValue !== null) customFieldType = FieldType.Currency;\r\n else if (field.dateTimeValue !== null) customFieldType = FieldType['Date/Time'];\r\n else if (field.integerValue !== null) customFieldType = FieldType.Integer;\r\n else if (field.multiLineTextValue !== null) customFieldType = FieldType['Multi Line'];\r\n else if (field.numberValue !== null) customFieldType = FieldType.Number;\r\n else if (field.textValue !== null) customFieldType = FieldType.Text;\r\n else if (field.customFieldLookupListItemGuid !== null) customFieldType = FieldType['Lookup List'];\r\n\r\n if (!field.customFieldGuid) return;\r\n\r\n let customFieldValue = field.boolValue ?? field.dateValue ?? field.currencyValue ?? field.dateTimeValue ?? field.integerValue ?? field.multiLineTextValue ?? field.numberValue ?? field.textValue;\r\n\r\n if (field.customFieldLookupListItemGuid && field.lookupListName) {\r\n customFieldValue = {\r\n label: field.lookupListName,\r\n value: field.customFieldLookupListItemGuid\r\n } as any;\r\n }\r\n\r\n customField[field.customFieldGuid] = {\r\n customFieldGuid: field.customFieldGuid,\r\n customFieldGroupGuid: field.customFieldGroupGuid || '', // Placeholder, replace with actual value if available\r\n customFieldId: \"\", // Placeholder, replace with actual value if available\r\n customFieldType: customFieldType,\r\n customFieldValue: customFieldValue\r\n };\r\n });\r\n\r\n return customField;\r\n };\r\n\r\n\r\n // tslint:disable-next-line: no-any\r\n const getEnquiryDetails = (isInitialLoad: boolean): Enquiry => {\r\n let assignedBy = enquiryDetail.assignedBy;\r\n let assignedByName = enquiryDetail.assignedByName;\r\n let individualSelector: IndividualNameSummary | null = null;\r\n let clientIndividualSelector: IndividualNameSummary | null = null;\r\n let secondClientIndividualSelector: IndividualNameSummary | null = null;\r\n let organisationSelector: OrganisationIAutoCompleteItem | null = null;\r\n let referredToFirmSelector: IAutoCompleteItem | null = null;\r\n let otherPartyIndividualSelector: IndividualNameSummary | null = null;\r\n\r\n if (isInitialLoad && !isCreateForm) {\r\n if (assignedBy === null) {\r\n assignedBy = props.assignedBy;\r\n assignedByName = props.assignedByName;\r\n }\r\n }\r\n\r\n if (enquiryDetail.clientGuid) {\r\n clientIndividualSelector = {\r\n value: enquiryDetail.clientGuid,\r\n label: (enquiryDetail.clientFirstName + ' ' + enquiryDetail.clientLastName),\r\n id: 1,\r\n guidID: enquiryDetail.clientGuid,\r\n name: (enquiryDetail.clientFirstName + ' ' + enquiryDetail.clientLastName),\r\n firstName: enquiryDetail.clientFirstName,\r\n lastName: enquiryDetail.clientLastName,\r\n emailAddress: enquiryDetail.clientEmail,\r\n gender: null,\r\n mobile: enquiryDetail.clientMobile,\r\n phone: enquiryDetail.clientPhone,\r\n organisationGuid: null,\r\n organisationName: null,\r\n nameId: null,\r\n addressName: null,\r\n floor: null,\r\n number: null,\r\n street: null,\r\n city: null,\r\n state: null,\r\n postCode: null,\r\n country: null,\r\n isFromDataSource: null,\r\n title: enquiryDetail.clientTitle ?? 'none',\r\n };\r\n }\r\n\r\n if (enquiryDetail.secondClientGuid) {\r\n secondClientIndividualSelector = {\r\n value: enquiryDetail.secondClientGuid,\r\n label: (enquiryDetail.secondClientFirstName + ' ' + enquiryDetail.secondClientLastName),\r\n id: 1,\r\n guidID: enquiryDetail.secondClientGuid,\r\n name: (enquiryDetail.secondClientFirstName + ' ' + enquiryDetail.secondClientLastName),\r\n firstName: enquiryDetail.secondClientFirstName,\r\n lastName: enquiryDetail.secondClientLastName,\r\n emailAddress: enquiryDetail.secondClientEmail,\r\n gender: null,\r\n mobile: enquiryDetail.secondClientMobile,\r\n phone: enquiryDetail.secondClientPhone,\r\n organisationGuid: null,\r\n organisationName: null,\r\n nameId: null,\r\n addressName: null,\r\n floor: null,\r\n number: null,\r\n street: null,\r\n city: null,\r\n state: null,\r\n postCode: null,\r\n country: null,\r\n isFromDataSource: null,\r\n title: enquiryDetail.secondClientTitle ?? 'none',\r\n };\r\n }\r\n\r\n if (enquiryDetail.nameGuid) {\r\n individualSelector = {\r\n value: enquiryDetail.nameGuid,\r\n label: (enquiryDetail.firstName + ' ' + enquiryDetail.lastName),\r\n id: 1,\r\n guidID: enquiryDetail.nameGuid,\r\n name: (enquiryDetail.firstName + ' ' + enquiryDetail.lastName),\r\n firstName: enquiryDetail.firstName,\r\n lastName: enquiryDetail.lastName,\r\n emailAddress: enquiryDetail.email,\r\n gender: enquiryDetail.gender,\r\n mobile: enquiryDetail.mobile,\r\n phone: enquiryDetail.phone,\r\n organisationGuid: enquiryDetail.organisationGuid,\r\n organisationName: enquiryDetail.organisation,\r\n nameId: null,\r\n addressName: null,\r\n floor: null,\r\n number: null,\r\n street: null,\r\n city: null,\r\n state: null,\r\n postCode: null,\r\n country: null,\r\n isFromDataSource: enquiryDetail.isNameFromDataSource,\r\n title: enquiryDetail.title ?? 'none',\r\n };\r\n }\r\n\r\n if (enquiryDetail.otherPartyNameGuid) {\r\n otherPartyIndividualSelector = {\r\n value: enquiryDetail.otherPartyNameGuid,\r\n label: (enquiryDetail.otherPartyFirstName + ' ' + enquiryDetail.otherPartyLastName),\r\n id: 2,\r\n guidID: enquiryDetail.otherPartyNameGuid,\r\n name: (enquiryDetail.otherPartyFirstName + ' ' + enquiryDetail.otherPartyLastName),\r\n firstName: enquiryDetail.otherPartyFirstName,\r\n lastName: enquiryDetail.otherPartyLastName,\r\n emailAddress: enquiryDetail.otherPartyEmail,\r\n gender: null,\r\n mobile: enquiryDetail.otherPartyMobile,\r\n phone: enquiryDetail.otherPartyPhone,\r\n organisationGuid: enquiryDetail.organisationGuid,\r\n organisationName: enquiryDetail.otherPartyOrganisation,\r\n nameId: null,\r\n addressName: enquiryDetail.otherPartyAddressName,\r\n floor: enquiryDetail.otherPartyFloor,\r\n number: enquiryDetail.otherPartyNumber,\r\n street: enquiryDetail.otherPartyStreet,\r\n city: enquiryDetail.otherPartySuburb,\r\n state: enquiryDetail.otherPartyState,\r\n postCode: enquiryDetail.otherPartyPostcode,\r\n country: enquiryDetail.otherPartyCountry,\r\n isFromDataSource: enquiryDetail.isNameFromDataSource,\r\n title: enquiryDetail.otherPartyTitle ?? 'none',\r\n };\r\n }\r\n\r\n if (enquiryDetail.organisationGuid) {\r\n organisationSelector = { value: enquiryDetail.organisationGuid, label: enquiryDetail.organisation } as OrganisationIAutoCompleteItem;\r\n }\r\n\r\n if (enquiryDetail.referredToFirmGuid) {\r\n referredToFirmSelector = { value: enquiryDetail.referredToFirmGuid, label: enquiryDetail.referredToFirmName };\r\n }\r\n\r\n return {\r\n duplicateCheck: null,\r\n isBookMeetingEmailDialogOpen: false,\r\n guid: props.guid,\r\n isClosed: enquiryDetail.isClosed,\r\n firstName: enquiryDetail.firstName,\r\n lastName: enquiryDetail.lastName,\r\n individualSelector: individualSelector,\r\n email: enquiryDetail.email,\r\n gender: enquiryDetail.gender,\r\n initialEnquiryDate: enquiryDetail.initialEnquiryDate ? moment(enquiryDetail.initialEnquiryDate).toDate() : moment().toDate(),\r\n phone: enquiryDetail.phone,\r\n mobile: enquiryDetail.mobile,\r\n source: enquiryDetail.source && enquiryDetail.sourceGuidID ? { label: enquiryDetail.source, value: enquiryDetail.sourceGuidID } : null,\r\n office: enquiryDetail.office && enquiryDetail.officeGuidID ? { label: enquiryDetail.office, value: enquiryDetail.officeGuidID } : null,\r\n sourceNotes: enquiryDetail.sourceNotes,\r\n\r\n organisationSelector: organisationSelector,\r\n organisation: enquiryDetail.organisation,\r\n positionAtOrganisation: enquiryDetail.positionAtOrganisation,\r\n\r\n natureOfEnquiry: enquiryDetail.natureOfEnquiry,\r\n practiceAreaGuidID: enquiryDetail.practiceAreaGuidID,\r\n areaOfLaw: enquiryDetail.areaOfLaw,\r\n\r\n internalNotes: enquiryDetail.internalNotes,\r\n files: enquiryDetail.files,\r\n\r\n assignedTo: enquiryDetail.assignedTo,\r\n assignedToName: enquiryDetail.assignedToName,\r\n // assignedToEmailAddress: enquiryDetail.assignedToEmailAddress,\r\n assignedBy: assignedBy,\r\n assignedByName: assignedByName,\r\n // assignedByEmailAddress: enquiryDetail.assignedByEmailAddress,\r\n dateAssigned: enquiryDetail.dateAssigned === null ? moment().toDate() : moment(enquiryDetail.dateAssigned).toDate(),\r\n followUpDueDate: enquiryDetail.followUpDueDate === null ? null : moment(enquiryDetail.followUpDueDate).toDate(),\r\n // followUpDueDate: enquiryDetail.followUpDueDate === null\r\n // ? assignedBy // When an enquiry is closed and re-opened, there will not be a due date.\r\n // // So the Follow Up Due in Assignment will be empty and cause validation errors. So, if we have a assignment value, then set it to today.\r\n // ? (getFollowUpDueDefaultValue() == null ? moment().toDate() : getFollowUpDueDefaultValue())\r\n // : null\r\n // : moment(enquiryDetail.followUpDueDate).toDate(),\r\n assignmentFollowUpDueReminder: getReminderValue(true),\r\n\r\n followUpAction: 'Emailed', // enquiryDetail.followUpAction,\r\n followUpActionSystemName: 'Emailed',\r\n followUpSystemAction: '',\r\n followUpDate: moment().toDate(), // enquiryDetail.followUpDate === null ? moment().toDate() : moment(enquiryDetail.followUpDate).toDate(),\r\n outcome: 'More Follow Up', // enquiryDetail.outcome,y\r\n outcomeDate: getFollowUpDueDefaultValue(), // null,\r\n outcomeNotes: '',\r\n reason: null, // enquiryDetail.reason,\r\n reasonGuidID: null,\r\n followUpNotes: null, // enquiryDetail.followUpNotes,\r\n hasFollowUpNotesMentions: false,\r\n followUpDueReminder: getReminderValue(false),\r\n\r\n handleCreateAndClose: false,\r\n handleCreateAndNew: false,\r\n handleUpdate: false,\r\n // showDiscard: false,\r\n // isFormChanged: false,\r\n isAssignmentExpand: enquiryDetail.assignedTo ? false : true,\r\n isKeyOpportunity: enquiryDetail.isKeyOpportunity,\r\n isNotProceeding: enquiryDetail.outcome === 'Not Proceeding' ? true : false,\r\n notProceedingReason: null,\r\n notProceedingReasonGuid: null,\r\n\r\n referrerGuid: enquiryDetail.referrerGuid,\r\n referrerName: enquiryDetail.referrerName,\r\n isShowReferrer: enquiryDetail.isSourceReferrer ? true : (enquiryDetail.referrerGuid ? true : false),\r\n\r\n isNameSwitched: false,\r\n isOrganisationSwitched: false, // enquiryDetail.organisationGuid ? true : false,\r\n nameGuid: enquiryDetail.nameGuid,\r\n organisationGuid: enquiryDetail.organisationGuid,\r\n\r\n // tslint:disable-next-line: max-line-length\r\n staff: null,\r\n startTime: null, // moment().add(1, 'hour').toDate(),\r\n endTime: null, // moment().add(2, 'hour').toDate(),\r\n isAllDay: false,\r\n officeLocation: null,\r\n feeApplicable: null,\r\n isSendConfirmation: true,\r\n meetingNotes: null,\r\n timezone: null,\r\n\r\n emailTemplate: null,\r\n\r\n isContactDetailsChanged: false,\r\n isUpdateContacts: false,\r\n isSentAcknowledgementEmail: false,\r\n updateFollowUpDueForInternalNote: true,\r\n outcomeDateChanged: false,\r\n\r\n // Other details\r\n estimatedFees: enquiryDetail.estimatedFees,\r\n isEstimatedFeesIncludesTax: enquiryDetail.isEstimatedFeesIncludesTax,\r\n estimatedDisbursements: enquiryDetail.estimatedDisbursements,\r\n isEstimatedDisbursementsIncludesTax: enquiryDetail.isEstimatedDisbursementsIncludesTax,\r\n enquiryQuality: enquiryDetail.enquiryQuality,\r\n likelihoodToProceed: enquiryDetail.likelihoodToProceed,\r\n\r\n clientFirstName: enquiryDetail.clientFirstName,\r\n clientLastName: enquiryDetail.clientLastName,\r\n dOB: enquiryDetail.dOB,\r\n isMarketingConsent: enquiryDetail.isMarketingConsent,\r\n isConflictCheckPerformed: enquiryDetail.isConflictCheckPerformed,\r\n isTermsAndConditionsApproved: enquiryDetail.isTermsAndConditionsApproved,\r\n isIdentityCheckPerformed: enquiryDetail.isIdentityCheckPerformed,\r\n isPrivacyStatementProvided: enquiryDetail.isPrivacyStatementProvided,\r\n addressName: enquiryDetail.addressName,\r\n floor: enquiryDetail.floor,\r\n number: enquiryDetail.number,\r\n street: enquiryDetail.street,\r\n street2: enquiryDetail.clientAddressStreet2,\r\n suburb: enquiryDetail.suburb,\r\n state: enquiryDetail.state,\r\n postcode: enquiryDetail.postcode,\r\n country: enquiryDetail.country,\r\n pOBoxType: enquiryDetail.pOBoxType ? enquiryDetail.pOBoxType : props.pOBoxType,\r\n pOBox: enquiryDetail.pOBox,\r\n postalSuburb: enquiryDetail.postalSuburb,\r\n postalState: enquiryDetail.postalState,\r\n postalPostCode: enquiryDetail.postalPostCode,\r\n postalCountry: enquiryDetail.postalCountry,\r\n isNoConflict: enquiryDetail.isNoConflict,\r\n isShowNotProceedingReferrer: enquiryDetail.referredToFirmGuid ? true : false,\r\n isNotProceedingReferrerSwitched: false,\r\n referredToFirmSelector: referredToFirmSelector,\r\n referredToFirmGuid: enquiryDetail.referredToFirmGuid,\r\n referredToFirmName: enquiryDetail.referredToFirmName,\r\n notProceedingOutcomeNotes: enquiryDetail.notProceedingOutcomeNotes,\r\n isShowNotProceedingReferrerInProceeding: enquiryDetail.referredToFirmGuid ? true : false,\r\n isNotProceedingReferrerSwitchedInProceeding: false,\r\n referredToFirmSelectorInProceeding: referredToFirmSelector,\r\n referredToFirmGuidInProceeding: enquiryDetail.referredToFirmGuid,\r\n referredToFirmNameInProceeding: enquiryDetail.referredToFirmName,\r\n notProceedingOutcomeNotesInProceeding: enquiryDetail.notProceedingOutcomeNotes,\r\n clientRelationshipToEnquirer: enquiryDetail.clientRelationshipToEnquirer,\r\n matterId: enquiryDetail.matterId,\r\n matterGuid: enquiryDetail.matterGuid,\r\n matterTitle: enquiryDetail.matterTitle,\r\n matterFileNumber: enquiryDetail.matterFileNumber,\r\n matterSelector: enquiryDetail.matterId ? {\r\n label: enquiryDetail.matterFileNumber + ' (' + enquiryDetail.matterTitle + ')',\r\n value: '' + enquiryDetail.matterGuid,\r\n fileNumber: enquiryDetail.matterFileNumber,\r\n title: enquiryDetail.matterTitle,\r\n id: enquiryDetail.matterId\r\n } : null,\r\n enquiryNotes: enquiryDetail.enquiryNotes,\r\n\r\n otherPartyFirstName: enquiryDetail.otherPartyFirstName,\r\n otherPartyLastName: enquiryDetail.otherPartyLastName,\r\n otherPartyNotes: enquiryDetail.otherPartyNotes,\r\n otherPartyEmail: enquiryDetail.otherPartyEmail,\r\n otherPartyPhone: enquiryDetail.otherPartyPhone,\r\n otherPartyMobile: enquiryDetail.otherPartyMobile,\r\n otherPartyOrganisation: enquiryDetail.otherPartyOrganisation,\r\n isSavedDirectly: false,\r\n otherPartyDOB: enquiryDetail.otherPartyDOB,\r\n otherPartyAddressName: enquiryDetail.otherPartyAddressName,\r\n otherPartyFloor: enquiryDetail.otherPartyFloor,\r\n otherPartyNumber: enquiryDetail.otherPartyNumber,\r\n otherPartyStreet: enquiryDetail.otherPartyStreet,\r\n otherPartyStreet2: enquiryDetail.otherPartyStreet2,\r\n otherPartySuburb: enquiryDetail.otherPartySuburb,\r\n otherPartyState: enquiryDetail.otherPartyState,\r\n otherPartyPostcode: enquiryDetail.otherPartyPostcode,\r\n otherPartyCountry: enquiryDetail.otherPartyCountry,\r\n\r\n otherPartyPOBoxType: enquiryDetail.otherPartyPOBoxType,\r\n otherPartyPOBox: enquiryDetail.otherPartyPOBox,\r\n otherPartyPostalSuburb: enquiryDetail.otherPartyPostalSuburb,\r\n otherPartyPostalState: enquiryDetail.otherPartyPostalState,\r\n otherPartyPostalPostCode: enquiryDetail.otherPartyPostalPostCode,\r\n otherPartyPostalCountry: enquiryDetail.otherPartyPostalCountry,\r\n otherPartyNameGuid: enquiryDetail.otherPartyNameGuid,\r\n otherPartyOrganisationGuid: enquiryDetail.otherPartyOrganisationGuid,\r\n otherPartyIndividualSelector: otherPartyIndividualSelector,\r\n isOtherPartyNameSwitched: false,\r\n\r\n isRiskAssessed: enquiryDetail.isRiskAssessed,\r\n riskLevelSelector: enquiryDetail.riskLevelGuid ? { label: enquiryDetail.riskLevel ?? '', value: enquiryDetail.riskLevelGuid } : null,\r\n riskNotes: enquiryDetail.riskNotes,\r\n\r\n secondClientFirstName: enquiryDetail.secondClientFirstName,\r\n secondClientLastName: enquiryDetail.secondClientLastName,\r\n secondClientRelationshipToEnquirer: enquiryDetail.secondClientRelationshipToEnquirer,\r\n secondClientGender: enquiryDetail.secondClientGender,\r\n secondClientSuburb: enquiryDetail.secondClientSuburb,\r\n secondClientState: enquiryDetail.secondClientState,\r\n secondClientPostCode: enquiryDetail.secondClientPostCode,\r\n secondClientIsMarketingConsent: enquiryDetail.secondClientIsMarketingConsent,\r\n secondClientIsTermsAndConditionsApproved: enquiryDetail.secondClientIsTermsAndConditionsApproved,\r\n secondClientIsPrivacyStatementProvided: enquiryDetail.secondClientIsPrivacyStatementProvided,\r\n secondClientIsConflictCheckPerformed: enquiryDetail.secondClientIsConflictCheckPerformed,\r\n secondClientIsIdentityCheckPerformed: enquiryDetail.secondClientIsIdentityCheckPerformed,\r\n secondClientIsNoConflict: enquiryDetail.secondClientIsNoConflict,\r\n secondClientCountry: enquiryDetail.secondClientCountry,\r\n secondClientAddressName: enquiryDetail.secondClientAddressName,\r\n secondClientFloor: enquiryDetail.secondClientFloor,\r\n secondClientNumber: enquiryDetail.secondClientNumber,\r\n secondClientStreet1: enquiryDetail.secondClientStreet1,\r\n secondClientStreet2: enquiryDetail.secondClientStreet2,\r\n secondClientDOB: enquiryDetail.secondClientDOB,\r\n secondClientPOBoxType: enquiryDetail.secondClientPOBoxType,\r\n secondClientPOBox: enquiryDetail.secondClientPOBox,\r\n secondClientPostalSuburb: enquiryDetail.secondClientPostalSuburb,\r\n secondClientPostalState: enquiryDetail.secondClientPostalState,\r\n secondClientPostalPostCode: enquiryDetail.secondClientPostalPostCode,\r\n secondClientPostalCountry: enquiryDetail.secondClientPostalCountry,\r\n\r\n responseText: enquiryDetail.responseText,\r\n\r\n // bot integration\r\n followUpBotUrl: null,\r\n\r\n // events and campaigns\r\n // tslint:disable-next-line: max-line-length\r\n eventAndCampaignSelector: enquiryDetail.eventAndCampaignGuid && enquiryDetail.eventAndCampaignName ? { label: enquiryDetail.eventAndCampaignName, value: enquiryDetail.eventAndCampaignGuid } as EventsAndCampaignIAutoCompleteItem : null,\r\n eventsAndCampaignNotes: enquiryDetail.eventAndCampaignNotes,\r\n\r\n title: enquiryDetail.title,\r\n otherPartyTitle: enquiryDetail.otherPartyTitle,\r\n\r\n clientTitle: enquiryDetail.clientTitle,\r\n clientGuid: enquiryDetail.clientGuid,\r\n clientEmail: enquiryDetail.clientEmail,\r\n clientPhone: enquiryDetail.clientPhone,\r\n clientMobile: enquiryDetail.clientMobile,\r\n\r\n secondClientTitle: enquiryDetail.secondClientTitle,\r\n secondClientGuid: enquiryDetail.secondClientGuid,\r\n secondClientEmail: enquiryDetail.secondClientEmail,\r\n secondClientPhone: enquiryDetail.secondClientPhone,\r\n secondClientMobile: enquiryDetail.secondClientMobile,\r\n\r\n clientIndividualSelector: clientIndividualSelector,\r\n isClientNameSwitched: false,\r\n isSecondClientNameSwitched: false,\r\n secondClientIndividualSelector: secondClientIndividualSelector,\r\n\r\n customField: reverseCustomFieldConversion(enquiryDetail.customFields),\r\n\r\n clickThroughUrl: enquiryDetail.clickThroughUrl,\r\n utmSource: enquiryDetail.utmSource,\r\n utmMedium: enquiryDetail.utmMedium,\r\n utmCampaign: enquiryDetail.utmCampaign,\r\n utmContent: enquiryDetail.utmContent,\r\n utmKeyword: enquiryDetail.utmKeyword,\r\n googleClickIdentifier: enquiryDetail.googleClickIdentifier,\r\n facebookClickIdentifier: enquiryDetail.facebookClickIdentifier,\r\n };\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onDiscardChanges = (agree: boolean) => {\r\n if (agree) {\r\n // onEnquiryFormClose();\r\n // onEnquiryFormEmpty(true);\r\n\r\n onEnquiryFormClosed();\r\n } else {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showDiscard: false,\r\n // showTabsSaveAlert: false\r\n };\r\n });\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onShowMatterDetails = (values: any) => () => {\r\n\r\n sessionStorage.setItem('typeOfView', 'noback');\r\n\r\n const tempMatter = values.matterSelector;\r\n\r\n var href = history.createHref({\r\n pathname: '/matterDetail/' + tempMatter.id,\r\n key: 'matterManagement',\r\n state: {\r\n matterManagementState: 'false',\r\n }\r\n });\r\n\r\n window.open(href, '_blank');\r\n };\r\n\r\n const onEnquiryFormClosed = () => {\r\n if (props.onDialogClose) {\r\n props.onDialogClose();\r\n }\r\n };\r\n\r\n const handleExpandChange = (event: React.ChangeEvent<{}>, expanded: boolean, form: FormApi) => {\r\n form.change('isAssignmentExpand', expanded);\r\n };\r\n\r\n const estimatedFeesColour = (financial: Financials | null) => {\r\n if (financial && (financial.billedTimeAndFees + financial.unbilledTimeAndFees) > financial.estimatedCosts) {\r\n return 'red';\r\n }\r\n return undefined;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const followUpDueDateValidation = (form: FormApi, values: any) => {\r\n if (isTabMatter()) {\r\n return undefined;\r\n } else if (!isTabActivity() && (enquiryActionData && enquiryActionData.canAssign)) {\r\n if (form.getFieldState('assignedTo')?.value) {\r\n return values.isNotProceeding === true ? undefined : requiredDateValidator;\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n if (!isTabActivity()) {\r\n if (form.getFieldState('assignedTo')?.value) {\r\n if (values.isClosed) {\r\n return undefined;\r\n }\r\n return values.isNotProceeding === true ? undefined : requiredDateValidator;\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const followUpDueDateRequired = (form: FormApi, values: any) => {\r\n if (isTabMatter()) {\r\n return false;\r\n } else if (!isTabActivity() && (enquiryActionData && enquiryActionData.canAssign)) {\r\n if (form.getFieldState('assignedTo')?.value) {\r\n return values.isNotProceeding === true ? false : true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (!isTabActivity()) {\r\n if (form.getFieldState('assignedTo')?.value) {\r\n if (values.isClosed) {\r\n return false;\r\n }\r\n return values.isNotProceeding === true ? false : true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const getAssignment = (form: FormApi, values: AnyObject, pristine: boolean) => {\r\n // const isExpand = (values.isAssignmentExpand !== undefined && values.isAssignmentExpand !== null)\r\n // ? values.isAssignmentExpand\r\n // : true;\r\n\r\n let defaultExpanded = enquiryActionData && !enquiryActionData.canAssign\r\n ? false\r\n : enquiryActionData?.canFollowUp ? false : true;\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Assignment\r\n \r\n {\r\n values ? (\r\n
\r\n {values.assignedToName\r\n ? (\r\n 'Assigned to ' + values.assignedToName +\r\n (\r\n values.dateAssigned && values.dateAssigned !== null ? (\r\n ' on ' + moment(values.dateAssigned).format('DD MMM YYYY')\r\n ) : ''\r\n )\r\n ) : ''\r\n }\r\n
\r\n ) : null\r\n }\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n {/* */}\r\n {\r\n // Another approach.\r\n onDropDownSelect(form, values, input, selection, name);\r\n }}\r\n isGuidAsValue={true}\r\n // isStaffOnly={true}\r\n displayLabel={values.assignedToName === null\r\n ? undefined : values.assignedToName}\r\n isExternal={false}\r\n isAuthorized={true}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n input.onChange(selection);\r\n }}\r\n error={meta.error && meta.touched}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n showIcon={true}\r\n />\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n {/* */}\r\n {\r\n // input.onChange(selection.value);\r\n // Another approach.\r\n onDropDownSelect(form, values, input, selection, name);\r\n }}\r\n value={values.assignedBy}\r\n displayLabel={values.assignedByName}\r\n isGuidAsValue={true}\r\n isAuthorized={true}\r\n isExternal={false}\r\n // isStaffOnly={true}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n {/* tslint:disable-next-line: no-console */}\r\n {/* {console.log({...input})} */}\r\n input.onChange(date)}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const getProceeding = (form: FormApi, values: AnyObject, pristine: boolean) => {\r\n /*\r\n Sometimes we want to collect customers who are not proceeding when creating an enquiry itself.\r\n This will be used for future reporting and improvements.\r\n Selecting not proceeding reasons on enquiry create is easier than doing a follow up afterwards.\r\n */\r\n\r\n const isHidePanel = props.guid ? true : false;\r\n\r\n return (\r\n , expanded: boolean) => handleExpandChange(event, expanded, form)}\r\n className={isHidePanel ? classes.hideDate : classes.expansionPanel}\r\n >\r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Proceeding\r\n \r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n onChange={(event: React.ChangeEvent, checked: boolean) => {\r\n // Another approach.\r\n onCheckBoxChanged(form, values, input, checked, 'isNotProceeding');\r\n }}\r\n name=\"isNotProceeding\"\r\n disabled={values.assignedTo ? false : true}\r\n />\r\n }\r\n label=\"Not Proceeding\"\r\n />\r\n )}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n onDropdownChange(selection, name, input, form, reasonGuid);\r\n }}\r\n required={values.isNotProceeding === true && !isHidePanel ? true : false}\r\n disabled={values.isNotProceeding === false ? true : false}\r\n />\r\n )}\r\n \r\n \r\n
\r\n
\r\n {values.isShowNotProceedingReferrerInProceeding && (\r\n \r\n
\r\n
\r\n {\r\n (values.isNotProceedingReferrerSwitchedInProceeding) ? (\r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n ) :\r\n (\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n onDropDownSelect(form, values, input, selection, name);\r\n }}\r\n />\r\n )}\r\n \r\n )\r\n }\r\n
\r\n
\r\n \r\n Switch to select an existing client & contact\r\n \r\n ) :\r\n (\r\n Switch to enter the referred to name\r\n )\r\n }\r\n >\r\n {\r\n // Another approach.\r\n onSwitch(form, values, 'referredToFirmInProceeding');\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n )}\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const getCorrespondenceRequired = (values: AnyObject) => {\r\n if ((!values.email)\r\n && (!values.mobile)\r\n && (!values.phone)) {\r\n return true;\r\n } else if ((values.email && values.email.length === 0)\r\n && (values.mobile && values.mobile.length === 0)\r\n && (values.phone && values.phone.length === 0)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onContactDetailsChanged = (form: FormApi, values: AnyObject) => {\r\n // If we picked a contact from dropdown and then change contact details, then we need to confirm with the user whether it needs to be saved.\r\n if (values.nameGuid && !values.isContactDetailsChanged) {\r\n form.batch(() => {\r\n form.change('isContactDetailsChanged', true);\r\n form.change('isUpdateContacts', true);\r\n });\r\n }\r\n };\r\n\r\n // const fetchPartyNameSummary = (value: string, form: FormApi) => {\r\n // const partyQueryParams: PartyQueryParams = {\r\n // filter: value,\r\n // first: 1,\r\n // offset: 0,\r\n // includeOrganisation: null,\r\n // includeIndividual: true,\r\n // includeStaff: null,\r\n // };\r\n\r\n // retrievePartyData(\r\n // partyQueryParams,\r\n // false,\r\n // // tslint:disable-next-line: no-console\r\n // (data) => onRetrieveData(data, form),\r\n // // tslint:disable-next-line:no-any\r\n // function (reason: any): void {\r\n // showNotification(null, reason, 'error');\r\n // }\r\n // );\r\n // };\r\n\r\n // const onRetrieveData = (data: PartyData, form: FormApi) => {\r\n\r\n // const nameSummaryData = data.party.nameSummaries.nameSummary;\r\n\r\n // if (nameSummaryData.length > 0) {\r\n // const defaultContact = {\r\n // ...nameSummaryData[0],\r\n // value: nameSummaryData[0].guidID.toString(),\r\n // label: nameSummaryData[0].name,\r\n // };\r\n\r\n // form.change('emailAssociatedContact', defaultContact);\r\n // } else {\r\n // form.change('emailAssociatedContact', null);\r\n // }\r\n\r\n // };\r\n\r\n // const onEnquiryDataRetrieved = (data: EnquiryData, form: FormApi) => {\r\n // const enquirySummaryData = data.enquiry.summaryList.summaries;\r\n\r\n // if (enquirySummaryData.length > 0) {\r\n // const defaultEnquiry = {\r\n // ...enquirySummaryData[0],\r\n // value: enquirySummaryData[0].guid,\r\n // label: enquirySummaryData[0].name,\r\n // };\r\n\r\n // form.change('emailEnquiryAssociatedContact', defaultEnquiry);\r\n // } else {\r\n // form.change('emailEnquiryAssociatedContact', null);\r\n // }\r\n // };\r\n\r\n // const fetchEnquirySummary = (search: string, form: FormApi) => {\r\n\r\n // var enquiryQueryParams: EnquirySummaryQueryParams = {\r\n // offset: 0,\r\n // first: 1,\r\n // filter: null,\r\n // emailAddress: search,\r\n // isIncludeCurrent: true,\r\n // isIncludeClosed: true,\r\n // isMyEnquiriesOnly: false,\r\n // groupBy: null,\r\n // groupByValue: null,\r\n // followUpDue: null,\r\n // newEnquiry: null,\r\n // assignedTo: null,\r\n // areaOfLaw: null,\r\n // teamList: null,\r\n // isKeyOpportunity: null,\r\n // enquiryQuality: null,\r\n // enquiryLikelihoodToProceed: null,\r\n // meetingWith: null,\r\n // status: null,\r\n // sourceList: null,\r\n // location: null,\r\n // // sortColumn: this.sortColumn,\r\n // // sortDirection: this.sortDirection\r\n // };\r\n\r\n // retrieveEnquirySummaryData(\r\n // enquiryQueryParams,\r\n // false, // this.state.isRefresh, -- Since we are updating and creating, we do not fetch cached data\r\n // (data) => onEnquiryDataRetrieved(data, form),\r\n // // tslint:disable-next-line:no-any\r\n // function (reason: any): void {\r\n // showNotification(null, reason, 'error');\r\n // }\r\n // );\r\n // }\r\n\r\n const checkDuplicateEmail = debounce((form: FormApi, values: AnyObject, value: string) => {\r\n\r\n // this is not part of the email duplciate checker but need to put it in here so that we can only use 1 function in the textfield\r\n // If we picked a contact from dropdown and then change contact details, then we need to confirm with the user whether it needs to be saved.\r\n onContactDetailsChanged(form, values);\r\n\r\n const tempValue = value;\r\n // tslint:disable-next-line: max-line-length no-shadow-variable\r\n // const emailRegex2 = /^(([^<>()\\\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n // tslint:disable-next-line: no-shadow-variable\r\n if (tempValue.length === 0 || (tempValue && !emailRegex.test(tempValue))) {\r\n form.change('duplicateCheck', null);\r\n } else {\r\n const params: DuplicateCheckParams = {\r\n email: tempValue,\r\n isIncludeEnquiry: true,\r\n isIncludeParty: true\r\n };\r\n\r\n retrieveQueryData(\r\n CrmDuplicateCheckQuery,\r\n params,\r\n false,\r\n (data) => onDataDupicateCheckRetrieved(data, form, values),\r\n // tslint:disable-next-line: no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n setIsLoading(false);\r\n }\r\n );\r\n\r\n }\r\n // tslint:disable-next-line: align\r\n }, 500); // 500 is the debounce delay in milliseconds\r\n\r\n const onDataDupicateCheckRetrieved = (data: DuplicateCheckData, form: FormApi, values: AnyObject) => {\r\n form.change('duplicateCheck', data.crm.duplicateCheck);\r\n };\r\n\r\n const onClose = () => {\r\n if (state.isFormChanged) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showDiscard: true,\r\n // showTabsSaveAlert: false\r\n };\r\n });\r\n } else {\r\n onEnquiryFormClosed();\r\n }\r\n };\r\n\r\n const onCreateClientDialog = (open: boolean) => () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isCreateClientOpen: open\r\n };\r\n });\r\n };\r\n\r\n const onMarkClientMatterCreateDialog = (open: boolean) => () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isMarkClientMatterCreatedOpen: open\r\n };\r\n });\r\n };\r\n\r\n const onCompleteCreateClient = () => {\r\n const test = false;\r\n if (test) {\r\n completeCreateClient();\r\n }\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isMarkClientMatterCreatedOpen: true\r\n };\r\n });\r\n };\r\n // for test only\r\n // const downloadEnquirySummary = (enquiryDetails: EnquiryDetail) => {\r\n // console.log('alright');\r\n // HistoryFile(enquiryDetails, 'DESC', state.currency, state.timezone, leadDetailsHistory,\r\n // (results) => {\r\n // // tslint:disable-next-line: no-console\r\n // var url = URL.createObjectURL(results);\r\n // window.open(url, '_blank', 'noopener, noreferrer');\r\n // }\r\n // );\r\n // };\r\n\r\n const completeCreateClient = () => {\r\n client.mutate({\r\n mutation: CompleteCreateClientMutation,\r\n variables: {\r\n input: getCompleteCreateClientInput()\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n } else {\r\n showNotification('Complete Create Client Failed', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Complete Create Client Failed', reason, 'error');\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onReOpen = (form: FormApi, values: AnyObject) => {\r\n reOpenEnquiry(form, values);\r\n };\r\n\r\n const getReOpenFollowUpInput = () => {\r\n return {\r\n enquiryGuid: props.guid,\r\n followUpAction: 'Re-Open Enquiry',\r\n followUpActionSystemName: 'ReOpenEnquiry',\r\n followUpDate: moment().toDate(),\r\n outcome: 'More Follow Up',\r\n outcomeDate: null,\r\n outcomeNotes: '',\r\n reason: null,\r\n reasonGuid: null,\r\n followUpNotes: null,\r\n };\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const reOpenEnquiry = (form: FormApi, values: AnyObject) => {\r\n client.mutate({\r\n mutation: FollowUpEnquiryMutation,\r\n variables: {\r\n input: getReOpenFollowUpInput()\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any; }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n\r\n // var link = document.getElementById('resetButton');\r\n // if (link !== null) {\r\n // link.click();\r\n // }\r\n onReset(form, values);\r\n\r\n } else {\r\n showNotification('Failed to Re-Open Enquiry', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => { showNotification('Failed to Re-Open Enquiry', reason, 'error'); });\r\n };\r\n\r\n const getUnlinkMatterFollowUpInput = () => {\r\n return {\r\n enquiryGuid: props.guid,\r\n followUpAction: 'Unlink Matter',\r\n followUpActionSystemName: 'UnlinkMatter',\r\n followUpDate: moment().toDate(),\r\n outcome: 'Proceeding',\r\n outcomeDate: null,\r\n outcomeNotes: '',\r\n reason: null,\r\n reasonGuid: null,\r\n followUpNotes: null,\r\n };\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const unlinkMatter = (form: FormApi, values: AnyObject) => {\r\n client.mutate({\r\n mutation: FollowUpEnquiryMutation,\r\n variables: {\r\n input: getUnlinkMatterFollowUpInput()\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any; }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info');\r\n\r\n // var link = document.getElementById('resetButton');\r\n // if (link !== null) {\r\n // link.click();\r\n // }\r\n onReset(form, values);\r\n\r\n } else {\r\n showNotification('Failed to Unlink Matter', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => { showNotification('Failed to Unlink Matter', reason, 'error'); });\r\n };\r\n\r\n const getCompleteCreateClientInput = () => {\r\n return {\r\n enquiryGuid: props.guid,\r\n matterGuid: null\r\n };\r\n };\r\n\r\n const isDateDue = (value: Date) => {\r\n const currentDate = moment();\r\n const dateDiff = moment(value).diff(currentDate, 'days');\r\n\r\n return dateDiff < 0;\r\n };\r\n\r\n const showDateEndOfFromNow = (value: Date) => {\r\n\r\n // return moment.utc(value).local().endOf('day').fromNow();\r\n return moment(value).fromNow();\r\n };\r\n\r\n const formatDate = (value: Date, format: string) => {\r\n\r\n // return moment.utc(value).local().format(format);\r\n return moment(value).format(format);\r\n };\r\n\r\n const handleTabChange = (values: Enquiry) => (event: React.ChangeEvent<{}>, newValue: EnquiryFormTab) => {\r\n console.log(newValue, values.tabEdited);\r\n\r\n if ((values.tabEdited === 'activityTab' && newValue !== EnquiryFormTab.activity) ||\r\n (values.tabEdited === 'detailsTab' && newValue !== EnquiryFormTab.details && newValue !== EnquiryFormTab.customFields)) {\r\n showNotification('warning', 'Please save the changes before continuing', 'warning');\r\n } else {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n tab: newValue\r\n };\r\n });\r\n }\r\n\r\n // if (!state.showTabsSaveAlert) {\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // tab: newValue\r\n // };\r\n // });\r\n // } else {\r\n // showNotification('warning', 'Please save the changes before continuing', 'warning');\r\n // } \r\n };\r\n\r\n // tslint:disable-next-line: no-any max-line-length\r\n const onDropdownChange = (selection: IAutoCompleteItem, name: string, input: FieldInputProps, form: FormApi, valueGuid: string) => {\r\n input.onChange(selection.label.length > 0 ? selection.label : null);\r\n\r\n if (name === 'reason') {\r\n form.change('reasonGuidID', valueGuid.length > 0\r\n ? valueGuid\r\n : null);\r\n } else if (name === 'notProceedingReason') {\r\n form.change('notProceedingReasonGuid', valueGuid.length > 0\r\n ? valueGuid\r\n : null);\r\n }\r\n\r\n if (selection.secondaryValue) {\r\n form.change('isShowNotProceedingReferrer', selection.secondaryValue);\r\n form.change('isShowNotProceedingReferrerInProceeding', selection.secondaryValue);\r\n } else {\r\n form.change('isShowNotProceedingReferrer', false);\r\n form.change('isShowNotProceedingReferrerInProceeding', false);\r\n\r\n form.change('referredToFirmSelector', null);\r\n form.change('referredToFirmName', '');\r\n form.change('referredToFirmGuid', null);\r\n form.change('isNotProceedingReferrerSwitched', false);\r\n\r\n form.change('referredToFirmSelectorInProceeding', null);\r\n form.change('referredToFirmNameInProceeding', '');\r\n form.change('referredToFirmGuidInProceeding', null);\r\n form.change('isNotProceedingReferrerSwitchedInProceeding', false);\r\n }\r\n };\r\n\r\n const onChangeEmailNotification = (event: React.ChangeEvent, checked: boolean) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isEmailNotification: checked\r\n };\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onSendAcknowledgementEmail = (form: FormApi, values: AnyObject, input: any, checked: boolean) => {\r\n form.batch(() => {\r\n form.change('isSentAcknowledgementEmail', checked);\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onKeyOpportunity = (form: FormApi, values: AnyObject, input: any, checked: boolean) => {\r\n form.batch(() => {\r\n form.change('isKeyOpportunity', checked);\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onUpdateContact = (form: FormApi, values: AnyObject, checked: boolean) => {\r\n form.batch(() => {\r\n form.change('isUpdateContacts', checked);\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onCheckBoxChanged = (form: FormApi, values: AnyObject, input: any, checked: boolean, name: string) => {\r\n if (name === 'isKeyOpportunity') {\r\n form.batch(() => {\r\n form.change('isKeyOpportunity', checked);\r\n });\r\n } else if (name === 'isNotProceeding') {\r\n form.batch(() => {\r\n form.change('isNotProceeding', checked);\r\n form.change('isSentAcknowledgementEmail', !checked); // Do not send email if not proceeding or uncheck by default\r\n\r\n if (checked === false) {\r\n form.change('notProceedingReason', null);\r\n form.change('notProceedingReasonGuid', null);\r\n }\r\n });\r\n\r\n // If not proceeding, then no need to send email notification to the client. But user can check again.\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isEmailNotification: false,\r\n };\r\n });\r\n }\r\n };\r\n\r\n const onSourceChanged = (form: FormApi, values: AnyObject, selection: IAutoCompleteItem) => {\r\n if (selection && selection.secondaryValue === true) {\r\n form.batch(() => {\r\n form.change('isShowReferrer', true);\r\n form.change('referrerGuid', null);\r\n form.change('referrerName', null);\r\n });\r\n } else {\r\n // Check against the previously selected referrer values, if there are any\r\n form.batch(() => {\r\n form.change('isShowReferrer', false);\r\n form.change('referrerGuid', null);\r\n form.change('referrerName', null);\r\n });\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any max-line-length\r\n const onDateTimePickerChange = (input: FieldInputProps, formApi: FormApi) => (date: MaterialUiPickersDate, value?: string | null | undefined) => {\r\n let defaultMeetingMinutes = 60;\r\n\r\n if (props.enquiryDefaultConfig && props.enquiryDefaultConfig.defaultMeetingLength) {\r\n var defaultMeetingLength = props.enquiryDefaultConfig.defaultMeetingLength;\r\n var meetingLengthSplit = defaultMeetingLength.split(':'); // split it at the colons\r\n defaultMeetingMinutes = (+meetingLengthSplit[0]) * 60 + (+meetingLengthSplit[1]);\r\n }\r\n\r\n input.onChange(date);\r\n formApi.batch(() => {\r\n formApi.change('endTime', moment(date).add(defaultMeetingMinutes, 'minute').toDate());\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onOutcomeDateChange = (input: FieldInputProps, formApi: FormApi) => (date: MaterialUiPickersDate, value?: string | null | undefined) => {\r\n input.onChange(date);\r\n\r\n formApi.batch(() => {\r\n formApi.change('updateFollowUpDueForInternalNote', true);\r\n formApi.change('outcomeDateChanged', true);\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: max-line-length no-any\r\n const onChangeAllDay = (input: FieldInputProps, formApi: FormApi, values: AnyObject) => (event: React.ChangeEvent, checked: boolean) => {\r\n input.onChange(checked);\r\n if (checked) {\r\n const startDate = moment(values.startTime).set({ hours: 9, minutes: 0, seconds: 0, milliseconds: 0 }).toDate();\r\n const endDate = moment(values.endTime).set({ hours: 17, minutes: 0, seconds: 0, milliseconds: 0 }).toDate();\r\n formApi.batch(() => {\r\n formApi.change('startTime', startDate);\r\n formApi.change('endTime', endDate);\r\n });\r\n }\r\n };\r\n\r\n const onReferrerChanged = (form: FormApi, values: AnyObject, selection: IAutoCompleteItem) => {\r\n form.batch(() => {\r\n form.change('referrerGuid', selection ? selection.value : null);\r\n form.change('referrerName', selection ? selection.label : null);\r\n });\r\n };\r\n\r\n const onFileClicked = (file: DocumentFile) => {\r\n if (file && file.url) {\r\n var win = window.open(file.url, '_blank');\r\n if (win) {\r\n win.focus();\r\n }\r\n }\r\n };\r\n\r\n const CustomPopper = function (popperProps: PopperProps) {\r\n return ;\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const getFileItems = (files?: DocumentFile[]) => {\r\n if (files) {\r\n const filteredFiles = files.filter((file: DocumentFile) => {\r\n return file.status !== 2 && file.url;\r\n });\r\n\r\n if (filteredFiles) {\r\n const chip = (\r\n
\r\n {\r\n filteredFiles.length > 0\r\n ? {'Click on the following to open the uploaded files'}\r\n : null\r\n }\r\n
\r\n {\r\n filteredFiles.map((file: DocumentFile, index: number) => {\r\n return (\r\n onFileClicked(file)}\r\n />\r\n );\r\n }\r\n )\r\n }\r\n
\r\n
\r\n );\r\n\r\n return chip;\r\n } else {\r\n return (
);\r\n }\r\n } else {\r\n return (
);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onInputChanged = (form: FormApi, name: string | any) => (value: string) => {\r\n form.change(name, value);\r\n };\r\n\r\n // tslint:disable-next-line: max-line-length\r\n const getAddressLabelForPanel = (buildingName: string, level: string, streetNumber: string, street1: string, street2: string, suburb: string, addressState: string, postCode: string, country: string) => {\r\n let address = buildingName ? buildingName : '';\r\n if (level && level.length > 0) {\r\n address = address.length > 0 ? (address + ', ' + level) : level;\r\n }\r\n if (streetNumber && streetNumber.length > 0) {\r\n address = address.length > 0 ? (address + (level && level.length > 0 ? '/' : ' ') + streetNumber) : streetNumber;\r\n }\r\n if (street1 && street1.length > 0) {\r\n address = address.length > 0 ? (address + ' ' + street1) : street1;\r\n }\r\n if (street2 && street2.length > 0) {\r\n address = address.length > 0 ? (address + ', ' + street2) : street2;\r\n }\r\n if (suburb && suburb.length > 0) {\r\n address = address.length > 0 ? (address + ', ' + suburb) : suburb;\r\n }\r\n if (addressState && addressState.length > 0) {\r\n address = address.length > 0 ? (address + ', ' + addressState) : addressState;\r\n }\r\n if (postCode && postCode.length > 0) {\r\n address = address.length > 0 ? (address + ', ' + postCode) : postCode;\r\n }\r\n if (country && country.length > 0) {\r\n address = address.length > 0 ? (address + ', ' + country) : country;\r\n }\r\n\r\n return address;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onSelection = (form: FormApi, values: AnyObject) => (placeType: PlaceType | null, address: Address, name: string) => {\r\n\r\n if (name === 'street') {\r\n form.change('country', address.country ? address.country : values.country ? values.country : '');\r\n form.change('postcode', address.postalCode ? address.postalCode : values.postcode ? values.postcode : '');\r\n form.change('suburb', address.locality ? address.locality : values.suburb ? values.suburb : '');\r\n // tslint:disable-next-line: max-line-length\r\n form.change('state', address.administrativeAreaLevel1 ? address.administrativeAreaLevel1 : values.state ? values.state : '');\r\n form.change('addressName', address.premise ? address.premise : values.addressName ? values.addressName : '');\r\n // form.change('street', placeType?.structured_formatting.main_text);\r\n form.change('street', address.route ? address.route : values.street1 ? values.street1 : '');\r\n form.change('number', address.streetNumber ? address.streetNumber : values.number ? values.number : '');\r\n form.change('floor', address.floor ? address.floor : values.floor ? values.floor : '');\r\n }\r\n\r\n if (name === 'postalSuburb') {\r\n form.change('postalSuburb', address.locality ? address.locality : values.postalSuburb ? values.postalSuburb : '');\r\n form.change('postalPostCode', address.postalCode ? address.postalCode : values.postalPostCode ? values.postalPostCode : '');\r\n form.change('postalCountry', address.country ? address.country : values.postalCountry ? values.postalCountry : '');\r\n form.change('postalState', address.administrativeAreaLevel1 ? address.administrativeAreaLevel1 : values.postalState ? values.postalState : '');\r\n }\r\n\r\n if (name === 'street2') {\r\n form.change('street2', placeType?.structured_formatting.main_text);\r\n }\r\n\r\n // other side\r\n if (name === 'otherPartyStreet') {\r\n form.change('otherPartyCountry', address.country ? address.country : values.otherPartyCountry ? values.otherPartyCountry : '');\r\n form.change('otherPartyPostcode', address.postalCode ? address.postalCode : values.otherPartyPostcode ? values.otherPartyPostcode : '');\r\n form.change('otherPartySuburb', address.locality ? address.locality : values.otherPartySuburb ? values.otherPartySuburb : '');\r\n // tslint:disable-next-line: max-line-length\r\n form.change('otherPartyState', address.administrativeAreaLevel1 ? address.administrativeAreaLevel1 : values.otherPartyState ? values.otherPartyState : '');\r\n form.change('otherPartyAddressName', address.premise ? address.premise : values.otherPartyAddressName ? values.otherPartyAddressName : '');\r\n // form.change('otherPartyStreet', placeType?.structured_formatting.main_text);\r\n form.change('otherPartyStreet', address.route ? address.route : values.otherPartyStreet ? values.otherPartyStreet : '');\r\n form.change('otherPartyNumber', address.streetNumber ? address.streetNumber : values.otherPartyNumber ? values.otherPartyNumber : '');\r\n form.change('otherPartyFloor', address.floor ? address.floor : values.otherPartyFloor ? values.otherPartyFloor : '');\r\n }\r\n\r\n if (name === 'otherPartyPostalSuburb') {\r\n form.change('otherPartyPostalSuburb', address.locality ? address.locality : values.otherPartyPostalSuburb ? values.otherPartyPostalSuburb : '');\r\n form.change('otherPartyPostalPostCode', address.postalCode ? address.postalCode : values.otherPartyPostalPostCode ? values.otherPartyPostalPostCode : '');\r\n form.change('otherPartyPostalCountry', address.country ? address.country : values.otherPartyPostalCountry ? values.otherPartyPostalCountry : '');\r\n form.change('otherPartyPostalState', address.administrativeAreaLevel1 ? address.administrativeAreaLevel1 : values.otherPartyPostalState ? values.otherPartyPostalState : '');\r\n }\r\n\r\n if (name === 'otherPartyStreet2') {\r\n form.change('otherPartyStreet2', placeType?.structured_formatting.main_text);\r\n }\r\n\r\n // client 2\r\n if (name === 'secondClientStreet1') {\r\n form.change('secondClientCountry', address.country ? address.country : values.secondClientCountry ? values.secondClientCountry : '');\r\n form.change('secondClientPostCode', address.postalCode ? address.postalCode : values.secondClientPostCode ? values.secondClientPostCode : '');\r\n form.change('secondClientSuburb', address.locality ? address.locality : values.secondClientSuburb ? values.secondClientSuburb : '');\r\n // tslint:disable-next-line: max-line-length\r\n form.change('secondClientState', address.administrativeAreaLevel1 ? address.administrativeAreaLevel1 : values.secondClientState ? values.secondClientState : '');\r\n form.change('secondClientAddressName', address.premise ? address.premise : values.secondClientAddressName ? values.secondClientAddressName : '');\r\n // form.change('street', placeType?.structured_formatting.main_text);\r\n form.change('secondClientStreet1', address.route ? address.route : values.secondClientStreet1 ? values.secondClientStreet1 : '');\r\n form.change('secondClientNumber', address.streetNumber ? address.streetNumber : values.secondClientNumber ? values.secondClientNumber : '');\r\n form.change('secondClientFloor', address.floor ? address.floor : values.secondClientFloor ? values.secondClientFloor : '');\r\n }\r\n\r\n if (name === 'secondClientPostalSuburb') {\r\n form.change('secondClientPostalSuburb', address.locality ? address.locality : values.secondClientPostalSuburb ? values.secondClientPostalSuburb : '');\r\n form.change('secondClientPostalPostCode', address.postalCode ? address.postalCode : values.secondClientPostalPostCode ? values.secondClientPostalPostCode : '');\r\n form.change('secondClientPostalCountry', address.country ? address.country : values.secondClientPostalCountry ? values.secondClientPostalCountry : '');\r\n form.change('secondClientPostalState', address.administrativeAreaLevel1 ? address.administrativeAreaLevel1 :\r\n values.secondClientPostalState ? values.secondClientPostalState : '');\r\n }\r\n\r\n if (name === 'secondClientStreet2') {\r\n form.change('secondClientStreet2', placeType?.structured_formatting.main_text);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onChangeSelection = (selection: any, input: FieldInputProps, form: FormApi, name: string) => {\r\n if (name === 'staff') {\r\n\r\n input.onChange(selection);\r\n\r\n if (selection) {\r\n if (selection && selection.hasOwnProperty('entityType') && selection.entityType === EntityTypeEnum.TEAM) {\r\n form.change('isSendConfirmation', false);\r\n }\r\n if (selection && selection.hasOwnProperty('entityType') && selection.entityType === EntityTypeEnum.STAFF) {\r\n form.change('isSendConfirmation', true);\r\n }\r\n } else {\r\n form.change('isSendConfirmation', true);\r\n }\r\n }\r\n if (name === 'officeLocation') {\r\n input.onChange(selection);\r\n\r\n if (selection && selection.hasOwnProperty('timezone') && selection.hasOwnProperty('timezoneDescription')\r\n && selection.timezone && selection.timezoneDescription) {\r\n const timezoneSelector = {\r\n label: selection.timezoneDescription,\r\n value: selection.timezone,\r\n secondaryValue: selection.baseUtcOffset\r\n };\r\n form.change('timezone', timezoneSelector);\r\n } else {\r\n\r\n const { timeZone, timeZoneDescription, baseUtcOffset } = regionSettings.data!.settings.systems.regionSettings.config;\r\n\r\n const timezoneSelector = {\r\n label: timeZoneDescription,\r\n value: timeZone,\r\n secondaryValue: baseUtcOffset,\r\n };\r\n\r\n form.change('timezone', timezoneSelector);\r\n }\r\n }\r\n };\r\n\r\n const getEnquiryMatterDocumentInput = (historyDocument?: Blob) => {\r\n return {\r\n entityGuid: props.guid,\r\n matterGuid: enquiryDetail.matterGuid,\r\n file: {\r\n file: historyDocument,\r\n name: 'RedView CRM Enquiry History.pdf',\r\n guidID: null,\r\n status: 1,\r\n }\r\n }\r\n }\r\n \r\n const saveEnquiryMatterDocument = (historyDocument?: Blob) => {\r\n client\r\n .mutate({\r\n mutation: UploadEnquiryMatterDocumentMutation,\r\n variables: {\r\n input: getEnquiryMatterDocumentInput(historyDocument),\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n setIsLoading(true);\r\n showNotification(null, 'Successfully submitted', 'info');\r\n setIsSubmitting(false);\r\n } else {\r\n showNotification('Failed to Upload Enquiry Matter Document', results.data.error, 'error');\r\n setIsSubmitting(false);\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Upload Enquiry Matter Document', reason, 'error');\r\n setIsSubmitting(false);\r\n });\r\n };\r\n \r\n // save history document and upload to leap\r\n const uploadEnquiryMatterDocument = (enquiryDetails: EnquiryDetail) => {\r\n setIsSubmitting(true);\r\n // Generate the history Document.\r\n let documentBlob: Blob | undefined;\r\n HistoryFile(enquiryDetails, 'DESC', state.currency, state.timezone, leadDetailsHistory, (results) => {\r\n // console.log('blob in getHistoryStringFile', results);\r\n documentBlob = results;\r\n saveEnquiryMatterDocument(documentBlob);\r\n },\r\n state.customFieldByHierarchy ? state.customFieldByHierarchy : []);\r\n };\r\n\r\n const clientAddressPanel = (defaultExpanded: boolean, form: FormApi) => {\r\n return (\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.AccordionSummary}\r\n >\r\n \r\n \r\n Main Address\r\n \r\n\r\n
\r\n
\r\n
\r\n {getAddressLabelForPanel(\r\n values.addressName,\r\n values.floor,\r\n values.number,\r\n values.street,\r\n values.street2,\r\n values.suburb,\r\n values.state,\r\n values.postcode,\r\n values.country\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n const otherPartyAddressPanel = (defaultExpanded: boolean, form: FormApi) => {\r\n return (\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.AccordionSummary}\r\n >\r\n \r\n \r\n Main Address\r\n \r\n\r\n
\r\n
\r\n
\r\n {getAddressLabelForPanel(\r\n values.otherPartyAddressName,\r\n values.otherPartyFloor,\r\n values.otherPartyNumber,\r\n values.otherPartyStreet,\r\n values.otherPartyStreet2,\r\n values.otherPartySuburb,\r\n values.otherPartyState,\r\n values.otherPartyPostcode,\r\n values.otherPartyCountry\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n // tslint:disable-next-line: max-line-length\r\n const clientPostalAddressPanel = (defaultExpanded: boolean, form: FormApi) => {\r\n return (\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.AccordionSummary}\r\n >\r\n \r\n \r\n Postal Address\r\n \r\n\r\n
\r\n
\r\n
\r\n {/* {getAddressLabelForPanel} */}\r\n {values.pOBoxType ? `${values.pOBoxType} ` : ''}\r\n {values.pOBox ? `${values.pOBox}, ` : ''}\r\n {values.postalSuburb ? `${values.postalSuburb}, ` : ''}\r\n {values.postalState ? `${values.postalState}, ` : ''}\r\n {values.postalPostCode ? `${values.postalPostCode}, ` : ''}\r\n {values.postalCountry ? `${values.postalCountry}` : ''}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection ? selection.value : null);\r\n }}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Field is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n const otherPartyPostalAddressPanel = (defaultExpanded: boolean, form: FormApi) => {\r\n return (\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.AccordionSummary}\r\n >\r\n \r\n \r\n Postal Address\r\n \r\n\r\n
\r\n
\r\n
\r\n {/* {getAddressLabelForPanel} */}\r\n {values.otherPartyPOBoxType ? `${values.otherPartyPOBoxType} ` : ''}\r\n {values.otherPartyPOBox ? `${values.otherPartyPOBox}, ` : ''}\r\n {values.otherPartyPostalSuburb ? `${values.otherPartyPostalSuburb}, ` : ''}\r\n {values.otherPartyPostalState ? `${values.otherPartyPostalState}, ` : ''}\r\n {values.otherPartyPostalPostCode ? `${values.otherPartyPostalPostCode}, ` : ''}\r\n {values.otherPartyPostalCountry ? `${values.otherPartyPostalCountry}` : ''}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection ? selection.value : null);\r\n }}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Field is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n const countValidFiles = (data: DocumentFile[]): number => {\r\n\r\n let validFileCount = 0;\r\n\r\n for (const item of data) {\r\n if ((item.url && item.url.length > 0) || (item.file && Object.keys(item.file).length > 0)) {\r\n validFileCount++;\r\n }\r\n }\r\n\r\n return validFileCount;\r\n };\r\n\r\n const documentsPanel = (form: FormApi, values: AnyObject) => {\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Documents\r\n \r\n
\r\n
\r\n \r\n {(\r\n { input } /* FieldRenderProps */\r\n ) => {\r\n\r\n const files: DocumentFile[] = input.value;\r\n\r\n return (\r\n
\r\n {countValidFiles(files) > 0 && `${formatNumber(countValidFiles(files))} file(s)`}\r\n
\r\n );\r\n }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {getFileItems(values.files)}\r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n let existingFiles: DocumentFile[] = [...input.value];\r\n\r\n const normalizeFileName = (name: string) => decodeURIComponent(name.trim().toLowerCase());\r\n\r\n const newFiles = files.filter((file: File) => {\r\n return !existingFiles.some((item: DocumentFile) => {\r\n return normalizeFileName(item.name) === normalizeFileName(file.name) && item.status !== 2;\r\n\r\n // return item.name === file.name && item.status !== 2;\r\n });\r\n });\r\n if (newFiles && newFiles.length > 0) {\r\n newFiles.forEach((file: File) => {\r\n const documentFile: DocumentFile = {\r\n guidID: null,\r\n file: file,\r\n status: 1,\r\n name: file.name,\r\n url: ''\r\n };\r\n existingFiles.push(documentFile);\r\n });\r\n input.onChange(existingFiles);\r\n }\r\n }}\r\n onDelete={(file: File) => {\r\n let existingFiles: DocumentFile[] = [...input.value];\r\n // eslint-disable-next-line array-callback-return\r\n existingFiles.map((item: DocumentFile) => {\r\n if (file.name === item.name) {\r\n item.file = file;\r\n item.status = 2; // deleted\r\n }\r\n });\r\n // tslint:disable-next-line: max-line-length\r\n const filteredFiles = existingFiles.filter((item: DocumentFile) => {\r\n return item.status !== 2 || item.guidID !== null;\r\n });\r\n input.onChange(filteredFiles);\r\n }}\r\n // tslint:disable-next-line\r\n onDrop={(files: File[], event: any) => {\r\n // let existingFiles: DocumentFile[] = [...input.value];\r\n // tslint:disable-next-line: max-line-length\r\n // const existingFile = existingFiles.find((item: DocumentFile) => item.name === file)\r\n // tslint:disable-next-line:no-console\r\n console.log(event);\r\n }}\r\n onDropRejected={() => {\r\n // return input.errorNotice('Maximum file upload size is 15MB');\r\n }}\r\n initialFiles={input.value ? input.value.map((file: { url: string; }) => file.url) : []}\r\n />\r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const otherSidePanel = (form: FormApi, values: AnyObject) => {\r\n\r\n const panelTitle = addEllipsis(arrayToString([\r\n arrayToStringWithSeparator([\r\n values.otherPartyTitle && values.otherPartyTitle.trim().length > 0 && values.otherPartyTitle !== 'None' ? `${values.otherPartyTitle}` : '',\r\n values.otherPartyFirstName,\r\n values.otherPartyLastName,\r\n // tslint:disable-next-line: align\r\n ], ' '),\r\n arrayToStringWithSeparator([\r\n arrayToStringWithSeparator([\r\n values.otherPartyFloor,\r\n values.otherPartyNumber,\r\n // tslint:disable-next-line: align\r\n ], '/'),\r\n values.otherPartyStreet,\r\n // tslint:disable-next-line: align\r\n ], ' '),\r\n values.otherPartyStreet2,\r\n values.otherPartySuburb,\r\n values.otherPartyState,\r\n values.otherPartyPostcode,\r\n values.otherPartyCountry\r\n // tslint:disable-next-line: align\r\n ]), 70);\r\n\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Other Side\r\n \r\n
\r\n
\r\n {panelTitle}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n <>\r\n {\r\n input.onChange(selection ? selection.value : '');\r\n }}\r\n // required={true}\r\n helperText={meta.error && meta.touched ? 'Title is required' : ''}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n values.isOtherPartyNameSwitched ? (\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n onDropDownSelect(form, values, input, selection, 'otherPartyIndividualSelector');\r\n onGetPartyAddresses(form, values, selection, 'otherPartyIndividualSelector');\r\n }}\r\n enableSecondary={true}\r\n />\r\n )}\r\n \r\n ) :\r\n (\r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n )\r\n }\r\n
\r\n
\r\n Switch to select an existing client & contact\r\n ) :\r\n (\r\n Switch to enter the last name\r\n )\r\n }\r\n >\r\n {\r\n // Another approach.\r\n onSwitch(form, values, 'otherPartyLastName');\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n input.onChange(event.target.value);\r\n }}\r\n error={\r\n meta.error &&\r\n meta.touched\r\n }\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n }}\r\n // required={true}\r\n className={classes.textField}\r\n disabled={values.otherPartyNameGuid}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Phone is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n }}\r\n // required={true}\r\n className={classes.textField}\r\n disabled={values.otherPartyNameGuid}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Mobile is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n input.onChange(date)}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n {otherPartyAddressPanel(true, form)}\r\n \r\n \r\n {otherPartyPostalAddressPanel(false, form)}\r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const detailedEnquiryNotesPanel = (form: FormApi, values: AnyObject) => {\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Detailed Enquiry Notes\r\n \r\n
\r\n
\r\n {addEllipsis(values.responseText ?? '', 70)}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const validateUrl = (value: string) => {\r\n\r\n if (!value) {\r\n return undefined;\r\n }\r\n\r\n const urlPattern = new RegExp('^(https?:\\\\/\\\\/)?'+ // protocol\r\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.?)+[a-z]{2,}|'+ // domain name\r\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))'+ // OR ip (v4) address\r\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*'+ // port and path\r\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?'+ // query string\r\n '(\\\\#[-a-z\\\\d_]*)?$','i'); // fragment locator\r\n return urlPattern.test(value) ? undefined : 'Invalid URL';\r\n };\r\n\r\n const digitalTrackingPanel = (form: FormApi, values: AnyObject) => {\r\n\r\n const isDigitalFieldHasValue = values.clickThroughUrl || values.utmSource || values.utmMedium || values.utmCampaign || values.utmContent || values.utmKeyword || values.googleClickIdentifier;\r\n\r\n return (\r\n \r\n }\r\n aria-controls=\"digittaltracking-content\"\r\n id=\"digittaltracking-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Digital Tracking\r\n \r\n
\r\n
\r\n {isDigitalFieldHasValue ? 'Collected' : ''}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const otherContactDetailsPanel = (form: FormApi, values: AnyObject) => {\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Client Contact Details - where different to the Enquirer\r\n \r\n {/*
\r\n
\r\n {panelTitle}\r\n
\r\n
*/}\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n <>\r\n {\r\n input.onChange(selection ? selection.value : '');\r\n }}\r\n // required={true}\r\n helperText={meta.error && meta.touched ? 'Title is required' : ''}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n {\r\n values.isClientNameSwitched ? (\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n onDropDownSelect(form, values, input, selection, 'clientIndividualSelector');\r\n onGetPartyAddresses(form, values, selection, 'clientIndividualSelector');\r\n }}\r\n enableSecondary={true}\r\n includeOrganisation={false}\r\n // value={input.value}\r\n />\r\n )}\r\n \r\n ) :\r\n (\r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n )\r\n }\r\n
\r\n
\r\n Switch to select an existing client & contact\r\n ) :\r\n (\r\n Switch to enter the last name\r\n )\r\n }\r\n >\r\n {\r\n // Another approach.\r\n onSwitch(form, values, 'clientLastName');\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n error={\r\n meta.error &&\r\n meta.touched\r\n }\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n // required={true}\r\n // required={!isTabActivity() ? getCorrespondenceRequired(values) : undefined}\r\n className={classes.textField}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Phone is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n // required={true}\r\n // required={!isTabActivity() ? getCorrespondenceRequired(values) : undefined}\r\n className={classes.textField}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Mobile is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const otherDetailsPanel = (form: FormApi, values: AnyObject) => {\r\n const panelTitle = addEllipsis(arrayToString([\r\n arrayToStringWithSeparator([\r\n values.clientTitle && values.clientTitle.trim().length > 0 && values.clientTitle !== 'None' ? `${values.clientTitle}` : '',\r\n values.clientFirstName,\r\n values.clientLastName,\r\n ], ' '),\r\n values.clientRelationshipToEnquirer,\r\n values.addressName,\r\n arrayToStringWithSeparator([\r\n arrayToStringWithSeparator([\r\n values.floor,\r\n values.number,\r\n ], '/'),\r\n values.street,\r\n ], ' '),\r\n values.street2,\r\n values.suburb,\r\n values.state,\r\n values.postcode,\r\n values.country\r\n // tslint:disable-next-line: align\r\n ]), 70);\r\n\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Client Details\r\n \r\n
\r\n
\r\n {panelTitle}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {otherContactDetailsPanel(form, values)}\r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n input.onChange(date)}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n input.onChange(selection.value)\r\n }\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Gender is required'\r\n : ''\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n disabled={values.individualSelector}\r\n label=\"Marketing Consent\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"T&C's Approved\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Privacy Statement Provided\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Conflict Check Performed\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"No Conflict\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Identity Check Peformed\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {clientAddressPanel(true, form)}\r\n \r\n \r\n {clientPostalAddressPanel(false, form)}\r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const client2AddressPanel = (defaultExpanded: boolean, form: FormApi) => {\r\n return (\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.AccordionSummary}\r\n >\r\n \r\n \r\n Main Address\r\n \r\n\r\n
\r\n
\r\n
\r\n {getAddressLabelForPanel(\r\n values.secondClientAddressName,\r\n values.secondClientFloor,\r\n values.secondClientNumber,\r\n values.secondClientStreet1,\r\n values.secondClientStreet2,\r\n values.secondClientSuburb,\r\n values.secondClientState,\r\n values.secondClientPostCode,\r\n values.secondClientCountry\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n // tslint:disable-next-line: max-line-length\r\n const client2PostalAddressPanel = (defaultExpanded: boolean, form: FormApi) => {\r\n return (\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.AccordionSummary}\r\n >\r\n \r\n \r\n Postal Address\r\n \r\n\r\n
\r\n
\r\n
\r\n {/* {getAddressLabelForPanel} */}\r\n {values.secondClientPOBoxType ? `${values.secondClientPOBoxType} ` : ''}\r\n {values.secondClientPOBox ? `${values.secondClientPOBox}, ` : ''}\r\n {values.secondClientPostalSuburb ? `${values.secondClientPostalSuburb}, ` : ''}\r\n {values.secondClientPostalState ? `${values.secondClientPostalState}, ` : ''}\r\n {values.secondClientPostalPostCode ? `${values.secondClientPostalPostCode}, ` : ''}\r\n {values.secondClientPostalCountry ? `${values.secondClientPostalCountry}` : ''}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection ? selection.value : null);\r\n }}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Field is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n const riskAssessedPanel = (form: FormApi, values: AnyObject) => {\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Risk Assessment\r\n \r\n
\r\n
\r\n
\r\n {addEllipsis(\r\n arrayToStringWithSeparator(\r\n [\r\n values.isRiskAssessed ? 'Yes' : 'No',\r\n values.isRiskAssessed ? values.riskLevelSelector ? values.riskLevelSelector.description : null : null,\r\n values.isRiskAssessed ? values.riskNotes : null\r\n ],\r\n ', '\r\n ),\r\n 70\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Risk Assessed\"\r\n />\r\n )}\r\n \r\n \r\n {values.isRiskAssessed ? (\r\n <>\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n input.onChange(selection)\r\n }\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'required'\r\n : ''\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const otherDetails2Panel = (form: FormApi, values: AnyObject) => {\r\n\r\n const panelTitle = addEllipsis(arrayToString([\r\n arrayToStringWithSeparator([\r\n values.secondClientTitle && values.secondClientTitle.trim().length > 0 && values.secondClientTitle !== 'None' ? `${values.secondClientTitle}` : '',\r\n values.secondClientFirstName,\r\n values.secondClientLastName,\r\n ], ' '),\r\n values.secondClientRelationshipToEnquirer,\r\n values.secondClientAddressName,\r\n arrayToStringWithSeparator([\r\n arrayToStringWithSeparator([\r\n values.secondClientFloor,\r\n values.secondClientNumber,\r\n ], '/'),\r\n values.secondClientStreet1,\r\n ], ' '),\r\n values.secondClientStreet2,\r\n values.secondClientSuburb,\r\n values.secondClientState,\r\n values.secondClientPostCode,\r\n values.secondClientCountry\r\n // tslint:disable-next-line: align\r\n ]), 70);\r\n\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Client 2 Details\r\n \r\n
\r\n
\r\n {panelTitle}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n <>\r\n {\r\n input.onChange(selection ? selection.value : '');\r\n }}\r\n // required={true}\r\n helperText={meta.error && meta.touched ? 'Title is required' : ''}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n values.isSecondClientNameSwitched ? (\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n onDropDownSelect(form, values, input, selection, 'secondClientIndividualSelector');\r\n onGetPartyAddresses(form, values, selection, 'secondClientIndividualSelector');\r\n }}\r\n enableSecondary={true}\r\n includeOrganisation={false}\r\n // value={input.value}\r\n />\r\n )}\r\n \r\n ) :\r\n (\r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n )\r\n }\r\n
\r\n
\r\n Switch to select an existing client & contact\r\n ) :\r\n (\r\n Switch to enter the last name\r\n )\r\n }\r\n >\r\n {\r\n // Another approach.\r\n onSwitch(form, values, 'secondClientLastName');\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n error={\r\n meta.error &&\r\n meta.touched\r\n }\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n // required={true}\r\n // required={!isTabActivity() ? getCorrespondenceRequired(values) : undefined}\r\n className={classes.textField}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Phone is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n // required={true}\r\n // required={!isTabActivity() ? getCorrespondenceRequired(values) : undefined}\r\n className={classes.textField}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Mobile is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n input.onChange(date)}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n input.onChange(selection.value)\r\n }\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Gender is required'\r\n : ''\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n disabled={values.secondClientIndividualSelector}\r\n label=\"Marketing Consent\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"T&C's Approved\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Privacy Statement Provided\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Conflict Check Performed\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"No Conflict\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Identity Check Peformed\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {client2AddressPanel(true, form)}\r\n \r\n \r\n {client2PostalAddressPanel(false, form)}\r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n const showAllContactInfo = (duplicateCheck: DuplicateCheck | null) => {\r\n\r\n if (!duplicateCheck) {\r\n return (\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {duplicateCheck.partyDuplicateCount > 0 && (\r\n <>\r\n {duplicateCheck.partyDuplicateCount > 1 ? (\r\n Multiple contacts found, first below\r\n ) : null}\r\n {duplicateCheck.contactName ? (\r\n
\r\n Contact Name: {duplicateCheck.contactName}\r\n
\r\n ) : null}\r\n {duplicateCheck.contactEmailAddress ? (\r\n
\r\n Contact Email: {duplicateCheck.contactEmailAddress}\r\n
\r\n ) : null}\r\n
\r\n Use the switch button to select this contact\r\n
\r\n \r\n )}\r\n {duplicateCheck.enquiryContactDuplicateCount > 0 && (\r\n
\r\n {duplicateCheck.enquiryContactDuplicateCount > 1 ? (\r\n Multiple enquiries found, first below\r\n ) : null}\r\n {duplicateCheck.enquiryName ? (\r\n
\r\n Enquiry Name: {duplicateCheck.enquiryName}\r\n
\r\n ) : null}\r\n {duplicateCheck.enquiryEmailAddress ? (\r\n
\r\n Enquiry Email: {duplicateCheck.enquiryEmailAddress}\r\n
\r\n ) : null}\r\n
\r\n )}\r\n
\r\n {duplicateCheck.otherSideName ? (\r\n
\r\n Enquiry Other Side Name: {duplicateCheck.otherSideName}\r\n
\r\n ) : null}\r\n {duplicateCheck.otherSideEmailAddress ? (\r\n
\r\n Enquiry Other Side Email: {duplicateCheck.otherSideEmailAddress}\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n };\r\n\r\n const contactDetailsPanel = (form: FormApi, values: AnyObject) => {\r\n\r\n const isUSClient = countryQuery.data?.options.homeCountry.stringValue === 'US';\r\n\r\n const tempReferrer = values.referrer ? values.referrer.label : values.referrerName ? values.referrerName : null;\r\n const tempSource = values.source ? values.source.label : null;\r\n\r\n // add all text in array and convert it to string to put comma for separation\r\n let panelTitle = [tempSource, tempReferrer, values.sourceNotes].filter(n => n).join(', ');\r\n\r\n const isEmailExist = (values.duplicateCheck && values.duplicateCheck.partyDuplicateCount > 0)\r\n || (values.duplicateCheck && values.duplicateCheck.enquiryContactDuplicateCount > 0)\r\n || (values.duplicateCheck && values.duplicateCheck.otherSideEmailAddress);\r\n\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Contact Details\r\n \r\n\r\n
\r\n
\r\n {panelTitle}\r\n
\r\n
\r\n \r\n \r\n \r\n {isEmailExist && (\r\n \r\n
\r\n A contact or enquiry with this email already exists, hover over the icon for more info\r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n \r\n \r\n {({ input, meta }) => (\r\n <>\r\n {\r\n input.onChange(selection ? selection.value : '');\r\n }}\r\n // required={true}\r\n helperText={meta.error && meta.touched ? 'Title is required' : ''}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {/* tslint:disable-next-line */}\r\n {/* {console.log('meta ' + meta)} */}\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n
\r\n
\r\n {\r\n values.isNameSwitched ? (\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n onDropDownSelect(form, values, input, selection, 'individualSelector');\r\n onGetPartyAddresses(form, values, selection, 'individualSelector');\r\n }}\r\n enableSecondary={true}\r\n includeOrganisation={false}\r\n // value={input.value}\r\n />\r\n )}\r\n \r\n ) :\r\n (\r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n )\r\n }\r\n
\r\n
\r\n Switch to select an existing client & contact\r\n ) :\r\n (\r\n Switch to enter the last name\r\n )\r\n }\r\n >\r\n {\r\n // Another approach.\r\n onSwitch(form, values, 'lastName');\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n input.onChange(date)}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n // input.onChange(event.target.value);\r\n // onContactDetailsChanged(form, values);\r\n // onCheckAssociateContact(form, event.target.value);\r\n // }}\r\n onChange={(event) => {\r\n input.onChange(event.target.value);\r\n checkDuplicateEmail(form, values, event.target.value);\r\n }}\r\n error={\r\n meta.error &&\r\n meta.touched\r\n }\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n // required={true}\r\n required={!isTabActivity() ? getCorrespondenceRequired(values) : undefined}\r\n className={classes.textField}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Phone is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(event.target.value);\r\n onContactDetailsChanged(form, values);\r\n }}\r\n // required={true}\r\n required={!isTabActivity() ? getCorrespondenceRequired(values) : undefined}\r\n className={classes.textField}\r\n error={meta.error && meta.touched}\r\n autoComplete=\"abcd\"\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error // 'Mobile is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n\r\n onSourceChanged(form, values, selection);\r\n }}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Source is required'\r\n : ''\r\n }\r\n onBlur={input.onBlur}\r\n />\r\n )}\r\n \r\n \r\n\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n\r\n input.onChange(selection)\r\n\r\n }}\r\n helperText={meta.error && meta.touched\r\n ? 'Location is required'\r\n : ''\r\n }\r\n onBlur={input.onBlur}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n {!!values.isShowReferrer && (\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n\r\n onReferrerChanged(form, values, selection);\r\n }}\r\n value={values.referrerGuid\r\n ? { value: values.referrerGuid, label: values.referrerName }\r\n : null\r\n }\r\n includeNonPmsContacts={false}\r\n includePmsContacts={true}\r\n />\r\n )}\r\n \r\n \r\n )}\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n
\r\n {UserFeature.HasAccess(UserFeatureEnum.hasEventsAndCampaignsSummary) ? (\r\n <>\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n }}\r\n className={classes.textField}\r\n required={props.enquiryDefaultConfig?.isEventAndCampaignMandatory}\r\n onBlur={input.onBlur}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const organisationPanel = (form: FormApi, values: AnyObject) => {\r\n\r\n const organisationPanelContent = `${values.organisation ? values.organisation : ''}${values.organisation && values.positionAtOrganisation ? `, ${values.positionAtOrganisation}` : values.positionAtOrganisation ? values.positionAtOrganisation : ''}`;\r\n\r\n return (\r\n\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n {t('Organisation')}\r\n \r\n
\r\n
\r\n
\r\n {organisationPanelContent}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n values.isOrganisationSwitched ? (\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n onDropDownSelect(form, values, input, selection, name);\r\n }}\r\n // value={input.value}\r\n />\r\n )}\r\n \r\n ) :\r\n (\r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n )\r\n }\r\n
\r\n
\r\n Switch to select an existing organisation\r\n ) :\r\n (\r\n Switch to enter a new organisation name\r\n )\r\n }\r\n >\r\n {\r\n // Another approach.\r\n onSwitch(form, values, 'organisation');\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const enquiryDetailsPanel = (form: FormApi, values: AnyObject) => {\r\n\r\n let panelTitle = [values.areaOfLaw, values.natureOfEnquiry].filter(n => n).join(', ');\r\n\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n {`${props.isKeyOpportunity\r\n ? t('KeyOpportunity')\r\n : t('Enquiry')}\r\n Details`}\r\n \r\n
\r\n
\r\n
\r\n {panelTitle}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n onSelectionChange(form, selection, name, values)}\r\n onBlur={input.onBlur}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Area of law is required'\r\n : undefined\r\n }\r\n />\r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const enquiryValuePanels = (form: FormApi, values: AnyObject) => {\r\n return (\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n {t('Enquiry Value')}\r\n \r\n
\r\n
\r\n \r\n {(\r\n { input } /* FieldRenderProps */\r\n ) => {\r\n // tslint:disable-next-line: radix\r\n return parseInt(input.value) > 0 && (\r\n
\r\n \r\n
\r\n );\r\n }}\r\n
\r\n
\r\n
\r\n \r\n {(\r\n { input } /* FieldRenderProps */\r\n ) => {\r\n return parseFloat(input.value) > 0 && (\r\n
\r\n {/* tslint:disable-next-line: radix */}\r\n {`${state.currency}${formatNumber(parseFloat(input.value), 2)}`}\r\n
\r\n );\r\n }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Includes Tax\"\r\n />\r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Includes Tax\"\r\n />\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {t('Enquiry Quality')}\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n Likelihood to Proceed\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n \r\n );\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const detailsTab = (form: FormApi, pristine: boolean, values: Enquiry) => {\r\n // let files: DocumentFile[] = form.getFieldState('files')?.value;\r\n\r\n return (\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values, errors }) => {\r\n\r\n if (state.isFormSubmit) {\r\n openErrorPanel(errors);\r\n }\r\n\r\n return (\r\n
\r\n {/* Contact Detail */}\r\n {contactDetailsPanel(form, values)}\r\n\r\n {/* Organisation */}\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryOrganisation) || !isCreateForm) && organisationPanel(form, values)}\r\n\r\n {enquiryDetailsPanel(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryValue) || !isCreateForm) && enquiryValuePanels(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryClientDetails) || !isCreateForm) && otherDetailsPanel(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryClient2Details) || !isCreateForm) && otherDetails2Panel(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryRiskAssessment) || !isCreateForm) && riskAssessedPanel(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryOtherSide) || !isCreateForm) && otherSidePanel(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryDetailedNotes) || !isCreateForm) && detailedEnquiryNotesPanel(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryDigitalTracking) || !isCreateForm) && digitalTrackingPanel(form, values)}\r\n\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryDocuments) || !isCreateForm) && documentsPanel(form, values)}\r\n\r\n {/* Assign */}\r\n {getAssignment(form, values, pristine)}\r\n\r\n {/* Proceeding */}\r\n {(UserFeature.HasAccess(UserFeatureEnum.hasEnquiryProceeding) || !isCreateForm) && getProceeding(form, values, pristine)}\r\n
\r\n );\r\n }}\r\n
\r\n );\r\n };\r\n // end of contact details\r\n\r\n // tslint:disable-next-line: no-any\r\n const onSendEmailDialogClose = (form: FormApi) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isSendEmailDialogOpen: false\r\n };\r\n });\r\n\r\n // Change back to default value\r\n form.batch(() => {\r\n form.change('emailTemplate', null);\r\n form.change('followUpAction', 'Emailed');\r\n form.change('followUpActionSystemName', 'Emailed');\r\n form.change('followUpSystemAction', null);\r\n });\r\n\r\n setIsSubmitting(false);\r\n };\r\n\r\n const isMarkClientMatterWidthLong = () => {\r\n\r\n let i = 0;\r\n // create contact\r\n if (enquiryActionData?.canCreateContactForLostEnquiry && UserFeature.HasAccess(UserFeatureEnum.hasCreateClient)) {\r\n i += 1;\r\n }\r\n // create client\r\n if (state.isCreateClient && UserFeature.HasAccess(UserFeatureEnum.hasCreateClient)) {\r\n i += 1;\r\n }\r\n // re-open\r\n if (enquiryActionData && enquiryActionData.canReOpen && enquiryActionData.canReOpen === true) {\r\n i += 1;\r\n }\r\n\r\n if (i >= 2) {\r\n return true;\r\n }\r\n\r\n return false;\r\n\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onHistoryAcitivtyAssign = (form: FormApi) => (task: TaskDetails) => {\r\n\r\n const staff = task.staff && task.staffGuid ?\r\n { label: task.staff, value: task.staffGuid, entityType: task.isAssignedToTeam ? EntityTypeEnum.TEAM : EntityTypeEnum.STAFF } : null;\r\n const officeLocation = task.firmOffice && task.firmOfficeGuid ? { label: task.firmOffice, value: task.firmOfficeGuid } : null;\r\n\r\n const tempTimezone = state.timezone.map((tzome: TimezoneOption) => {\r\n return {\r\n value: tzome.timezoneValue,\r\n label: tzome.displayName,\r\n secondaryValue: tzome.baseUtcOffset\r\n };\r\n }).find((tzome: { value: string; label: string; secondaryValue: number; }) => tzome.value === task.timezone && tzome.secondaryValue === task.timezoneOffset);\r\n\r\n form.batch(() => {\r\n form.change('followUpAction', task.followUpAction);\r\n form.change('followUpActionSystemName', task.followUpActionSystemName);\r\n form.change('followUpSystemAction', task.systemAction);\r\n form.change('staff', staff);\r\n form.change('officeLocation', officeLocation);\r\n form.change('timezone', tempTimezone ? tempTimezone : null);\r\n // set false if assign task is a team\r\n form.change('isSendConfirmation', !task.isAssignedToTeam);\r\n form.change('startTime', task.bookMeetingStartDate);\r\n form.change('endTime', task.bookMeetingEndDate);\r\n form.change('meetingNotes', task.meetingNotes);\r\n form.change('feeApplicable', task.feeApplicable);\r\n });\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isBookMeetingFromHistoryActivity: true\r\n };\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const activityTab = (form: FormApi, pristine: boolean, values: AnyObject) => {\r\n let isCanReOpen = (enquiryActionData && enquiryActionData.canReOpen && enquiryActionData.canReOpen === true)\r\n ? true\r\n : false;\r\n\r\n const canCreateMatter = enquiryActionData ? enquiryActionData.canCreateMatter : false;\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n
\r\n {state.isCreateClient && UserFeature.HasAccess(UserFeatureEnum.hasCreateClient) && (\r\n \r\n {`Create ${canCreateMatter ? 'Matter' : 'Client'}`}\r\n \r\n )}\r\n {enquiryActionData?.canCreateContactForLostEnquiry && UserFeature.HasAccess(UserFeatureEnum.hasCreateClient) && (\r\n \r\n {`Create ${canCreateMatter ? 'Matter' : 'Contact'}`}\r\n \r\n )}\r\n {state.isCreateClient && UserFeature.HasAccess(UserFeatureEnum.hasMarkAsClientCreated) && (\r\n onCompleteCreateClient()}\r\n >\r\n {`Mark as ${canCreateMatter ? 'Matter' : 'Client'} Created`}\r\n \r\n )}\r\n {/* downloadEnquirySummary(enquiryDetail)}\r\n >\r\n {`Download Enquiry Summary`}\r\n */}\r\n {isCanReOpen && (\r\n onReOpen(form, values)}\r\n >\r\n Re-Open\r\n \r\n )}\r\n
\r\n {/* Follow Up */}\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n className={classes.expansionPanelSummary}\r\n >\r\n \r\n Follow Up\r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n values ? (\r\n
\r\n {/* tslint:disable-next-line: max-line-length */}\r\n {(values.assignedToName && values.assignedToName !== null) // || !values.isClosed\r\n ? (\r\n 'Assigned to ' + values.assignedToName +\r\n (\r\n values.followUpDueDate && values.followUpDueDate !== null ? (\r\n ', due by ' + (values.followUpDueDate\r\n ? moment(values.followUpDueDate).format('DD MMM YYYY')\r\n : 'None')\r\n ) : ''\r\n )\r\n ) : ''\r\n }\r\n
\r\n ) : null\r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => !state.isBookMeetingFromHistoryActivity && (\r\n \r\n , checked: boolean, value: string, systemAction: string, url: string | null) => {\r\n onFollowUpChange(form, values, event, checked, value, systemAction, url);\r\n }}\r\n />\r\n \r\n )}\r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => {\r\n if (values.followUpSystemAction === 'BookMeeting') {\r\n return (\r\n <>\r\n \r\n \r\n \r\n {!!(values.firstName && values.lastName && values.email) && (\r\n \r\n
\r\n {`Meeting booking for ${values.firstName} ${values.lastName} (${values.email})`}\r\n
\r\n
\r\n )}\r\n {!!(values.firstName && values.lastName && !values.email) && (\r\n \r\n
\r\n There is no email address saved against the enquiry. Email confirmations will\r\n not be sent without saving an email address against the enquiry record first.\r\n
\r\n
\r\n )}\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n onChangeSelection(selection, input, form, name)}\r\n onBlur={input.onBlur}\r\n error={meta.error && meta.touched}\r\n disablePortal={false}\r\n className={classes.textField}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? 'Staff or Team is required'\r\n : 'The person or team in the firm who the meeting is with'\r\n }\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n {!!(values.staff && values.staff.entityType === EntityTypeEnum.STAFF) && (\r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Send Confirmation\"\r\n />\r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n onChangeSelection(selection, input, form, name)}\r\n // tslint:disable-next-line: max-line-length\r\n // onSelection={(selection: IAutoCompleteItem, name: string) =>\r\n // input.onChange(selection)\r\n // }\r\n onBlur={input.onBlur}\r\n helperText={meta.error && meta.touched\r\n ? 'Location is required'\r\n : undefined\r\n }\r\n showAllOffice={true}\r\n PopperComponent={CustomPopper}\r\n disablePortal={false}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n input.onChange(selection)\r\n }\r\n className={classes.textField}\r\n disablePortal={false}\r\n onBlur={input.onBlur}\r\n error={meta.error && meta.touched}\r\n helperText={meta.error && meta.touched\r\n ? 'Timezone is required'\r\n : undefined\r\n }\r\n required={values.officeLocation ? true : false}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"All day\"\r\n />\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n } else if (values.followUpSystemAction === 'CreateEmail') {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n onEmailTemplateChange(form, selection)\r\n }\r\n onBlur={input.onBlur}\r\n helperText={meta.error && meta.touched\r\n ? 'Email Template is required'\r\n : undefined\r\n }\r\n PopperComponent={CustomPopper}\r\n areaOfLaw={values.areaOfLaw}\r\n emailType={EmailTemplateTypeEnum.EMAIL_RESPONSE}\r\n disablePortal={false}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n <>\r\n {values.followUpSystemAction === 'CreateEmail'\r\n && values.emailTemplate\r\n && (\r\n onSendEmailDialogClose(form)}\r\n isSendEmailDialogOpen={state.isSendEmailDialogOpen}\r\n enquiryDefaultConfig={props.enquiryDefaultConfig}\r\n canCreateMatter={enquiryActionData?.canCreateMatter}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n \r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(newValue);\r\n if (mentions && mentions.length > 0) {\r\n // If we have mentions, change the Follow Up Action to - Internal Note\r\n // And mark Follow Up Due as not mandatory\r\n form.change('followUpAction', 'Internal Note');\r\n form.change('followUpActionSystemName', 'InternalNote');\r\n\r\n form.change('hasFollowUpNotesMentions', true);\r\n form.change('updateFollowUpDueForInternalNote', true);\r\n } else {\r\n form.change('hasFollowUpNotesMentions', false);\r\n }\r\n }}\r\n isLoadData={isTabActivity()}\r\n onlyUsedByEnquiries={true}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n , checked: boolean) =>\r\n onOutcomeChange(form, values, event, checked)\r\n }\r\n />\r\n \r\n \r\n \r\n {/* Without FormSpy, rules will not update in Realtime */}\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n input.onChange(selection);\r\n }}\r\n error={meta.error && meta.touched}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n showIcon={true}\r\n />\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n {/* Without FormSpy, rules will not update in Realtime */}\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n // tslint:disable-next-line: max-line-length\r\n onDropdownChange(selection, name, input, form, reasonGuid);\r\n }}\r\n // tslint:disable-next-line: max-line-length\r\n required={isTabActivity()\r\n ? form.getFieldState('outcome')?.value === 'Not Proceeding'\r\n ? true : false\r\n : false}\r\n disabled={form.getFieldState('outcome')?.value !== 'Not Proceeding'\r\n ? true : false}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n {values.isShowNotProceedingReferrer && (\r\n \r\n
\r\n
\r\n {\r\n (values.isNotProceedingReferrerSwitched) ? (\r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n ) :\r\n (\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n onDropDownSelect(form, values, input, selection, name);\r\n }}\r\n />\r\n )}\r\n \r\n )\r\n }\r\n
\r\n
\r\n \r\n Switch to select an existing client & contact\r\n \r\n ) :\r\n (\r\n Switch to enter the referred to name\r\n )\r\n }\r\n >\r\n {\r\n // Another approach.\r\n onSwitch(form, values, 'referredToFirm');\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n )}\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n );\r\n }\r\n }}\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const matterDetailsTab = (form: FormApi, pristine: boolean) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n
\r\n {!enquiryDetail.matterFileNumber && enquiryActionData?.canChangeLinkedMatter === false && (\r\n

\r\n Matter synching is in progress. Please check again after a short while.\r\n

\r\n )}\r\n\r\n {/* Buttons should be encapsulated in FormSpy - While close, we are refering to values and form */}\r\n
\r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n if (selection) {\r\n fetchMatterDetails(selection.id);\r\n }\r\n }}\r\n disabled={!enquiryActionData?.canChangeLinkedMatter}\r\n value={input.value ? input.value : null}\r\n error={meta.error && meta.touched}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n className={classes.textField}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {MatterTerminology.EstimatedCosts}\r\n
\r\n \r\n {`${state.currency}${state.financials ? formatNumber(state.financials.estimatedCosts) : 0}`}\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n {MatterTerminology.Billed + ' ' + MatterTerminology.BilledTimeAndFees}\r\n
\r\n
\r\n {`${state.currency}${state.financials ? formatNumber(state.financials.billedTimeAndFees) : 0}`}\r\n
\r\n
\r\n
\r\n \r\n \r\n
{MatterTerminology.TotalOwing}
\r\n
\r\n {`${state.currency}${state.financials ? formatNumber(state.financials.balanceDue) : 0}`}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {\r\n // tslint:disable-next-line:max-line-length\r\n MatterTerminology.Unbilled + ' ' + MatterTerminology.UnbilledTimeAndFees\r\n }\r\n
\r\n
\r\n {`${state.currency}${state.financials ? formatNumber(state.financials.unbilledTimeAndFees) : 0}`}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {MatterTerminology.BillingMethod}\r\n
\r\n
\r\n {state.financials ? state.financials.billingMethod : ''}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {MatterTerminology.CostAgreementReceived}\r\n
\r\n \r\n\r\n {\r\n // tslint:disable-next-line:max-line-length\r\n state.financials && state.financials.costAgreementReceived ? moment(state.financials.costAgreementReceived).format('d MMM YYYY') : null\r\n }\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {MatterTerminology.Billed + ' ' + MatterTerminology.Disbursements}\r\n
\r\n
\r\n {`${state.currency}${state.financials ? formatNumber(state.financials.billedDisbursements) : 0}`}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {MatterTerminology.TrustBalance}\r\n
\r\n
\r\n {`${state.currency}${state.financials ? formatNumber(state.financials.trustGeneralBalance) : 0}`}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {MatterTerminology.Unbilled + ' ' + MatterTerminology.Disbursements}\r\n
\r\n
\r\n {`${state.currency}${state.financials ? formatNumber(state.financials.unbilledDisbursements) : 0}`}\r\n
\r\n
\r\n
\r\n \r\n \r\n
{MatterTerminology.TrustControlledMoneyBalance}
\r\n
\r\n {`${state.currency}${state.financials ? formatNumber(state.financials.trustControlledMoneyBalance) : 0}`}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {enquiryActionData?.canChangeLinkedMatter && (\r\n uploadEnquiryMatterDocument(enquiryDetail)}\r\n disabled={(isSubmitting)}\r\n >\r\n {`UPLOAD DOCUMENTS`}\r\n \r\n )}\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n const getCustomFields = (form: FormApi, values: Enquiry) => {\r\n\r\n if (isCustomFieldLoading) {\r\n return displayLoader();\r\n }\r\n\r\n if (state.customFieldByHierarchy && state.customFieldByHierarchy.length > 0) {\r\n\r\n return (\r\n \r\n {state.customFieldByHierarchy.map((group, index) => (\r\n \r\n \r\n }\r\n >\r\n {group.customFieldGroupName}\r\n \r\n \r\n \r\n {group.customFieldGroupDescription && (\r\n \r\n \r\n {group.customFieldGroupDescription}\r\n \r\n \r\n )}\r\n {group.customField.filter((field) => field.isActive).map((field, index) => (\r\n \r\n {getField(field, index, group.customFieldGroupGuid)}\r\n \r\n ))}\r\n \r\n \r\n \r\n { }\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const hasCustomField = UserFeature.HasAccess(UserFeatureEnum.hasEnquiriesCustomFields) && isCreateForm && state.customFieldByHierarchy && state.customFieldByHierarchy.length > 0 ? true : false;\r\n\r\n const defaultValues = props.guid ? getEnquiryDetails(true) : initialValues;\r\n\r\n const isStandAlone = tenantQuery.data?.tenant.sourceSystem.toLowerCase() === 'standalone';\r\n\r\n return (\r\n <>\r\n \r\n\r\n {state.showDiscard && (\r\n \r\n )}\r\n\r\n {state.isCreateClientOpen && (\r\n \r\n )}\r\n {state.isMarkClientMatterCreatedOpen && (\r\n \r\n )}\r\n\r\n \r\n {/* \r\n \r\n {state.isExpandDrawer ? : }\r\n\r\n \r\n */}\r\n {\r\n isLoading || partyAddressesQuery.loading\r\n ? (\r\n \r\n {displayLoader()}\r\n
\r\n )\r\n : (\r\n , callback) => await onSubmit(form, values, callback)}\r\n initialValues={defaultValues}\r\n initialValuesEqual={() => true}\r\n keepDirtyOnReinitialize={true}\r\n subscription={{ submitting: true, pristine: true, values: true, errors: true }}\r\n // debug={(values) => {\r\n // // tslint:disable-next-line: no-console\r\n // console.log('Debug Values', values);\r\n // }}\r\n validate={(values) => {\r\n let errors = {\r\n email: '',\r\n mobile: '',\r\n phone: ''\r\n };\r\n\r\n if ((!values.email)\r\n && (!values.mobile)\r\n && (!values.phone)) {\r\n errors.email = 'One of Email/Telephone/Mobile are required';\r\n errors.mobile = 'One of Email/Telephone/Mobile are required';\r\n errors.phone = 'One of Email/Telephone/Mobile are required';\r\n } else if (values\r\n && (values.email && values.email.length === 0)\r\n && (values.mobile && values.mobile.length === 0)\r\n && (values.phone && values.phone.length === 0)) {\r\n errors.email = 'One of Email/Telephone/Mobile are required';\r\n errors.mobile = 'One of Email/Telephone/Mobile are required';\r\n errors.phone = 'One of Email/Telephone/Mobile are required';\r\n } else if (values.email !== undefined && values.email !== null && values.email.length > 0) {\r\n errors.email = EmailValidateWithRequiredNew(values.email);\r\n }\r\n\r\n if (errors.email === '' && errors.mobile === '' && errors.phone === '') {\r\n // tslint:disable-next-line: no-console\r\n // console.log('Errors', 'None');\r\n return undefined;\r\n }\r\n\r\n // tslint:disable-next-line: no-console\r\n // console.log('Errors', errors);\r\n return errors;\r\n }}\r\n render={({ handleSubmit, form, submitting, pristine, values }) => (\r\n \r\n
\r\n {/*

{isCreateForm ? 'Create Enquiry' : 'Edit Enquiry'}

*/}\r\n {displayLoader()}\r\n\r\n {\r\n onFormValueChanged(form, props, defaultValues);\r\n }}\r\n />\r\n\r\n {values.showCustomFieldWarning && (\r\n {\r\n if (agree) {\r\n\r\n onGetCustomFields({\r\n areaOfLawGuid: values.tempPracticeAreaGuidID || null,\r\n customFieldGroupGuid: null\r\n }, form);\r\n\r\n form.change('showCustomFieldWarning', false);\r\n form.change('practiceAreaGuidID', values.tempPracticeAreaGuidID);\r\n form.change('areaOfLaw', values.tempAreaOfLaw);\r\n form.change('customField', undefined);\r\n form.change('tempAreaOfLaw', undefined);\r\n form.change('tempPracticeAreaGuidID', undefined);\r\n } else {\r\n form.change('showCustomFieldWarning', false);\r\n }\r\n }}\r\n disAgreeLabel={'No'}\r\n agreeLabel={'Yes'}\r\n />\r\n )}\r\n\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n \r\n {values.isBookMeetingEmailDialogOpen && (\r\n onToggleBookMeetingEmailDialog(form, false)}\r\n open={values.isBookMeetingEmailDialogOpen}\r\n staff={values.staff}\r\n officeLocation={values.officeLocation ? values.officeLocation.label : null}\r\n timezone={values.timezone ? values.timezone.value : null}\r\n startTime={values.startTime}\r\n endTime={values.endTime}\r\n isAllDay={values.isAllDay}\r\n meetingNotes={values.meetingNotes}\r\n feeApplicable={values.feeApplicable}\r\n assignedTo={values.assignedTo}\r\n />\r\n )}\r\n \r\n
\r\n {!!(values.firstName && values.lastName) && (\r\n

\r\n {`${values.firstName} ${values.lastName}`}\r\n

\r\n )}\r\n {!!values.organisation && (\r\n

\r\n {values.organisation}\r\n

\r\n )}\r\n {!!values.email && (\r\n

\r\n \r\n \r\n {values.email}\r\n \r\n

\r\n )}\r\n
\r\n {!!values.phone && (\r\n

\r\n \r\n \r\n {values.phone}\r\n \r\n

\r\n )}\r\n {!!values.mobile && (\r\n

\r\n \r\n \r\n {values.mobile}\r\n \r\n

\r\n )}\r\n
\r\n
\r\n
\r\n {!isCreateForm && (\r\n \r\n
\r\n {!!enquiryDetail.createdDate && (\r\n \r\n

{`Created ${showDateEndOfFromNow(enquiryDetail.createdDate)}`}

\r\n \r\n )}\r\n {!!enquiryDetail.dateAssigned && (\r\n \r\n

{`Assigned ${showDateEndOfFromNow(enquiryDetail.dateAssigned)}`}

\r\n \r\n )}\r\n {\r\n // tslint:disable-next-line: max-line-length\r\n !!(enquiryDetail.followUpDueDate && enquiryActionData && !enquiryActionData.canReOpen) && (\r\n \r\n \r\n {`Follow Up due ${showDateEndOfFromNow(enquiryDetail.followUpDueDate)}`}\r\n

\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n \r\n {!!values.internalNotes && getInternalNotes(values.internalNotes, 110)}\r\n \r\n
\r\n )}\r\n
\r\n\r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n // Buttons should be encapsulated in FormSpy - While close, we are refering to values and form\r\n actionButton(form, submitting, pristine, values, true, true, true, true, false)\r\n )}\r\n \r\n\r\n \r\n \r\n {values.isContactDetailsChanged && (\r\n
\r\n \r\n Please uncheck if you don't want to update the record in Clients & Contacts database\r\n
\r\n , checked: boolean) => {\r\n // Another approach.\r\n onUpdateContact(form, values, checked);\r\n }}\r\n name=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Update Clients & Contacts record\"\r\n />\r\n
\r\n
\r\n )}\r\n \r\n \r\n {UserFeature.HasAccess(UserFeatureEnum.hasEnquiriesCustomFields) && !isCreateForm && state.customFieldByHierarchy && state.customFieldByHierarchy.length > 0 && values.practiceAreaGuidID && (\r\n \r\n )}\r\n \r\n {!!(enquiryActionData && enquiryActionData.canLinkMatter) && !isStandAlone && (\r\n \r\n )}\r\n \r\n {/* )} */}\r\n {/* details tab */}\r\n {detailsTab(form, pristine, values)}\r\n {/* activity tab */}\r\n {activityTab(form, pristine, values)}\r\n {matterDetailsTab(form, pristine)}\r\n {state.tab === EnquiryFormTab.customFields && getCustomFields(form, values)}\r\n \r\n {hasCustomField && values.practiceAreaGuidID && (\r\n \r\n {!props.guid && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {getCustomFields(form, values)}\r\n \r\n )}\r\n \r\n\r\n {actionButton(form, submitting, pristine, values, false, false, false, false, true)}\r\n\r\n {/* {printJson()} */}\r\n {/* {printJson(enquiryDetail)} */}\r\n \r\n \r\n )}\r\n />\r\n )\r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const addBusinessDays = (originalDate: Date, numDaysToAdd: number) => {\r\n const Sunday = 0;\r\n const Saturday = 6;\r\n let daysRemaining = numDaysToAdd;\r\n\r\n const newDate = moment(new Date(originalDate.valueOf()));\r\n\r\n while (daysRemaining > 0) {\r\n newDate.add(1, 'days');\r\n if (newDate.day() !== Sunday && newDate.day() !== Saturday) {\r\n daysRemaining--;\r\n }\r\n }\r\n\r\n return newDate;\r\n};\r\n\r\n// tslint:disable-next-line: no-any\r\n// export function printJson() {\r\n// const previousValues = useRef({});\r\n\r\n// return (\r\n// <>\r\n// \r\n// {({ values }) => {\r\n// // Compare the previous and current values\r\n// const changedField = Object.keys(values).find(\r\n// key => values[key] !== previousValues.current[key]\r\n// );\r\n\r\n// useEffect(() => {\r\n// if (changedField) {\r\n// console.log(`Field changed: ${changedField}`, values[changedField]);\r\n// }\r\n\r\n// // Update the previous values after logging\r\n// previousValues.current = values;\r\n// }, [values]);\r\n\r\n// return (\r\n//
\r\n//                             {JSON.stringify(values, undefined, 2)}\r\n//                         
\r\n// );\r\n// }}\r\n//
\r\n// \r\n// );\r\n// }\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { FormControl, FormLabel, RadioGroup, FormControlLabel, Radio } from '@material-ui/core';\r\nimport { showNotification } from '../../App';\r\nimport { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport { client } from '../..';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { Field } from 'react-final-form';\r\nimport RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked';\r\nimport { mainTheme } from '../../Theme';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n label: {\r\n fontSize: 11,\r\n color: theme.palette.primary.main\r\n },\r\n radioIcon: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n radioGroup: {\r\n flexDirection: 'row'\r\n }\r\n })\r\n);\r\n\r\ninterface OutcomeRadioProps {\r\n name: string;\r\n label: string;\r\n hasNameGuid: boolean;\r\n canCreateMatter: boolean | undefined;\r\n onRadioButtonChange?: (event: React.ChangeEvent, checked: boolean) => void;\r\n}\r\n\r\ninterface OutcomeRadioState {\r\n isLoading: boolean;\r\n options: IAutoCompleteItem[];\r\n}\r\n\r\nexport const OutcomeRadio: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n isLoading: false,\r\n options: [],\r\n });\r\n\r\n useEffect(() => { \r\n fetchData();\r\n // tslint:disable-next-line: align\r\n }, []);\r\n\r\n useEffect(() => { \r\n fetchData();\r\n // tslint:disable-next-line: align\r\n }, [props.hasNameGuid]);\r\n\r\n const fetchData = () => {\r\n\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n retrieveEnquiryOutcomeData(\r\n false, \r\n // tslint:disable-next-line: no-console\r\n (data) => onRetrieveSource(data),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n }\r\n );\r\n };\r\n\r\n const onRetrieveSource = (data: EnquiryOutcomeData) => {\r\n // Filter out\r\n let outcomeList = data.enquiry.outcomes;\r\n\r\n // We are showing 'Proceeding' in place of New Client & New Matter as well\r\n outcomeList = outcomeList.filter( (source: Outcome) => source.description !== 'New Client' && source.description !== 'New Matter');\r\n // if (props.hasNameGuid === true) {\r\n // if (props.canCreateMatter) {\r\n // outcomeList = outcomeList.filter( (source: Outcome) => source.description !== 'Proceeding');\r\n // } else {\r\n // outcomeList = outcomeList.filter( (source: Outcome) => source.description !== 'New Client' && source.description !== 'New Matter');\r\n // } \r\n // } else {\r\n // outcomeList = outcomeList.filter( (source: Outcome) => source.description !== 'Proceeding');\r\n // }\r\n \r\n setState({\r\n ...state,\r\n options: outcomeList.map( (source: Outcome) => ({value: source.guidId, label: source.description })),\r\n isLoading: false\r\n });\r\n };\r\n\r\n const handleOnChange = (event: React.ChangeEvent, checked: boolean) => {\r\n if (props.onRadioButtonChange) {\r\n props.onRadioButtonChange(event, checked);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const RadioComp = (compProps: any) => {\r\n const { input } = compProps;\r\n\r\n return (\r\n }\r\n onChange={(event: React.ChangeEvent, checked: boolean) => handleOnChange(event, checked)}\r\n />\r\n );\r\n };\r\n\r\n return (\r\n \r\n {props.label}\r\n \r\n {state.options.map((option: IAutoCompleteItem) => (\r\n \r\n }\r\n value={option.label}\r\n label={option.label} \r\n />\r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport function retrieveEnquiryOutcomeData(\r\n refreshData: boolean,\r\n onSuccess: (data: EnquiryOutcomeData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void\r\n): void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client\r\n .query({\r\n query: EnquiryOutcomeDataQuery,\r\n variables: {},\r\n fetchPolicy: fetchPolicy,\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n onError(reason);\r\n });\r\n}\r\n\r\nexport interface EnquiryOutcomeData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n enquiry: Enquiry;\r\n}\r\n\r\nexport interface Enquiry {\r\n outcomes: Outcome[];\r\n}\r\n\r\nexport interface Outcome {\r\n guidId: string;\r\n description: string;\r\n}\r\n\r\nconst EnquiryOutcomeDataQuery = gql`\r\n query enquiryOutcomes {\r\n enquiry{\r\n outcomes{\r\n guidId,\r\n description\r\n }\r\n }\r\n }\r\n`;","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles, Theme, createStyles, withStyles } from '@material-ui/core/styles';\r\nimport { FormControl, FormLabel, RadioGroup, FormControlLabel, Radio, Tooltip } from '@material-ui/core';\r\nimport { showNotification } from '../../App';\r\nimport { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport { client } from '../..';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { Field } from 'react-final-form';\r\nimport RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked';\r\nimport { mainTheme } from '../../Theme';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n label: {\r\n fontSize: 11,\r\n color: theme.palette.primary.main\r\n },\r\n radioIcon: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n radioGroup: {\r\n flexDirection: 'row'\r\n }\r\n })\r\n);\r\n\r\ninterface ActionTypeRadioProps {\r\n name: string;\r\n label: string;\r\n onRadioButtonChange?: (event: React.ChangeEvent, checked: boolean, value: string, systemAction: string, url: string | null) => void;\r\n value?: string;\r\n}\r\n\r\ninterface ActionTypeRadioState {\r\n isLoading: boolean;\r\n // tslint:disable-next-line: no-any\r\n options: any[];\r\n}\r\n\r\nexport const ActionTypeRadio: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n isLoading: false,\r\n options: [],\r\n });\r\n\r\n useEffect(() => { \r\n fetchData();\r\n // tslint:disable-next-line: align\r\n }, []);\r\n\r\n const fetchData = () => {\r\n\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n retrieveEnquirySourceData(\r\n false, // this.state.isRefresh, -- Since we are updating and creating, we do not fetch cached data\r\n // tslint:disable-next-line: no-console\r\n (data) => onRetrieveSource(data),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n }\r\n );\r\n };\r\n\r\n const onRetrieveSource = (data: LeadActionData) => {\r\n setState({\r\n ...state,\r\n options: data.lookup.actionTypes.map( (source: ActionTypes) => ({\r\n ...source,\r\n value: source.guidId, \r\n label: source.description,\r\n secondaryValue: source.systemName,\r\n tertiaryValue: source.systemAction,\r\n url: source.url\r\n })),\r\n isLoading: false\r\n });\r\n };\r\n\r\n const handleOnChange = (event: React.ChangeEvent, checked: boolean) => {\r\n // tslint:disable-next-line: no-any\r\n var autoCompleteItem = state.options.filter((x: any) => x.label === event.currentTarget.value);\r\n\r\n let systemName = '';\r\n let systemAction = '';\r\n let url: string | null = null;\r\n\r\n if (autoCompleteItem && autoCompleteItem.length > 0) {\r\n systemName = autoCompleteItem[0].secondaryValue ? autoCompleteItem[0].secondaryValue.toString() : '';\r\n systemAction = autoCompleteItem[0].tertiaryValue ? autoCompleteItem[0].tertiaryValue.toString() : '';\r\n url = autoCompleteItem[0].url ? autoCompleteItem[0].url.toString() : null;\r\n }\r\n\r\n if (props.onRadioButtonChange) {\r\n props.onRadioButtonChange(event, checked, systemName, systemAction, url);\r\n }\r\n };\r\n\r\n const LightTooltip = withStyles((theme: Theme) => ({\r\n arrow: {\r\n color: theme.palette.common.white,\r\n '&::before': {\r\n // backgroundColor: 'blue',\r\n boxShadow: theme.shadows[1],\r\n },\r\n top: '-3px !important',\r\n height: '1em !important',\r\n width: '2em !important',\r\n },\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n boxShadow: theme.shadows[1],\r\n fontSize: 12,\r\n padding: 8\r\n },\r\n }))(Tooltip);\r\n\r\n // tslint:disable-next-line: no-any\r\n const RadioComp = (option: any) => (compProps: any) => {\r\n\r\n const { input } = compProps; \r\n return (\r\n \r\n }\r\n onChange={(event: React.ChangeEvent, checked: boolean) => \r\n handleOnChange(event, checked)}\r\n />\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n {props.label}\r\n \r\n {// tslint:disable-next-line: no-any\r\n state.options.map((option: IAutoCompleteItem | any) => (\r\n \r\n }\r\n value={option.label}\r\n label={option.label} \r\n />\r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport function retrieveEnquirySourceData(\r\n refreshData: boolean,\r\n onSuccess: (data: LeadActionData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void\r\n): void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client\r\n .query({\r\n query: LeadActionDataQuery,\r\n variables: {},\r\n fetchPolicy: fetchPolicy,\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n onError(reason);\r\n });\r\n}\r\n\r\nexport interface LeadActionData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n lookup: Lookup;\r\n}\r\n\r\nexport interface Lookup {\r\n actionTypes: [ActionTypes];\r\n}\r\n\r\nexport interface ActionTypes {\r\n guidId: string;\r\n description: string;\r\n systemAction: string;\r\n systemName: string;\r\n sequence: Number;\r\n notes: string;\r\n url: string | null;\r\n}\r\n\r\nconst LeadActionDataQuery = gql`\r\n query lookupActionTypes{\r\n lookup {\r\n actionTypes {\r\n guidId,\r\n description,\r\n systemAction,\r\n systemName,\r\n sequence,\r\n notes\r\n url\r\n }\r\n }\r\n }\r\n`;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from 'react';\r\nimport {\r\n makeStyles,\r\n Theme,\r\n createStyles,\r\n Grid,\r\n TextField,\r\n Divider\r\n} from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { mainTheme } from '../../Theme';\r\nimport { Field, FieldInputProps, Form, FormSpy } from 'react-final-form';\r\nimport { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport { showNotification } from '../../App';\r\nimport { client } from '../..';\r\nimport { FormApi } from 'final-form';\r\n// import DialogBox from '../../Dashboard/Component/DialogBox';\r\nimport { FollowUp } from './FollowUpDialog';\r\nimport { EnquiryDefaultConfig, FollowUpEnquiryMutation } from '../EnquirySummaryRepository';\r\nimport moment from 'moment';\r\nimport DialogBox from '../../Dashboard/Component/DialogBox';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { EmailTemplateTypeEnum } from '../../emailTemplatesConfiguration/EmailTemplateRespository';\r\nimport { RvLoader } from '../../components/Loader';\r\nimport { TextFieldWithMention } from '../../components/TextFieldWithMention';\r\nimport { OutcomeRadio } from '../radio/OutcomeRadio';\r\nimport { KeyboardDateTimePicker } from '@material-ui/pickers/DateTimePicker/DateTimePicker';\r\nimport { MentionItem } from 'react-mentions';\r\nimport { ReasonSelector } from '../selectors/ReasonSelector';\r\n// import { Editor } from '@tinymce/tinymce-react';\r\nimport { addBusinessDays } from '../drawers/EnquiryFormDrawer';\r\nimport { EditorWrapper } from '../../components/Editor';\r\nimport { ReminderSelector } from '../../components/ReminderSelector';\r\nimport { DropzoneArea } from 'material-ui-dropzone';\r\nimport { DocumentFile } from '../../types/DocumentFile';\r\nimport { useApplicationSettings } from '../../applicationSettings/ApplicationSettingsRepository';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n commendField: {\r\n width: '100%',\r\n },\r\n dialogTitle: {\r\n color: mainTheme.TemplateColor.Primary,\r\n },\r\n dropzone: {\r\n paddingTop: 10,\r\n paddingBottom: 10,\r\n },\r\n matterLabel: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n hideDate: {\r\n display: 'none'\r\n },\r\n divider: {\r\n width: '100%',\r\n },\r\n radioIcon: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n radioGroup: {\r\n flexFlow: 'row wrap',\r\n justifyContent: 'center',\r\n },\r\n selector: {\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n dropZoneFont: { \r\n minHeight: 0,\r\n '& .MuiDropzoneArea-text': {\r\n fontSize: '1em',\r\n }\r\n },\r\n dropZone: {\r\n minHeight: 'fit-content !important' ,\r\n '& .MuiDropzoneArea-root' : {\r\n minHeight: 'fit-content !important'\r\n }\r\n },\r\n })\r\n);\r\n\r\nexport enum ControlType {\r\n quill = 0,\r\n tinyMce = 1\r\n}\r\n\r\ninterface SendEmailState {\r\n isFormChanged: boolean;\r\n showDiscard: boolean;\r\n\r\n emailContent: string;\r\n emailSubject?: string | null;\r\n fromEmailAddress?: string | null;\r\n toEmailAddress?: string | null;\r\n ccEmailAddress?: string | null;\r\n\r\n controlType: ControlType;\r\n emailContentCopy: string;\r\n files: DocumentFile[];\r\n fileSizeLimit: number;\r\n}\r\n\r\nexport interface SendEmailProps {\r\n enquiryGuid: string;\r\n emailTemplateGuid: string;\r\n emailTemplateName: string;\r\n followUpAction: string;\r\n followUpActionSystemName: string;\r\n followUpDate: Date | null;\r\n toEmailAddress: string | null;\r\n fromEmailAddress: string | null;\r\n emailType: EmailTemplateTypeEnum;\r\n\r\n onDialogClose?: () => void;\r\n isSendEmailDialogOpen: boolean;\r\n matter?: IAutoCompleteItem;\r\n enquiryDefaultConfig?: EnquiryDefaultConfig;\r\n canCreateMatter: boolean | undefined;\r\n}\r\n\r\n// tslint:disable-next-line: no-anyW\r\nexport const SendEmailDialog: React.FC = ( props ) => {\r\n const classes = useStyles();\r\n\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const applicationSettingsQuery = useApplicationSettings();\r\n\r\n const [state, setState] = useState({\r\n showDiscard: false,\r\n isFormChanged: false,\r\n\r\n emailContent: '',\r\n emailSubject: null,\r\n fromEmailAddress: null,\r\n toEmailAddress: props.toEmailAddress,\r\n ccEmailAddress: props.fromEmailAddress, // Set the from Email to cc as well. This helps with document management systems\r\n\r\n controlType: ControlType.quill,\r\n emailContentCopy: '',\r\n files: [],\r\n fileSizeLimit: 0,\r\n });\r\n\r\n useEffect(() => {\r\n if (!applicationSettingsQuery.loading && !applicationSettingsQuery.error && applicationSettingsQuery.data) {\r\n\r\n console.log('time', applicationSettingsQuery.data);\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n fileSizeLimit: applicationSettingsQuery.data?.settings.applications.systemOptions.config.emailSizeLimit || 0\r\n }\r\n });\r\n }\r\n }, [applicationSettingsQuery.data, applicationSettingsQuery.loading, applicationSettingsQuery.error]);\r\n\r\n useEffect(() => {\r\n // - Ran only once\r\n setIsLoading(true);\r\n fetchEmailContentData();\r\n \r\n // tslint:disable-next-line: align\r\n }, [props.emailTemplateGuid]);\r\n \r\n const fetchEmailContentData = () => {\r\n var params: EmailDetailQueryParams = {\r\n enquiryGuid: props.enquiryGuid,\r\n emailTemplateGuid: props.emailTemplateGuid,\r\n emailType: EmailTemplateTypeEnum[props.emailType]\r\n };\r\n\r\n fetchEmailContent(\r\n params,\r\n true,\r\n (data: TemplatedData) => {\r\n handleEmailDetailFetch(data);\r\n },\r\n (reason) => {\r\n showNotification('Failed to Fetch App User Settings', reason, 'error');\r\n setIsLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const handleEmailDetailFetch = (data?: TemplatedData) => {\r\n if (\r\n data !== null &&\r\n data?.templates !== undefined &&\r\n data.templates.emailDetail !== undefined\r\n ) {\r\n const emailDetail = data.templates.emailDetail;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n // fromEmailAddress: data.templates.emailDetail.fromAddress,\r\n // toAddresses: emailDetail.toAddresses,\r\n ccAddresses: emailDetail.ccAddresses,\r\n emailType: emailDetail.emailType,\r\n emailStyle: emailDetail.emailStyle,\r\n emailSubject: emailDetail.emailSubject,\r\n emailContent: emailDetail.emailContent,\r\n\r\n emailContentCopy: emailDetail.emailContent,\r\n files: emailDetail.files\r\n };\r\n });\r\n\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const onSubmit = (values: FollowUp) => {\r\n saveFollowUp(values);\r\n };\r\n\r\n // Send email is also a follow up. We send the email at the end of the mutation\r\n const saveFollowUp = (values: FollowUp) => { \r\n // Save the File\r\n client.mutate({\r\n mutation: FollowUpEnquiryMutation,\r\n variables: {\r\n input: getFollowUpEnquiryInput(values)\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any; }) => { \r\n if (results.data) {\r\n if (results.data.error === null || results.data.error === undefined) {\r\n showNotification(null, 'Successfully submitted', 'info'); \r\n\r\n onFollowUpClosed();\r\n } else {\r\n showNotification('Failed to Save Follow up', results.data.error, 'error'); \r\n }\r\n } \r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => { showNotification('Failed to Save Follow up', reason, 'error'); }); \r\n };\r\n\r\n const getFollowUpEnquiryInput = (values: FollowUp) => {\r\n return {\r\n enquiryGuid: props.enquiryGuid,\r\n followUpAction: props.followUpAction,\r\n followUpActionSystemName: props.followUpActionSystemName,\r\n followUpDate: values.followUpDate === null ? moment().toDate() : moment(values.followUpDate).toDate(),\r\n outcome: values.outcome,\r\n outcomeDate: values.outcome === 'New Client' || values.outcome === 'New Matter' || values.outcome === 'Not Proceeding' \r\n ? !values.followUpDate ? null : moment(values.followUpDate).toDate()\r\n : !values.outcomeDate ? null : moment(values.outcomeDate).toDate(),\r\n outcomeNotes: values.outcomeNotes,\r\n reason: values.reason,\r\n reasonGuid: values.reasonGuidID,\r\n followUpNotes: values.followUpNotes,\r\n\r\n sendEmailResponse: true,\r\n emailContent: state.emailContent, // using value.emailContent is giving an issue\r\n emailSubject: values.emailSubject,\r\n emailTemplateName: props.emailTemplateName,\r\n fromEmailAddress: values.fromEmailAddress,\r\n toEmailAddresses: values.toEmailAddress,\r\n ccEmailAddresses: values.ccEmailAddress,\r\n templateGuid: props.emailTemplateGuid,\r\n\r\n reminderOffset: values.outcome === 'More Follow Up'\r\n ? (values.followUpDueReminder ? values.followUpDueReminder.value : null)\r\n : null,\r\n\r\n files: GetFiles(values.files),\r\n };\r\n };\r\n\r\n const GetFiles = (files: DocumentFile[]) => {\r\n return files.map((document: DocumentFile) => {\r\n return {\r\n file: document.file,\r\n name: document.name,\r\n guidID: document.guidID,\r\n status: document.status\r\n };\r\n });\r\n };\r\n\r\n const onFollowUpClosed = () => {\r\n if (props.onDialogClose) {\r\n props.onDialogClose();\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onFormValueChanged = (form: FormApi, changeProps: any) => {\r\n if (!changeProps.pristine) {\r\n form.change('isFormChanged', true);\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormChanged: true\r\n };\r\n });\r\n }\r\n };\r\n\r\n const onClose = () => {\r\n if (state.isFormChanged) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showDiscard: true\r\n };\r\n });\r\n } else {\r\n onFollowUpClosed();\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onDiscardChanges = (agree: boolean) => {\r\n if (agree) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showDiscard: false\r\n };\r\n });\r\n\r\n onFollowUpClosed();\r\n \r\n } else {\r\n // showDiscard false\r\n // form.change('showDiscard', false);\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showDiscard: false\r\n };\r\n });\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const required = (value: any) => {\r\n return value ? undefined : 'Required';\r\n };\r\n\r\n const displayLoader = () => {\r\n if (isLoading) {\r\n // return ;\r\n return (\r\n onClose()}\r\n className={classes.root}\r\n fullWidth={true}\r\n maxWidth=\"md\"\r\n >\r\n \r\n Send Email\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n // tslint:disable-next-line\r\n const emailRegex = /^(([^<>()\\\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n // tslint:disable-next-line: no-any\r\n const EmailValidateWithRequiredNew = (value: any) => {\r\n let error: string = '';\r\n\r\n if (value === undefined || value === null) {\r\n return value ? '' : 'Email is required';\r\n } else if (value.length === 0) {\r\n return value ? '' : 'Email is required'; \r\n } else if (!emailRegex.test(value)) {\r\n error = 'Email is not valid';\r\n }\r\n return error;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const EmailValidate = (value: any) => {\r\n let error: string = '';\r\n\r\n if (value !== undefined && value !== null) {\r\n if (!emailRegex.test(value)) {\r\n error = 'Email is not valid';\r\n }\r\n }\r\n \r\n return error;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const requiredDateValidator = (value: any) => {\r\n if (value) {\r\n // check for a valid date and check for sql's min date\r\n var date = moment(value);\r\n\r\n if (date.isValid() && date.year() >= 1753) {\r\n return undefined;\r\n } else {\r\n return 'Incorrect Date';\r\n }\r\n } else {\r\n return 'Required';\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onOutcomeChange = (form: FormApi, values: any, event: React.ChangeEvent, checked: boolean) => { \r\n const outcome = event && event.currentTarget && event.currentTarget.value ? event.currentTarget.value : '';\r\n form.change('outcome', outcome);\r\n\r\n form.change('reason', null);\r\n form.change('reasonGuid', null);\r\n // if (outcome && !values.outcomeDate) {\r\n // form.change('outcomeDate', values.followUpDate);\r\n // }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onDropdownChange = (selection: IAutoCompleteItem, name: string, input: FieldInputProps, form: FormApi, \r\n valueGuid: string) => {\r\n input.onChange(selection.label.length > 0 ? selection.label : null);\r\n\r\n if (name === 'reason') {\r\n form.change('reasonGuidID', valueGuid.length > 0 \r\n ? valueGuid \r\n : null);\r\n } else if (name === 'notProceedingReason') {\r\n form.change('notProceedingReasonGuid', valueGuid.length > 0 \r\n ? valueGuid \r\n : null);\r\n } \r\n };\r\n\r\n const getReminderValue = () => {\r\n if (props.enquiryDefaultConfig && props.enquiryDefaultConfig.reminder) {\r\n return { label: props.enquiryDefaultConfig.reminder, value: props.enquiryDefaultConfig.reminder };\r\n } else {\r\n return { label: 'None', value: 'None'};\r\n }\r\n };\r\n\r\n const getOutcomeDateDefaultValue = () => {\r\n // check outcome date (FollowUpDue)\r\n let outcomeDate: Date | null = null;\r\n \r\n if (props.enquiryDefaultConfig) {\r\n\r\n let hours = 0;\r\n let minutes = 0;\r\n let validTimeOfDay = false;\r\n \r\n if (props.enquiryDefaultConfig.timeOfDay && props.enquiryDefaultConfig.timeOfDay.toLowerCase() !== 'invalid date') {\r\n var timeOfDaySplit = props.enquiryDefaultConfig.timeOfDay ? props.enquiryDefaultConfig.timeOfDay.split(':') : null;\r\n \r\n if (timeOfDaySplit) {\r\n validTimeOfDay = true;\r\n hours = Number(timeOfDaySplit[0]);\r\n minutes = Number(timeOfDaySplit[1]);\r\n }\r\n } \r\n\r\n if (props.enquiryDefaultConfig.isCalculatedDays) {\r\n let date = addBusinessDays(moment().toDate(), props.enquiryDefaultConfig.addDays ? props.enquiryDefaultConfig.addDays : 0);\r\n \r\n if (validTimeOfDay) {\r\n outcomeDate = date\r\n .set('hour', hours)\r\n .set('minute', minutes)\r\n .toDate();\r\n } else {\r\n outcomeDate = date.toDate();\r\n }\r\n } else if (props.enquiryDefaultConfig.isCalculatedHours) {\r\n let addhours = props.enquiryDefaultConfig.addHours ? props.enquiryDefaultConfig.addHours : 0;\r\n \r\n outcomeDate = moment()\r\n .add(addhours, 'hour')\r\n .toDate();\r\n }\r\n\r\n // Manual default time is set through getOutcomeDefaultTime()\r\n } \r\n\r\n return outcomeDate;\r\n };\r\n\r\n const getOutcomeDefaultTime = () => {\r\n let defaultTime = new Date().setHours(17, 0, 0, 0);\r\n\r\n let hours = 0;\r\n let minutes = 0; \r\n\r\n if (props.enquiryDefaultConfig && props.enquiryDefaultConfig.isManualEntry \r\n && props.enquiryDefaultConfig.timeOfDay && props.enquiryDefaultConfig.timeOfDay.toLowerCase() !== 'invalid date') {\r\n var timeOfDaySplit = props.enquiryDefaultConfig.timeOfDay ? props.enquiryDefaultConfig.timeOfDay.split(':') : null;\r\n\r\n if (timeOfDaySplit) {\r\n hours = Number(timeOfDaySplit[0]);\r\n minutes = Number(timeOfDaySplit[1]);\r\n }\r\n\r\n defaultTime = new Date().setHours(hours, minutes, 0, 0);\r\n } \r\n\r\n return defaultTime;\r\n };\r\n\r\n return (\r\n \r\n {\r\n isLoading || applicationSettingsQuery.loading\r\n ? displayLoader()\r\n : (\r\n true}\r\n subscription={{submitting: true, pristine: true}}\r\n validate={(values) => {\r\n let errors = {\r\n fromEmailAddress: '',\r\n toEmailAddress: '',\r\n ccEmailAddress: ''\r\n };\r\n\r\n if ((!values.fromEmailAddress) \r\n && (!values.toEmailAddress)) {\r\n errors.fromEmailAddress = 'From email address is required';\r\n errors.toEmailAddress = 'To email address is required';\r\n } else if (values\r\n && (values.fromEmailAddress && values.fromEmailAddress.length === 0)\r\n && (values.toEmailAddress && values.toEmailAddress.length === 0)) {\r\n errors.fromEmailAddress = 'From email address is required';\r\n errors.toEmailAddress = 'To email address is required';\r\n } else if (\r\n (values.fromEmailAddress !== undefined && values.fromEmailAddress !== null \r\n && values.fromEmailAddress.length > 0) \r\n || (values.toEmailAddress !== undefined && values.toEmailAddress !== null \r\n && values.toEmailAddress.length > 0) \r\n || (values.ccEmailAddress !== undefined && values.ccEmailAddress !== null \r\n && values.ccEmailAddress.length > 0) \r\n ) {\r\n errors.fromEmailAddress = EmailValidateWithRequiredNew(values.fromEmailAddress);\r\n errors.toEmailAddress = EmailValidateWithRequiredNew(values.toEmailAddress);\r\n errors.ccEmailAddress = EmailValidate(values.ccEmailAddress);\r\n }\r\n \r\n if (errors.fromEmailAddress === '' && errors.toEmailAddress === '' && errors.ccEmailAddress === '') {\r\n return undefined;\r\n }\r\n\r\n return errors;\r\n }}\r\n render={({handleSubmit, form, submitting, pristine, values}) => (\r\n
handleSubmit(event)} id=\"sendEmailDialog\" autoComplete=\"off\">\r\n {displayLoader()}\r\n {\r\n onFormValueChanged(form, props);\r\n }}\r\n /> \r\n \r\n \r\n onClose()}\r\n className={classes.root}\r\n fullWidth={true}\r\n maxWidth=\"md\"\r\n disableEnforceFocus={true}\r\n >\r\n \r\n Send Email\r\n \r\n \r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values }) => (\r\n <>\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n {/* \r\n {\r\n \r\n \r\n // tslint:disable-next-line: max-line-length \r\n } \r\n label=\"Quill\" \r\n />\r\n // tslint:disable-next-line: max-line-length \r\n } \r\n label=\"Jodit\" \r\n />\r\n \r\n \r\n }\r\n \r\n */}\r\n \r\n \r\n {/* {state.controlType === ControlType.quill && (\r\n \r\n {({ input, meta }) => (\r\n {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n emailContent: content\r\n };\r\n });\r\n }} \r\n modules={modules}\r\n // formats={formats}\r\n />\r\n )}\r\n \r\n )}\r\n {state.controlType === ControlType.tinyMce && ( */}\r\n \r\n {({ input, meta }) => (\r\n {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n emailContent: content\r\n };\r\n });\r\n }}\r\n />\r\n // {\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // emailContent: content\r\n // };\r\n // });\r\n // }}\r\n // />\r\n )}\r\n \r\n {/* )} */}\r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n let existingFiles: DocumentFile[] = [...input.value];\r\n const newFiles = files.filter((file: File) => {\r\n return !existingFiles.some((item: DocumentFile) => {\r\n return item.name === file.name && item.status !== 2;\r\n });\r\n });\r\n if (newFiles && newFiles.length > 0) {\r\n newFiles.forEach((file: File) => {\r\n const documentFile: DocumentFile = {\r\n guidID: null,\r\n file: file,\r\n status: 1,\r\n name: file.name,\r\n url: ''\r\n };\r\n existingFiles.push(documentFile);\r\n }); \r\n input.onChange(existingFiles);\r\n }\r\n }}\r\n onDelete={(file: File) => {\r\n let existingFiles: DocumentFile[] = [...input.value];\r\n // eslint-disable-next-line array-callback-return\r\n existingFiles.map((item: DocumentFile) => {\r\n if (file.name === item.name) {\r\n item.file = file;\r\n item.status = 2; // deleted\r\n }\r\n }); \r\n // tslint:disable-next-line: max-line-length\r\n const filteredFiles = existingFiles.filter((item: DocumentFile) => {\r\n return item.status !== 2 || item.guidID !== null;\r\n });\r\n input.onChange(filteredFiles);\r\n }} \r\n // tslint:disable-next-line\r\n onDrop={(files: File[], event: any) => {\r\n // let existingFiles: DocumentFile[] = [...input.value];\r\n // tslint:disable-next-line: max-line-length\r\n // const existingFile = existingFiles.find((item: DocumentFile) => item.name === file)\r\n // tslint:disable-next-line:no-console\r\n console.log(event);\r\n }} \r\n initialFiles={input.value && input.value.map((file: { url: string; }) => file.url)}\r\n />\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(newValue);\r\n if (mentions && mentions.length > 0) {\r\n form.change('hasFollowUpNotesMentions', true);\r\n // tslint:disable-next-line: max-line-length\r\n // If we have mentions, change the Follow Up Action to - Internal Note\r\n // And mark Follow Up Due as not mandatory\r\n form.change('followUpAction', 'Internal Note');\r\n form.change('followUpActionSystemName', 'InternalNote');\r\n } else {\r\n form.change('hasFollowUpNotesMentions', false);\r\n } \r\n }}\r\n isLoadData={true}\r\n onlyUsedByEnquiries={true}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n , checked: boolean) =>\r\n onOutcomeChange(form, values, event, checked)\r\n }\r\n />\r\n \r\n \r\n \r\n {/* Without FormSpy, rules will not update in Realtime */}\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n input.onChange(selection);\r\n }}\r\n error={meta.error && meta.touched}\r\n helperText={\r\n meta.error &&\r\n meta.touched\r\n ? meta.error\r\n : ''\r\n }\r\n showIcon={true}\r\n />\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n {/* Without FormSpy, rules will not update in Realtime */}\r\n \r\n \r\n {({ input, meta }) => (\r\n
\r\n {\r\n // tslint:disable-next-line: max-line-length\r\n onDropdownChange(selection, name, input, form, reasonGuid);\r\n }}\r\n // tslint:disable-next-line: max-line-length\r\n required={form.getFieldState('outcome')?.value === 'Not Proceeding' \r\n ? true : false}\r\n disabled={form.getFieldState('outcome')?.value !== 'Not Proceeding' \r\n ? true : false}\r\n />\r\n
\r\n\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {/* */}\r\n
\r\n \r\n )}\r\n
\r\n \r\n {/* {printJson(values)} */}\r\n \r\n \r\n \r\n {/* tslint:disable-next-line: no-shadowed-variable */}\r\n {({ values, pristine }) => (\r\n <>\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n )}\r\n />\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport interface TemplatedData {\r\n templates: Templates;\r\n}\r\n\r\nexport interface Templates {\r\n emailDetail: EmailDetail;\r\n}\r\n\r\nexport interface EmailDetail {\r\n id: number;\r\n fromAddress: string;\r\n toAddresses: string;\r\n ccAddresses: string;\r\n emailType: number;\r\n emailStyle: number;\r\n emailSubject: string;\r\n emailContent: string;\r\n files: DocumentFile[];\r\n}\r\n\r\nexport interface EmailDetailQueryParams {\r\n emailType: string;\r\n emailTemplateGuid: string;\r\n enquiryGuid: string;\r\n}\r\n\r\nexport function fetchEmailContent(query: EmailDetailQueryParams,\r\n refreshData: boolean, \r\n onSuccess: (data?: TemplatedData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void)\r\n: void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n\r\n client.query({\r\n query: EmailContentData,\r\n variables: {\r\n emailType: query.emailType,\r\n enquiryGuid: query.enquiryGuid,\r\n emailTemplateGuid: query.emailTemplateGuid\r\n },\r\n fetchPolicy: fetchPolicy\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any; }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any ) => { onError(reason); });\r\n}\r\n\r\nexport const EmailContentData = gql`\r\nquery templateWithEmailBodyForEnquiry ($emailType: EmailType, $emailTemplateGuid: String, $enquiryGuid: String) {\r\n templates {\r\n emailDetail (\r\n emailType: $emailType, \r\n emailTemplateGuid: $emailTemplateGuid,\r\n enquiryGuid: $enquiryGuid\r\n ){\r\n id,\r\n fromAddress,\r\n toAddresses,\r\n ccAddresses,\r\n emailType,\r\n emailStyle,\r\n emailSubject,\r\n emailContent,\r\n files {\r\n entityType\r\n guidID\r\n name\r\n url\r\n }\r\n }\r\n }\r\n}`;\r\n\r\n/* \r\n * Quill modules to attach to editor\r\n * See https://quilljs.com/docs/modules/ for complete options\r\n*/\r\n// const modules = {\r\n// toolbar: [\r\n// [{ 'header': '1'}, {'header': '2'}, { 'font': [] }],\r\n// [{size: []}],\r\n// ['bold', 'italic', 'underline', 'strike', 'blockquote'],\r\n// [{'list': 'ordered'}, {'list': 'bullet'}, \r\n// {'indent': '-1'}, {'indent': '+1'}],\r\n// ['link', 'image', 'video'],\r\n// ['clean']\r\n// ],\r\n// clipboard: {\r\n// // toggle to add extra line breaks when pasting HTML:\r\n// matchVisual: false,\r\n// }\r\n// };\r\n\r\n/* \r\n * Quill editor formats\r\n * See https://quilljs.com/docs/formats/\r\n*/\r\n// const formats = [\r\n// 'header', 'font', 'size',\r\n// 'bold', 'italic', 'underline', 'strike', 'blockquote',\r\n// 'list', 'bullet', 'indent',\r\n// 'link', 'image', 'video'\r\n// ];","import { WatchQueryFetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { useMutation } from 'react-apollo';\r\nimport { DocumentFile } from '../../types/DocumentFile';\r\n\r\nexport const useCreateEnquiryMutation = (fetchPolicy?: WatchQueryFetchPolicy) => {\r\n\r\n const [create, result] = useMutation(CreateEnquiryMutation);\r\n\r\n return {...result, create};\r\n};\r\n\r\nexport interface CreateEnquiryInput {\r\n guid?: string;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n gender?: string;\r\n initialEnquiryDate?: Date;\r\n phone?: string;\r\n mobile?: string;\r\n source?: string;\r\n office?: string;\r\n sourceNotes?: string;\r\n organisation?: string;\r\n positionAtOrganisation?: string;\r\n natureOfEnquiry?: string;\r\n areaOfLaw?: string;\r\n internalNotes?: string;\r\n files?: DocumentFile[];\r\n createdDate?: Date;\r\n dateAssigned?: Date;\r\n assignedTo?: string;\r\n followUpDueDate?: Date;\r\n assignedBy?: string;\r\n followUpAction?: string;\r\n followUpActionSystemName?: string;\r\n followUpDate?: Date;\r\n followUpNotes?: string;\r\n outcome?: string;\r\n outcomeDate?: Date;\r\n outcomeNotes?: string;\r\n reason?: string;\r\n reasonGuid?: string;\r\n sendNotification?: boolean;\r\n isKeyOpportunity?: boolean;\r\n reminderOffset?: string;\r\n updateFollowUpDueForInternalNote?: boolean;\r\n referredToFirmName?: string;\r\n referredToFirmGuid?: string;\r\n notProceedingNotes?: string;\r\n referrerGuid?: string;\r\n nameGuid?: string;\r\n organisationGuid?: string;\r\n isUpdateContacts?: boolean;\r\n isSendEnquiryResponse?: boolean;\r\n isMarketingConsent?: boolean;\r\n isTermsAndConditionsApproved?: boolean;\r\n isPrivacyStatementProvided?: boolean;\r\n isConflictCheckPerformed?: boolean;\r\n isIdentityCheckPerformed?: boolean;\r\n isNoConflict?: boolean;\r\n estimatedFees?: number;\r\n isEstimatedFeesIncludesTax?: boolean;\r\n estimatedDisbursements?: number;\r\n isEstimatedDisbursementsIncludesTax?: boolean;\r\n enquiryQuality?: number;\r\n likelihoodToProceed?: number;\r\n dOB?: Date;\r\n clientFirstName?: string;\r\n clientLastName?: string;\r\n addressName?: string;\r\n floor?: string;\r\n number?: string;\r\n street?: string;\r\n suburb?: string;\r\n state?: string;\r\n postcode?: string;\r\n country?: string;\r\n pOBoxType?: string;\r\n pOBox?: string;\r\n postalSuburb?: string;\r\n postalState?: string;\r\n postalPostCode?: string;\r\n postalCountry?: string;\r\n clientAddressStreet2?: string;\r\n clientRelationshipToEnquirer?: string;\r\n enquiryNotes?: string;\r\n otherPartyFirstName?: string;\r\n otherPartyLastName?: string;\r\n otherPartyNotes?: string;\r\n otherPartyOrganisation?: string;\r\n otherPartyEmail?: string;\r\n otherPartyPhone?: string;\r\n otherPartyMobile?: string;\r\n otherPartyDOB?: Date;\r\n otherPartyAddressName?: string;\r\n otherPartyFloor?: string;\r\n otherPartyNumber?: string;\r\n otherPartyStreet?: string;\r\n otherPartyStreet2?: string;\r\n otherPartySuburb?: string;\r\n otherPartyState?: string;\r\n otherPartyPostcode?: string;\r\n otherPartyCountry?: string;\r\n otherPartyPOBoxType?: string;\r\n otherPartyPOBox?: string;\r\n otherPartyPostalSuburb?: string;\r\n otherPartyPostalState?: string;\r\n otherPartyPostalPostCode?: string;\r\n otherPartyPostalCountry?: string;\r\n isImport?: boolean;\r\n isRiskAssessed?: boolean;\r\n riskLevel?: string;\r\n riskNotes?: string;\r\n otherPartyGuid?: string;\r\n otherPartyOrganisationGuid?: string;\r\n secondClientFirstName?: string;\r\n secondClientLastName?: string;\r\n secondClientGuid?: string;\r\n secondClientRelationshipToEnquirer?: string;\r\n secondClientDOB?: Date;\r\n secondClientGender?: string;\r\n secondClientIsMarketingConsent?: boolean;\r\n secondClientIsTermsAndConditionsApproved?: boolean;\r\n secondClientIsPrivacyStatementProvided?: boolean;\r\n secondClientIsConflictCheckPerformed?: boolean;\r\n secondClientIsIdentityCheckPerformed?: boolean;\r\n secondClientIsNoConflict?: boolean;\r\n secondClientAddressName?: string;\r\n secondClientFloor?: string;\r\n secondClientNumber?: string;\r\n secondClientStreet1?: string;\r\n secondClientStreet2?: string;\r\n secondClientSuburb?: string;\r\n secondClientState?: string;\r\n secondClientPostCode?: string;\r\n secondClientCountry?: string;\r\n secondClientPOBoxType?: string;\r\n secondClientPOBox?: string;\r\n secondClientPostalSuburb?: string;\r\n secondClientPostalState?: string;\r\n secondClientPostalPostCode?: string;\r\n secondClientPostalCountry?: string;\r\n isNameFromDataSource?: boolean;\r\n isOrganisationFromDataSource?: boolean;\r\n isOtherSideFromDataSource?: boolean;\r\n isSecondClientFromDataSource?: boolean;\r\n}\r\n\r\ninterface CreateEnquiryMutationParams {\r\n input?: CreateEnquiryInput;\r\n}\r\n\r\nexport interface CreateEnquiryMutationData {\r\n createEnquiry: CreateEnquiry;\r\n}\r\n\r\nexport interface CreateEnquiry {\r\n status: boolean;\r\n error: string;\r\n}\r\n\r\nconst CreateEnquiryMutation = gql`\r\n mutation CreateEnquiry($input: CreateEnquiryInput!) {\r\n createEnquiry(input: $input) {\r\n status\r\n error\r\n }\r\n }\r\n`;"],"sourceRoot":""}