{"version":3,"sources":["webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./app/javascript/src/utils/mixpanel.js","webpack:///./app/javascript/src/utils/array.js","webpack:///./app/javascript/src/actions/types.js","webpack:///./app/javascript/src/reducers/accountEntries.js","webpack:///./app/javascript/src/reducers/documents.js","webpack:///./app/javascript/src/reducers/listings.js","webpack:///./app/javascript/src/reducers/constants.js","webpack:///./app/javascript/src/reducers/organization.js","webpack:///./app/javascript/src/reducers/ownerships.js","webpack:///./app/javascript/src/reducers/owners.js","webpack:///./app/javascript/src/reducers/portfolio.js","webpack:///./app/javascript/src/reducers/tasks.js","webpack:///./app/javascript/src/reducers/users.js","webpack:///./app/javascript/src/reducers/index.js","webpack:///./app/javascript/src/constants/Theme.js","webpack:///./app/javascript/src/utils/date.js","webpack:///./app/javascript/src/actions/api.js","webpack:///./app/javascript/src/actions/portfolio.js","webpack:///./app/javascript/src/actions/accountEntries.js","webpack:///./app/javascript/src/actions/ownerships.js","webpack:///./app/javascript/src/components/AttachDocumentModal.js","webpack:///./app/javascript/src/components/AccountEntries/Table.js","webpack:///./app/javascript/src/components/EditableTable.js","webpack:///./app/javascript/src/components/DocumentPreview.js","webpack:///./app/javascript/src/components/AccountEntries/Show.js","webpack:///./app/javascript/src/components/AccountEntries/CreateForm.js","webpack:///./app/javascript/src/actions/owners.js","webpack:///./app/javascript/src/components/AccountEntries/FilterForm.js","webpack:///./app/javascript/src/components/AccountEntries/MarkAsVoidForm.js","webpack:///./app/javascript/src/components/AccountEntries/AddPaymentForm.js","webpack:///./app/javascript/src/components/AccountEntries/PreviewPdfModal.js","webpack:///./app/javascript/src/components/AccountEntries/PreviewInvoiceModal.js","webpack:///./app/javascript/src/components/AccountEntries/PreviewReceiptModal.js","webpack:///./app/javascript/src/components/AccountEntries/DownloadAccountEntriesModal.js","webpack:///./app/javascript/src/components/AccountEntries/index.js","webpack:///./app/javascript/src/components/EventCalendar.js","webpack:///./app/javascript/src/components/Portfolio/DownloadTenanciesModal.js","webpack:///./app/javascript/src/components/Portfolio/OwnershipWithTransitionContainer.js","webpack:///./app/javascript/src/views/Portfolio/index.js","webpack:///./app/javascript/src/constants/models/Ownership.js","webpack:///./app/javascript/src/utils/ownership.js","webpack:///./app/javascript/src/components/OwnershipCard.js","webpack:///./app/javascript/src/components/Ownerships/CreateForm.js","webpack:///./app/javascript/src/components/QuillEditor.js","webpack:///./app/javascript/src/components/Ownerships/Settings/UpdateSettingsForm.js","webpack:///./app/javascript/src/components/Ownerships/Settings/UpdatePropertyInfoForm.js","webpack:///./app/javascript/src/components/Ownerships/Settings/index.js","webpack:///./app/javascript/src/actions/documents.js","webpack:///./app/javascript/src/components/Documents/CreateForm.js","webpack:///./app/javascript/src/components/Documents/UpdateForm.js","webpack:///./app/javascript/src/components/Documents/List.js","webpack:///./app/javascript/src/components/Documents/FilterForm.js","webpack:///./app/javascript/src/components/Documents/Show.js","webpack:///./app/javascript/src/components/Documents/index.js","webpack:///./app/javascript/src/components/Owners/Show.js","webpack:///./app/javascript/src/components/Owners/List.js","webpack:///./app/javascript/src/components/Owners/FilterForm.js","webpack:///./app/javascript/src/components/Owners/AddOwnerForm.js","webpack:///./app/javascript/src/components/Owners/UpdateForm.js","webpack:///./app/javascript/src/components/Owners/index.js","webpack:///./app/javascript/src/components/OwnershipManagers/List.js","webpack:///./app/javascript/src/components/OwnershipManagers/InviteForm.js","webpack:///./app/javascript/src/components/OwnershipManagers/index.js","webpack:///./app/javascript/src/actions/ownershipManagers.js","webpack:///./app/javascript/src/actions/tasks.js","webpack:///./app/javascript/src/constants/models/Tasks.js","webpack:///./app/javascript/src/components/Tasks/List.js","webpack:///./app/javascript/src/components/Tasks/Show.js","webpack:///./app/javascript/src/utils/uploader.js","webpack:///./app/javascript/src/components/AsyncUpload.js","webpack:///./app/javascript/src/components/Tasks/CreateForm.js","webpack:///./app/javascript/src/components/Tasks/UpdateForm.js","webpack:///./app/javascript/src/components/Tasks/FilterForm.js","webpack:///./app/javascript/src/components/Tasks/index.js","webpack:///./app/javascript/src/actions/tenancies.js","webpack:///./app/javascript/src/components/Tenancies/Show.js","webpack:///./app/javascript/src/components/Tenancies/List.js","webpack:///./app/javascript/src/components/Tenancies/CreateForm.js","webpack:///./app/javascript/src/components/Tenancies/UpdateForm.js","webpack:///./app/javascript/src/components/Tenancies/TerminateTenancyForm.js","webpack:///./app/javascript/src/components/Tenancies/index.js","webpack:///./app/javascript/src/components/OwnershipDetail.js","webpack:///./app/javascript/src/views/Properties/index.js","webpack:///./app/javascript/src/views/Documents/index.js","webpack:///./app/javascript/src/views/Tasks/index.js","webpack:///./app/javascript/src/views/Owners/index.js","webpack:///./app/javascript/src/actions/listings.js","webpack:///./app/javascript/src/constants/models/Listing.js","webpack:///./app/javascript/src/components/Listings/Show.js","webpack:///./app/javascript/src/components/Listings/List.js","webpack:///./app/javascript/src/components/Listings/FilterForm.js","webpack:///./app/javascript/src/actions/propertyAgents.js","webpack:///./app/javascript/src/components/Listings/WhatsappBroadcastForm.js","webpack:///./app/javascript/src/components/Listings/CreateForm.js","webpack:///./app/javascript/src/components/Listings/UpdateForm.js","webpack:///./app/javascript/src/components/Listings/CloseListingForm.js","webpack:///./app/javascript/src/components/Listings/index.js","webpack:///./app/javascript/src/views/Listings/index.js","webpack:///./app/javascript/src/actions/marketData.js","webpack:///./app/javascript/src/components/RepairsData/FilterForm.js","webpack:///./app/javascript/src/components/RepairsData/index.js","webpack:///./app/javascript/src/views/RepairsData/index.js","webpack:///./app/javascript/src/components/Profile/UserProfileEditForm.js","webpack:///./app/javascript/src/components/Profile/UserPasswordUpdateForm.js","webpack:///./app/javascript/src/views/Profile/index.js","webpack:///./app/javascript/src/utils/formatter.js","webpack:///./app/javascript/src/actions/users.js","webpack:///./app/javascript/src/views/NotFound.js","webpack:///./app/javascript/src/views/AuthenticatedRouter.js","webpack:///./app/javascript/src/views/Authentication/LoginForm.js","webpack:///./app/javascript/src/views/Authentication/SignUpForm.js","webpack:///./app/javascript/src/views/Authentication/ForgotPasswordForm.js","webpack:///./app/javascript/src/actions/authentications.js","webpack:///./app/javascript/src/views/UnauthenticatedRouter.js","webpack:///./app/javascript/src/views/index.js","webpack:///./app/javascript/packs/App.js"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","mixpanel","init","actions","identify","alias","track","name","props","people","set","arrayToObject","array","keyAccess","val","reduce","obj","item","CALL_API_REQUEST","CALL_API_SUCCESS","CALL_API_ERROR","CREATE_TASK","initialState","isFetchingAccountEntries","accountEntries","errorFetchingAccountEntries","AccountEntryTypeOptions","isFetching","isUpdating","documents","error","isCreating","creatingError","DocumentTypeOptions","neighbourhoodsById","repairsDataTagsById","ownerships","owners","isFetchingSummaryData","summaryData","errorFetchingSummaryData","isFetchingNetCashFlowData","netCashFlowData","errorFetchingNetCashFlowData","tasks","isAuthenticated","me","combineReducers","accountEntriesReducer","accountEntry","state","action","type","ActionTypes","ArrayUtils","responseData","account_entries","metaData","accountEntryId","account_entry","updateError","documentsReducer","document","documentId","listingsReducer","constantsReducer","organizationReducer","ownershipsReducer","ownership","forEach","ownershipId","fetchOwnershipError","ownersReducer","portfolioReducer","tasksReducer","task","taskId","usersReducer","ThemeColors","LayoutStyle","routerContentStyle","height","backgroundColor","siderTitle","paddingLeft","paddingTop","paddingBottom","marginBottom","formatDate","date","moment","format","formatDateRange","startDate","endDate","API_URL","window","location","origin","API_PATH","onRequestStart","requestType","onRequestSuccess","onRequestError","get","endpoint","params","dispatch","a","axios","method","baseURL","paramsSerializer","qs","stringify","arrayFormat","headers","Accept","response","data","post","put","body","putUpload","FormData","entries","key","value","includes","valueItem","append","postUpload","del","fetchImportantDates","Api","fetchOwnershipsWithTransition","fetchAccountEntries","createAccountEntry","ownership_id","createLineItem","updateLineItem","addPaymentToAccountEntry","fetchOwnershipsWithManagers","fetchOwnershipManagers","createOwnership","values","addOwnershipManager","addOwnerToOwnership","RESET_STATE","isFetchingDocuments","errorFetchingDocuments","AttachDocumentModal","onAttachDocumentSubmit","bind","prevProps","prevState","visible","this","setState","fetchUnprocessedDocuments","then","filter","docList","sort","b","created_at","loading","itemLayout","locale","emptyText","t","dataSource","renderItem","Item","onClick","Meta","avatar","preview_url","style","src","title","doc_type_display_name","description","DateUtils","width","okText","onCancel","confirmLoading","footer","renderList","React","Component","defaultProps","withTranslation","connect","OwnershipActions","AccountEntriesTable","record","items","shouldRender","reconciled_amount","amount","preview_invoice_url","preview_rental_reminder_url","placement","disabled","preview_receipt_url","onItemAction","sorter","pagination","filteredInfo","rest","columns","dataIndex","defaultSortOrder","due_date","AccountEntryStatusOptions","stage","sortOrder","columnKey","order","render","periodStart","period_start_date","periodEnd","period_end_date","fontSize","text","color","outstandingAmount","numeral","aStage","bStage","aeStatusObject","dueDate","now","invoicedSavedTag","invoice_saved_at","Fragment","full_invoice_number","receiptedSavedTag","receipt_saved_at","display","ttextKey","margin","to","overlay","renderActionMenu","showPropertyName","splice","Link","highlightStyle","padding","searchWords","displayName","autoEscape","textToHighlight","rowKey","toString","showTotal","total","range","showSizeChanger","actionKey","EditableContext","createContext","EditableCell","getInput","inputType","minWidth","formatter","replace","parser","renderCell","getFieldDecorator","editing","children","index","restProps","rules","required","message","initialValue","Consumer","EditableTable","isEditing","editingKey","cancel","isCreatingLineItem","form","save","marginRight","onConfirm","edit","validateFields","row","onSaveRecord","onDeleteRecord","components","cell","col","editable","onCell","newItem","editingItems","canAdd","icon","Provider","bordered","rowClassName","EditableFormTable","create","DocumentPreview","target","href","url","textAlign","textDecoration","alt","AccountEntryShow","onSaveLineItem","onDeleteLineItem","newData","account_entry_line_items","findIndex","updateItemState","updateAccountEntryLineItem","success","errorUpdating","createAccountEntryLineItem","deleteAccountEntryLineItem","length","account_entry_payments","payment_date","total_amount","totalAmount","destroyAccountPayment","account_payment_id","account_entry_activity_logs","log","user","paddingRight","user_display_name","note","toLowerCase","fromNow","renderLineItems","renderPayments","span","layout","column","xs","sm","xxl","label","address","bank_name","bank_account_name","bank_account_number","owner","notes","maxHeight","overflowY","renderTimeline","overflowX","whiteSpace","aeId","lineItem","AccountEntryActions","amount_in_cents","Math","round","account_entry_line_item_id","lineItemId","isFetchingOwnerships","ownershipsById","errorFetchingOwnerships","selectedType","CreateForm","resetFields","formItemLayout","labelCol","wrapperCol","placeholder","showSearch","filterOption","inputValue","option","parseInt","notFoundContent","size","Option","onSelect","belongs_to_tenancy","entryType","Group","buttonStyle","Button","step","min","require_period","RangePicker","TextArea","rows","onOk","renderForm","ConnectedCreateForm","WrappedCreateForm","fetchOwners","updateOwner","ownerId","FilterForm","isFetchingOwners","errorFetchingOwners","showAdvancedSearch","onChangeFilter","onSubmit","some","renderChildren","mode","selectedAccountEntryTypes","onChange","accountEntryTypeOption","ranges","subtract","dates","dateStrings","selectedAccountStates","accountEntryStatusOption","selectedOwners","lg","xl","getFormItems","className","gutter","justify","justifyContent","isDirty","OwnersActions","MarkAsVoidForm","entry_type","ConnectedMarkAsVoidForm","WrappedMarkAsVoidForm","AddPaymentForm","abs","ConnectedAddPaymentForm","WrappedAddPaymentForm","PreviewPdfModal","pdfUrl","top","bodyStyle","alignItems","position","containerProps","ViewingOptions","last_saved","last_invoice_url","generate_new","PreviewInvoiceModal","viewing","onSaveNewVersion","previewUrl","displayUrl","last_receipt_url","PreviewReceiptModal","checkedOptions","tenancy","accounts","DownloadEntriesModal","checkedLists","onChangeCheckbox","listName","checkedList","translateOptionLabel","orientation","options","AccountEntries","saveCreateFormRef","formRef","createFormRef","saveMarkAsVoidFormRef","markAsVoidFormRef","saveAddPaymentFormRef","addPaymentFormRef","itemsById","errorFetching","errorCreating","selectedItemId","attachDocumentModalVisible","addPaymentModalVisible","markAsVoidModalVisible","previewInvoiceModalVisible","previewRentalReminderModalVisible","previewReceiptModalVisible","createModalVisible","reference","accountsDateRange","current","pageSize","handleFilterFormSubmit","handleListChange","fetchAccountEntry","onExpandTableRow","onCreateSubmit","onMarkAsVoidSubmit","onAddPaymentSubmit","onSaveNewInvoiceVersion","onSaveNewReceiptVersion","attachDocumentToAccountEntry","filters","ownershipIdFilter","sortField","page","results","getFilterParams","pagy","count","newAccountEntry","updatedAccountEntry","markAsVoidAccountEntry","payment_amount","accountPaymentId","saveNewInvoiceToAccountEntry","saveNewReceiptToAccountEntry","sendAccountEntryInvoice","notification","msg","sendAccountEntryPaymentReminder","sendAccountEntryReceipt","expanded","invoice_number","isBefore","isAfter","getFilteredResults","selectedItem","marginTop","marginLeft","downloadAccountEntriesModalVisible","wrappedComponentRef","DownloadAccountEntriesModal","downloadQs","fieldsToExport","flat","downloadAllUrl","open","renderRentalReminderModal","onExpand","expandedRowRender","onDestroyAccountPayment","direction","account_period","document_id","EVENT_COLOR_MAP","income","expense","br_registration","tenancy_start","tenancy_end","EventCalendar","status","calendarValue","calendarSelectedValue","events","onCalendarPanelChange","onCalendarDateSelect","renderCustomHeader","renderStatusFilter","renderSelectedDateContents","start_date","startOf","end_date","endOf","event","event_holder","content","monthOptions","onTypeChange","yearOptions","clone","localeData","currentYear","year","push","monthsShort","month","i","newYear","String","selectedMonth","newValue","showIcon","dateCellRender","headerRender","onPanelChange","PortfolioActions","currentTenancy","nextTenancy","DownloadTenanciesModal","OwnershipWithTransitionContainer","time_ahead","downloadModalVisible","handleChangeTimePeriod","transition_ownerships","downloadAllTenanciesUrl","renderTable","Portfolio","fetchSummary","fetchNetCashflow","summary","assign","number_of_properties","outstanding_rental_payments_count","outstanding_rental_payments_amount","pending_tasks_count","occupancy_rate","stats","valueStyle","linkTo","prefix","colSpan","floor","card","linkedCard","forceFit","crosshairs","adjust","marginRatio","renderSummaryCards","renderAccountEntries","renderIncomeChart","OwnershipStatusOptions","OwnershipUsageOptions","isNotDefined","OwnershipCard","popoverContainer","alerts","alert","trigger","hoverable","extra","next_payment_due_date","hasFeedback","ownershipUsage","validate","Block","Quill","tagName","register","QuillEditor","UpdateSettingsForm","handleChange","setFieldsValue","invoice_remarks","bank_address","bank_swift_code","include_signature_for_autogenerated","invoice_number_generator","getFieldValue","WrappedUpdateSettingsForm","UpdatePropertyInfoForm","net_sqft","gross_sqft","purchase_price","purchase_date","rent_and_rates_account_number","WrappedUpdatePropertyInfoForm","OwnershipSettings","saveUpdateSettingsFormRef","updateSettingsFormRef","saveUpdateInfoFormRef","updateInfoFormRef","isEditingSettings","isEditingInfo","onSubmitUpdateOwnershipSettings","onSubmitUpdateOwnershipInfo","updateOwnershipSettings","updateOwnershipInfo","settings","titleHelper","is_accounts_managed_by_gv","checkedChildren","unCheckedChildren","checked","borderWidth","borderStyle","dangerouslySetInnerHTML","__html","dompurify","sanitize","info","usage_type","Text","strong","fetchDocuments","updateDocument","fileList","Array","isArray","file","isFormValid","offset","localeCompare","docTypeOption","getValueFromEvent","normFile","multiple","onRemove","beforeUpload","UpdateForm","ownership_name","ownership_address","doc_name","ConnectedUpdateForm","WrappedUpdateForm","DocumentsTable","selectedDocumentTypes","DocumentShow","onClickEdit","onDestroy","isDestroying","Documents","saveUpdateFormRef","updateFormRef","showUpdatingModal","onSelectItem","onUpdateSubmit","onDestroyDocument","itemId","createDocument","newDocument","getSelectedDocument","updatedDocument","errorDestroying","destroyDocument","align","filterDropdown","setSelectedKeys","filterIcon","filtered","onFilter","onFilterDropdownVisibleChange","showComponent","renderShow","selectedDocument","onRow","rowIndex","DocumentsActions","OwnerCard","descriptions","correspondence_address","contact_details","is_company","id_card_number","expiration","br_expiry_date","cert_num","br_cert_number","cert_url","br_cert_url","OwnerList","selectedIsCompany","ownersById","errorfetchingOwners","createNewOwner","createNewOwnerIsCompany","AddOwnerForm","br_file","ownershipOwnersIds","renderCreateNewOwnerForm","renderAddFromPortfolioForm","ConnectedAddOwnerForm","WrappedAddOwnerForm","ConnectedUpdateOwnerForm","WrappedUpdateOwnerForm","Owners","saveAddOwnerFormRef","addOwnerFormRef","updateItemModalVisible","onCreateOwnerRelation","newOwner","getSelectedItem","updatedOwner","renderAddOwner","OwnershipsActions","OwnershipManagersList","onDestroyOwnershipManager","currentUserId","user_id","cancelText","cursor","avatar_url","display_name","role","ownershipManagerId","isFetchingTeamMembers","teamMembersById","errorFetchingTeamMembers","InviteForm","fetchPortfolioTeamMembers","users","teamMember","ownershipOwnershipManagerIds","email","ConnectedInviteForm","WrappedInviteForm","OwnershipManagers","saveInviteFormRef","inviteFormRef","isInviting","errorInviting","inviteModalVisible","onInviteSubmit","ownership_managers","ownership_manager","destroyOwnershipManager","fcWidget","replyText","proptypes","PropTypes","number","isRequired","OwnershipManagerActions","fetchTasks","TaskCategoryOptions","TaskStatusOptions","TasksList","category","assign_to_mypropty","deadline","menuItems","onDestroyTask","menu","onSelectUpdateItem","menuItem","TaskShow","files","attachment_url","attachment_preview_url","deleteTaskAttachment","attachment_id","attachmentId","Uploader","onError","onSuccess","onProgress","upload","DirectUpload","blob","request","addEventListener","directUploadDidProgress","AsyncUpload","fileDataMap","updateFileDataMap","isFileUploading","undefined","uid","newFileDataMap","customRequest","filename","withCredentials","res","blobSignedId","signed_id","uploadFile","handleChangeQuill","fileMetaData","ownershipManagers","assigned_to_user_id","taskCategory","manager","valuePropName","isFetchingOwnershipManagers","errorFetchingOwnershipManagers","owned_by","taskStatus","taskStatusOption","Tasks","onDeleteTaskAttachment","createTask","newTask","selectedTask","getSelectedTask","updateTask","updatedTask","destroyTask","tableLayout","TasksActions","fetchTenancies","createTenancy","updateTenancy","tenancyId","updateTenancyTerminateEarly","TenancyShow","showDocuments","rent_free_start_date","rent_free_end_date","early_termination_date","rental_amount","security_deposit","include_mgmt_fee","include_govt_rates","include_govt_rent","rent_due","official_tenant_email","official_tenant_phone_number","getDescriptionItems","renderDocuments","List","tenancies","sortedTenancies","a_end","b_end","defaultActiveKeys","defaultActiveKey","formattedStartDate","formattedEndDate","formattedFullEndDate","isPast","isFuture","Panel","header","official_tenant_name","onClickAttachDocument","ghost","onClickTerminateEarly","account_payments_url","max","TerminateTenancyForm","disabledDate","ConnectedTerminateTenancyForm","WrappedTerminateTenancyForm","Tenancies","saveTerminateTenancyFormRef","terminateTenancyFormRef","terminateTenancyModalVisible","attachDocumentToTenancy","onTerminateTenancySubmit","contract_period","rent_free_period","newTenancy","updatedTenancy","TenanciesActions","OwnershipDetail","fetchOwnership","logs","tabsData","renderTabElement","renderTabDetail","renderActivityLog","activity_logs","detailHeight","TabPane","tab","ownershipsData","OwnershipUtils","flexDirection","flexWrap","right","shape","onClose","banner","renderTabs","calculateStatus","statusOption","ok","warning","Properties","showCreateOwnershipForm","selectedStatusOptions","onCreateOwnership","fetchOwnerships","Route","path","match","history","filteredOwnerships","isFetchingOwnershipsData","ownershipA","ownershipB","formItems","allOwnerships","renderFilterOwnershipsForm","errorFetchingOwnershipsData","isCreatingOwnership","renderOwnershipsCards","flexGrow","renderOwnershipDetail","errorCreatingOwnership","DocumentsMainView","TasksMainView","OwnersMainView","fetchListings","createListing","broadcastListing","listingId","updateListing","closeListing","ListingTypeOptions","ListingStatusOptions","ListingEventsTableComponent","event_time","property_agent_name","property_agent_mobile","scroll","y","ListingEventsTable","ListingShow","eventTypeTags","ListingEventTypeOptions","listingEventType","selectedListingEventTypeTags","listingEventSummaryRange","handleListingEventTagChange","tag","nextSelectedTags","listing","images","autoplay","image","isRental","listing_type","available_date","agent_path","agent_commission_fixed","sqft_display_text","internal_notes","renderCarousel","onClickUpdate","onClickBroadcast","onClickCloseListing","listingEvents","listing_property_agent_events","filteredEvents","listingEvent","indexOf","event_type_value","event_type_display_name","countEvents","event_type","diff","listingStatistics","closed_at","renderActionButtons","renderDescriptions","CheckableTag","ListingsList","expandIconPosition","listingA","listingB","listingStatusOption","fetchPropertyAgents","WhatsappBroadcastForm","selectedRowKeys","remarksOption","companyName","selectedNeighbourhoods","onSelectChange","property_agents","neighbourhoodId","NeighbourhoodOptions","neighbourhood","agent","agency","selectedIds","actualIds","neighbourhoods","n","rowSelection","okButtonProps","renderFilterForm","abbreviation","renderAdditionFormItems","ConnectedWhatsappBroadcastForm","PropertyAgentActions","WrappedWhatsappBroadcastForm","selectedListingType","onChangeSelectedType","listingType","renderAmountLabel","accept","min_lease_period_in_months","anyFileLoading","CloseListingForm","ConnectedCloseListingForm","WrappedCloseListingForm","Listings","saveBroadcastFormRef","broadcastFormRef","saveCloseListingFormRef","closeListingFormRef","broadcastModalVisible","updateModalVisible","closeListingModalVisible","available","onBroadcastSubmit","onCloseListingSubmit","listings","newListing","selectedPropertyAgentIds","selectedListing","getSelectedListing","property_agent_ids","remarks_option","isBroadcasting","updatedListing","errorBroadcasting","ListingsActions","ListingsRoot","fetchRepairsData","selectedRepairsDataTags","tagOption","RepairsData","repairs_data_items","repairs_data_tags","RepairsDataTagOptions","MarketDataActions","RepairsDataMainView","UserProfileEditForm","first_name","last_name","phone_number","WrappedUserProfileEditForm","confirmDirty","UserPasswordUpdateForm","handleConfirmBlur","compareToFirstPassword","rule","callback","validateToNextPassword","force","Password","validateTrigger","validator","onBlur","WrappedUserPasswordUpdateForm","Profile","saveUpdatePasswordFormRef","updatePasswordFormRef","onUpdateUserProfile","onUpdateUserPassword","updateUserProfile","isUpdatingPassword","updateUserPassword","isEditingPassword","details","phoneNumber","startsWith","substring","renderProfileInfo","borderSpacing","subscribe_weekly_reports","language_preference","i18n","changeLanguage","UserActions","NotFound","routes","ttext","component","AuthenticatedRouter","onCollapse","collapsed","isLoggingOut","onLogout","selected","route","pathname","Sider","collapsible","orgName","theme","selectedKeys","Mixpanel","renderSider","Content","Switch","Redirect","exact","from","csrfToken","querySelector","getAttribute","LoginForm","isLoading","password","remember_me","handleSubmit","onChangeText","err","preventDefault","redirect","locationState","htmlType","WrappedLoginForm","LoginScreen","md","borderColor","SignUpForm","checkBoxIsTrue","tailFormItemLayout","password_confirmation","WrappedSignUpForm","SignUpScreen","ForgotPasswordForm","successMessage","forgotPassword","WrappedForgotPasswordForm","AuthActions","UnauthenticatedRouter","BaseLayout","is_authenticated","withRouter","i18next","interpolation","escapeValue","lng","resources","en","common","common_en","zh","common_zh","localeMap","en_US","zh_TW","Sentry","dsn","AntdApp","language","AntdAppWrapper","App","store","I18nextProvider","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","storeCreator","createStore","appReducer","applyMiddleware","thunkMiddleware","serverData","JSON","parse","getElementById","usersReducerData","initReducerState","accountEntriesInitialState","documentsInitialState","listingsInitialState","constantsInitialState","organizationInitialState","$email","$first_name","$last_name","ReactDOM","appendChild","createElement"],"mappings":"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","file":"js/App-3ceb07bf8f71fd703288.chunk.js","sourcesContent":["var map = {\n\t\"./af\": 288,\n\t\"./af.js\": 288,\n\t\"./ar\": 289,\n\t\"./ar-dz\": 290,\n\t\"./ar-dz.js\": 290,\n\t\"./ar-kw\": 291,\n\t\"./ar-kw.js\": 291,\n\t\"./ar-ly\": 292,\n\t\"./ar-ly.js\": 292,\n\t\"./ar-ma\": 293,\n\t\"./ar-ma.js\": 293,\n\t\"./ar-sa\": 294,\n\t\"./ar-sa.js\": 294,\n\t\"./ar-tn\": 295,\n\t\"./ar-tn.js\": 295,\n\t\"./ar.js\": 289,\n\t\"./az\": 296,\n\t\"./az.js\": 296,\n\t\"./be\": 297,\n\t\"./be.js\": 297,\n\t\"./bg\": 298,\n\t\"./bg.js\": 298,\n\t\"./bm\": 299,\n\t\"./bm.js\": 299,\n\t\"./bn\": 300,\n\t\"./bn-bd\": 301,\n\t\"./bn-bd.js\": 301,\n\t\"./bn.js\": 300,\n\t\"./bo\": 302,\n\t\"./bo.js\": 302,\n\t\"./br\": 303,\n\t\"./br.js\": 303,\n\t\"./bs\": 304,\n\t\"./bs.js\": 304,\n\t\"./ca\": 305,\n\t\"./ca.js\": 305,\n\t\"./cs\": 306,\n\t\"./cs.js\": 306,\n\t\"./cv\": 307,\n\t\"./cv.js\": 307,\n\t\"./cy\": 308,\n\t\"./cy.js\": 308,\n\t\"./da\": 309,\n\t\"./da.js\": 309,\n\t\"./de\": 310,\n\t\"./de-at\": 311,\n\t\"./de-at.js\": 311,\n\t\"./de-ch\": 312,\n\t\"./de-ch.js\": 312,\n\t\"./de.js\": 310,\n\t\"./dv\": 313,\n\t\"./dv.js\": 313,\n\t\"./el\": 314,\n\t\"./el.js\": 314,\n\t\"./en-au\": 315,\n\t\"./en-au.js\": 315,\n\t\"./en-ca\": 316,\n\t\"./en-ca.js\": 316,\n\t\"./en-gb\": 317,\n\t\"./en-gb.js\": 317,\n\t\"./en-ie\": 318,\n\t\"./en-ie.js\": 318,\n\t\"./en-il\": 319,\n\t\"./en-il.js\": 319,\n\t\"./en-in\": 320,\n\t\"./en-in.js\": 320,\n\t\"./en-nz\": 321,\n\t\"./en-nz.js\": 321,\n\t\"./en-sg\": 322,\n\t\"./en-sg.js\": 322,\n\t\"./eo\": 323,\n\t\"./eo.js\": 323,\n\t\"./es\": 324,\n\t\"./es-do\": 325,\n\t\"./es-do.js\": 325,\n\t\"./es-mx\": 326,\n\t\"./es-mx.js\": 326,\n\t\"./es-us\": 327,\n\t\"./es-us.js\": 327,\n\t\"./es.js\": 324,\n\t\"./et\": 328,\n\t\"./et.js\": 328,\n\t\"./eu\": 329,\n\t\"./eu.js\": 329,\n\t\"./fa\": 330,\n\t\"./fa.js\": 330,\n\t\"./fi\": 331,\n\t\"./fi.js\": 331,\n\t\"./fil\": 332,\n\t\"./fil.js\": 332,\n\t\"./fo\": 333,\n\t\"./fo.js\": 333,\n\t\"./fr\": 334,\n\t\"./fr-ca\": 335,\n\t\"./fr-ca.js\": 335,\n\t\"./fr-ch\": 336,\n\t\"./fr-ch.js\": 336,\n\t\"./fr.js\": 334,\n\t\"./fy\": 337,\n\t\"./fy.js\": 337,\n\t\"./ga\": 338,\n\t\"./ga.js\": 338,\n\t\"./gd\": 339,\n\t\"./gd.js\": 339,\n\t\"./gl\": 340,\n\t\"./gl.js\": 340,\n\t\"./gom-deva\": 341,\n\t\"./gom-deva.js\": 341,\n\t\"./gom-latn\": 342,\n\t\"./gom-latn.js\": 342,\n\t\"./gu\": 343,\n\t\"./gu.js\": 343,\n\t\"./he\": 344,\n\t\"./he.js\": 344,\n\t\"./hi\": 345,\n\t\"./hi.js\": 345,\n\t\"./hr\": 346,\n\t\"./hr.js\": 346,\n\t\"./hu\": 347,\n\t\"./hu.js\": 347,\n\t\"./hy-am\": 348,\n\t\"./hy-am.js\": 348,\n\t\"./id\": 349,\n\t\"./id.js\": 349,\n\t\"./is\": 350,\n\t\"./is.js\": 350,\n\t\"./it\": 351,\n\t\"./it-ch\": 352,\n\t\"./it-ch.js\": 352,\n\t\"./it.js\": 351,\n\t\"./ja\": 353,\n\t\"./ja.js\": 353,\n\t\"./jv\": 354,\n\t\"./jv.js\": 354,\n\t\"./ka\": 355,\n\t\"./ka.js\": 355,\n\t\"./kk\": 356,\n\t\"./kk.js\": 356,\n\t\"./km\": 357,\n\t\"./km.js\": 357,\n\t\"./kn\": 358,\n\t\"./kn.js\": 358,\n\t\"./ko\": 359,\n\t\"./ko.js\": 359,\n\t\"./ku\": 360,\n\t\"./ku.js\": 360,\n\t\"./ky\": 361,\n\t\"./ky.js\": 361,\n\t\"./lb\": 362,\n\t\"./lb.js\": 362,\n\t\"./lo\": 363,\n\t\"./lo.js\": 363,\n\t\"./lt\": 364,\n\t\"./lt.js\": 364,\n\t\"./lv\": 365,\n\t\"./lv.js\": 365,\n\t\"./me\": 366,\n\t\"./me.js\": 366,\n\t\"./mi\": 367,\n\t\"./mi.js\": 367,\n\t\"./mk\": 368,\n\t\"./mk.js\": 368,\n\t\"./ml\": 369,\n\t\"./ml.js\": 369,\n\t\"./mn\": 370,\n\t\"./mn.js\": 370,\n\t\"./mr\": 371,\n\t\"./mr.js\": 371,\n\t\"./ms\": 372,\n\t\"./ms-my\": 373,\n\t\"./ms-my.js\": 373,\n\t\"./ms.js\": 372,\n\t\"./mt\": 374,\n\t\"./mt.js\": 374,\n\t\"./my\": 375,\n\t\"./my.js\": 375,\n\t\"./nb\": 376,\n\t\"./nb.js\": 376,\n\t\"./ne\": 377,\n\t\"./ne.js\": 377,\n\t\"./nl\": 378,\n\t\"./nl-be\": 379,\n\t\"./nl-be.js\": 379,\n\t\"./nl.js\": 378,\n\t\"./nn\": 380,\n\t\"./nn.js\": 380,\n\t\"./oc-lnc\": 381,\n\t\"./oc-lnc.js\": 381,\n\t\"./pa-in\": 382,\n\t\"./pa-in.js\": 382,\n\t\"./pl\": 383,\n\t\"./pl.js\": 383,\n\t\"./pt\": 384,\n\t\"./pt-br\": 385,\n\t\"./pt-br.js\": 385,\n\t\"./pt.js\": 384,\n\t\"./ro\": 386,\n\t\"./ro.js\": 386,\n\t\"./ru\": 387,\n\t\"./ru.js\": 387,\n\t\"./sd\": 388,\n\t\"./sd.js\": 388,\n\t\"./se\": 389,\n\t\"./se.js\": 389,\n\t\"./si\": 390,\n\t\"./si.js\": 390,\n\t\"./sk\": 391,\n\t\"./sk.js\": 391,\n\t\"./sl\": 392,\n\t\"./sl.js\": 392,\n\t\"./sq\": 393,\n\t\"./sq.js\": 393,\n\t\"./sr\": 394,\n\t\"./sr-cyrl\": 395,\n\t\"./sr-cyrl.js\": 395,\n\t\"./sr.js\": 394,\n\t\"./ss\": 396,\n\t\"./ss.js\": 396,\n\t\"./sv\": 397,\n\t\"./sv.js\": 397,\n\t\"./sw\": 398,\n\t\"./sw.js\": 398,\n\t\"./ta\": 399,\n\t\"./ta.js\": 399,\n\t\"./te\": 400,\n\t\"./te.js\": 400,\n\t\"./tet\": 401,\n\t\"./tet.js\": 401,\n\t\"./tg\": 402,\n\t\"./tg.js\": 402,\n\t\"./th\": 403,\n\t\"./th.js\": 403,\n\t\"./tk\": 404,\n\t\"./tk.js\": 404,\n\t\"./tl-ph\": 405,\n\t\"./tl-ph.js\": 405,\n\t\"./tlh\": 406,\n\t\"./tlh.js\": 406,\n\t\"./tr\": 407,\n\t\"./tr.js\": 407,\n\t\"./tzl\": 408,\n\t\"./tzl.js\": 408,\n\t\"./tzm\": 409,\n\t\"./tzm-latn\": 410,\n\t\"./tzm-latn.js\": 410,\n\t\"./tzm.js\": 409,\n\t\"./ug-cn\": 411,\n\t\"./ug-cn.js\": 411,\n\t\"./uk\": 412,\n\t\"./uk.js\": 412,\n\t\"./ur\": 413,\n\t\"./ur.js\": 413,\n\t\"./uz\": 414,\n\t\"./uz-latn\": 415,\n\t\"./uz-latn.js\": 415,\n\t\"./uz.js\": 414,\n\t\"./vi\": 416,\n\t\"./vi.js\": 416,\n\t\"./x-pseudo\": 417,\n\t\"./x-pseudo.js\": 417,\n\t\"./yo\": 418,\n\t\"./yo.js\": 418,\n\t\"./zh-cn\": 419,\n\t\"./zh-cn.js\": 419,\n\t\"./zh-hk\": 420,\n\t\"./zh-hk.js\": 420,\n\t\"./zh-mo\": 421,\n\t\"./zh-mo.js\": 421,\n\t\"./zh-tw\": 422,\n\t\"./zh-tw.js\": 422\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 537;","import mixpanel from 'mixpanel-browser';\n\nmixpanel.init(\"65fb070fa66b8d6b857ea69ee1fe43e0\");\n\nconst env_check = process.env.NODE_ENV === 'production';\n\nconst actions = {\n identify: (id) => {\n if (env_check) mixpanel.identify(id);\n },\n alias: (id) => {\n if (env_check) mixpanel.alias(id);\n },\n track: (name, props) => {\n if (env_check) mixpanel.track(name, props);\n },\n people: {\n set: (props) => {\n if (env_check) mixpanel.people.set(props);\n },\n },\n};\n\nexport default actions;\n","import _ from 'underscore';\n\nexport const arrayToObject = (array, keyAccess = (val) => { return val.id }) => {\n return array.reduce((obj, item) => {\n obj[keyAccess(item)] = item;\n return obj;\n }, {});\n};\n\n\nexport const arraysEqual = (arr1, arr2) => {\n return _.isEqual(arr1, arr2);\n}\n","export const CALL_API_REQUEST = 'CALL_API_REQUEST';\nexport const CALL_API_SUCCESS = 'CALL_API_SUCCESS';\nexport const CALL_API_ERROR = 'CALL_API_ERROR';\n\nexport const AUTH_FORGOT_PASSWORD = 'AUTH_FORGOT_PASSWORD';\n\nexport const FETCH_PORTFOLIO_SUMMARY = 'FETCH_PORTFOLIO_SUMMARY';\nexport const FETCH_NET_CASH_FLOW = 'FETCH_NET_CASH_FLOW';\nexport const FETCH_PORTFOLIO_IMPORTANT_DATES = 'FETCH_PORTFOLIO_IMPORTANT_DATES';\nexport const FETCH_OWNERSHIPS_WITH_TRANSITION = 'FETCH_OWNERSHIPS_WITH_TRANSITION';\nexport const FETCH_PORTFOLIO_TEAM_MEMBERS = 'FETCH_PORTFOLIO_TEAM_MEMBERS';\n\nexport const FETCH_OWNERSHIPS = 'FETCH_OWNERSHIPS';\nexport const FETCH_OWNERSHIPS_WITH_MANAGERS = 'FETCH_OWNERSHIPS_WITH_MANAGERS';\nexport const FETCH_OWNERSHIP = 'FETCH_OWNERSHIP';\nexport const CREATE_OWNERSHIP = 'CREATE_OWNERSHIP';\nexport const ADD_OWNERSHIP_MANAGER = 'ADD_OWNERSHIP_MANAGER';\nexport const ADD_OWNER_TO_OWNERSHIP = 'ADD_OWNER_TO_OWNERSHIP';\nexport const FETCH_OWNERSHIP_UNPROCESSED_DOCUMENTS = 'FETCH_OWNERSHIP_UNPROCESSED_DOCUMENTS';\nexport const UPDATE_OWNERSHIP_DETAILS = 'UPDATE_OWNERSHIP_DETAILS';\n\nexport const FETCH_OWNERSHIP_MANAGERS = 'FETCH_OWNERSHIP_MANAGERS';\nexport const DESTROY_OWNERSHIP_MANAGER = 'DESTROY_OWNERSHIP_MANAGER';\n\nexport const FETCH_DOCUMENTS = 'FETCH_DOCUMENTS';\nexport const CREATE_DOCUMENT = 'CREATE_DOCUMENT';\nexport const UPDATE_DOCUMENT = 'UPDATE_DOCUMENT';\nexport const DESTROY_DOCUMENT = 'DESTROY_DOCUMENT';\n\nexport const FETCH_TASKS = 'FETCH_TASKS';\nexport const CREATE_TASK = \"CREATE_TASK\";\nexport const UPDATE_TASK = \"UPDATE_TASK\";\nexport const DESTROY_TASK = \"DESTROY_TASK\";\nexport const DELETE_TASK_ATTACHMENT = 'DELETE_TASK_ATTACHMENT';\n\nexport const FETCH_TENANCIES = 'FETCH_TENANCIES';\nexport const CREATE_TENANCY = 'CREATE_TENANCY';\nexport const UPDATE_TENANCY = 'UPDATE_TENANCY';\nexport const TENANCY_ATTACH_DOCUMENT = 'TENANCY_ATTACH_DOCUMENT';\n\nexport const FETCH_ACCOUNT_ENTRIES = 'FETCH_ACCOUNT_ENTRIES';\nexport const FETCH_ACCOUNT_ENTRY = 'FETCH_ACCOUNT_ENTRY';\nexport const CREATE_ACCOUNT_ENTRY = 'CREATE_ACCOUNT_ENTRY';\nexport const CREATE_ACCOUNT_ENTRY_LINE_ITEM = 'CREATE_ACCOUNT_ENTRY_LINE_ITEM';\nexport const UPDATE_ACCOUNT_ENTRY_LINE_ITEM = 'UPDATE_ACCOUNT_ENTRY_LINE_ITEM';\nexport const DELETE_ACCOUNT_ENTRY_LINE_ITEM = 'DELETE_ACCOUNT_ENTRY_LINE_ITEM';\nexport const ACCOUNT_ENTRY_SEND_INVOICE = 'ACCOUNT_ENTRY_SEND_INVOICE';\nexport const ACCOUNT_ENTRY_SEND_PAYMENT_REMINDER = 'ACCOUNT_ENTRY_SEND_PAYMENT_REMINDER';\nexport const ACCOUNT_ENTRY_SEND_RECEIPT = 'ACCOUNT_ENTRY_SEND_RECEIPT';\nexport const ACCOUNT_ENTRY_ATTACH_DOCUMENT = 'ACCOUNT_ENTRY_ATTACH_DOCUMENT';\nexport const ACCOUNT_ENTRY_ADD_PAYMENT = 'ACCOUNT_ENTRY_ADD_PAYMENT';\nexport const ACCOUNT_ENTRY_MARK_AS_VOID = 'ACCOUNT_ENTRY_MARK_AS_VOID';\nexport const ACCOUNT_ENTRY_SAVE_NEW_INVOICE_VERSION = 'ACCOUNT_ENTRY_SAVE_NEW_INVOICE_VERSION';\nexport const ACCOUNT_ENTRY_SAVE_NEW_RECEIPT_VERSION = 'ACCOUNT_ENTRY_SAVE_NEW_RECEIPT_VERSION';\n\nexport const DESTROY_ACCOUNT_PAYMENT = 'DESTROY_ACCOUNT_PAYMENT';\n\nexport const UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE';\nexport const UPDATE_USER_PASSWORD = 'UPDATE_USER_PASSWORD';\n\nexport const FETCH_OWNERS = 'FETCH_OWNERS';\nexport const UPDATE_OWNER = 'UPDATE_OWNER';\n\nexport const FETCH_LISTINGS = 'FETCH_LISTINGS';\nexport const CREATE_LISTING = 'CREATE_LISTING';\nexport const BROADCAST_LISTING = 'BROADCAST_LISTING';\nexport const UPDATE_LISTING = 'UPDATE_LISTING';\nexport const CLOSE_LISTING = 'CLOSE_LISTING';\n\nexport const FETCH_PROPERTY_AGENTS = 'FETCH_PROPERTY_AGENTS';\n\nexport const FETCH_REPAIRS_DATA = 'FETCH_REPAIRS_DATA';\n","import * as ArrayUtils from '@utils/array';\nimport * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n isFetchingAccountEntries: false,\n accountEntries: {},\n errorFetchingAccountEntries: null,\n AccountEntryTypeOptions: {},\n}\n\nexport default (state = initialState, action) => {\n let accountEntry, accountEntries;\n switch (action.type) {\n case `${ActionTypes.FETCH_ACCOUNT_ENTRIES}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isFetchingAccountEntries: true,\n errorFetchingAccountEntries: null,\n };\n case `${ActionTypes.FETCH_ACCOUNT_ENTRIES}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.DESTROY_ACCOUNT_PAYMENT}_${ActionTypes.CALL_API_SUCCESS}`:\n return {\n ...state,\n isFetchingAccountEntries: false,\n accountEntries: {\n ...state.accountEntries,\n ...ArrayUtils.arrayToObject(action.responseData.account_entries),\n },\n errorFetchingAccountEntries: null,\n };\n case `${ActionTypes.FETCH_ACCOUNT_ENTRIES}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isFetchingAccountEntries: false,\n errorFetchingAccountEntries: action.error,\n };\n case `${ActionTypes.FETCH_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_REQUEST}`:\n accountEntry = state.accountEntries[action.metaData.accountEntryId];\n if (!accountEntry) { return state; }\n return {\n ...state,\n accountEntries: {\n ...state.accountEntries,\n [action.metaData.accountEntryId]: {\n ...accountEntry,\n isFetching: true,\n },\n },\n }\n case `${ActionTypes.FETCH_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_SUCCESS}`:\n accountEntry = { ...action.responseData.account_entry };\n return {\n ...state,\n accountEntries: {\n ...state.accountEntries,\n [action.metaData.accountEntryId] : {\n ...accountEntry,\n },\n },\n };\n case `${ActionTypes.FETCH_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_ERROR}`:\n accountEntry = state.accountEntries[action.metaData.accountEntryId];\n if (!accountEntry) { return state; }\n return {\n ...state,\n accountEntries: {\n ...state.accountEntries,\n [action.metaData.accountEntryId]: {\n ...accountEntry,\n isFetching: false,\n error: action.error,\n },\n },\n };\n case `${ActionTypes.ACCOUNT_ENTRY_MARK_AS_VOID}_${ActionTypes.CALL_API_REQUEST}`:\n accountEntry = state.accountEntries[action.metaData.accountEntryId];\n if (!accountEntry) { return state; }\n return {\n ...state,\n accountEntries: {\n ...state.accountEntries,\n [action.metaData.accountEntryId]: {\n ...accountEntry,\n isUpdating: true,\n },\n },\n }\n case `${ActionTypes.ACCOUNT_ENTRY_MARK_AS_VOID}_${ActionTypes.CALL_API_SUCCESS}`:\n accountEntry = { ...action.responseData.account_entry };\n return {\n ...state,\n accountEntries: {\n ...state.accountEntries,\n [action.metaData.accountEntryId] : {\n ...accountEntry,\n },\n },\n };\n case `${ActionTypes.ACCOUNT_ENTRY_MARK_AS_VOID}_${ActionTypes.CALL_API_ERROR}`:\n accountEntry = state.accountEntries[action.metaData.accountEntryId];\n if (!accountEntry) { return state; }\n return {\n ...state,\n accountEntries: {\n ...state.accountEntries,\n [action.metaData.accountEntryId]: {\n ...accountEntry,\n isUpdating: false,\n updateError: action.error,\n },\n },\n };\n default:\n return state;\n }\n}\n","import * as ArrayUtils from '@utils/array';\nimport * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n isFetching: false,\n isUpdating: false,\n documents: {},\n error: null,\n isCreating: false,\n creatingError: null,\n DocumentTypeOptions: {},\n}\n\nexport default (state = initialState, action) => {\n let document, documents;\n switch (action.type) {\n case `${ActionTypes.FETCH_DOCUMENTS}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n case `${ActionTypes.FETCH_DOCUMENTS}_${ActionTypes.CALL_API_SUCCESS}`:\n return {\n ...state,\n isFetching: false,\n error: null,\n documents: {\n ...state.documents,\n ...ArrayUtils.arrayToObject(action.responseData.documents),\n },\n };\n case `${ActionTypes.FETCH_DOCUMENTS}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isFetching: false,\n error: action.error,\n };\n case `${ActionTypes.CREATE_DOCUMENT}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isCreating: true,\n creatingError: null,\n };\n case `${ActionTypes.CREATE_DOCUMENT}_${ActionTypes.CALL_API_SUCCESS}`:\n document = { ...action.responseData.document };\n return {\n ...state,\n isCreating: false,\n creatingError: null,\n documents: {\n ...state.documents,\n [document.id]: document,\n },\n };\n case `${ActionTypes.CREATE_DOCUMENT}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isCreating: false,\n creatingError: action.error,\n }\n case `${ActionTypes.DESTROY_DOCUMENT}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isUpdating: true,\n error: null,\n };\n case `${ActionTypes.DESTROY_DOCUMENT}_${ActionTypes.CALL_API_SUCCESS}`:\n documents = { ...state.documents };\n delete documents[action.metaData.documentId];\n return {\n ...state,\n isUpdating: false,\n error: null,\n documents: documents,\n };\n case `${ActionTypes.DESTROY_DOCUMENT}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isUpdating: false,\n error: action.error,\n };\n default:\n return state;\n }\n}\n","import * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n default:\n return state;\n }\n}\n","import * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n neighbourhoodsById: {\n },\n repairsDataTagsById: {\n },\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n default:\n return state;\n }\n}\n","import * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n // id\n // name\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n default:\n return state;\n }\n}\n","import * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n isFetching: false,\n ownerships: {},\n error: null,\n isCreating: false,\n creatingError: null,\n};\n\nexport default (state = initialState, action) => {\n let ownership, ownerships;\n switch (action.type) {\n case `${ActionTypes.FETCH_OWNERSHIPS}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n case `${ActionTypes.FETCH_OWNERSHIPS}_${ActionTypes.CALL_API_SUCCESS}`:\n ownerships = { ...state.ownerships };\n action.responseData.ownerships.forEach((ownership) => {\n ownerships[ownership.id] = {\n ...ownerships[ownership.id],\n ...ownership,\n };\n })\n return {\n ...state,\n isFetching: false,\n ownerships: ownerships,\n error: null,\n };\n case `${ActionTypes.FETCH_OWNERSHIPS}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isFetching: false,\n error: action.error,\n };\n case `${ActionTypes.CREATE_OWNERSHIP}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isCreating: true,\n creatingError: null,\n };\n case `${ActionTypes.CREATE_OWNERSHIP}_${ActionTypes.CALL_API_SUCCESS}`:\n ownership = { ...action.responseData.ownership };\n return {\n ...state,\n isCreating: false,\n creatingError: null,\n ownerships: {\n ...state.ownerships,\n [ownership.id]: ownership,\n },\n };\n case `${ActionTypes.CREATE_OWNERSHIP}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isCreating: false,\n creatingError: action.error,\n };\n case `${ActionTypes.FETCH_OWNERSHIP}_${ActionTypes.CALL_API_REQUEST}`:\n ownership = { ...state.ownerships[action.metaData.ownershipId] };\n return {\n ...state,\n ownerships: {\n ...state.ownerships,\n [action.metaData.ownershipId]: {\n ...ownership,\n id: action.metaData.ownershipId,\n isFetching: true,\n },\n },\n };\n case `${ActionTypes.FETCH_OWNERSHIP}_${ActionTypes.CALL_API_SUCCESS}`:\n ownership = { ...action.responseData.ownership };\n return {\n ...state,\n ownerships: {\n ...state.ownerships,\n [ownership.id]: ownership,\n },\n };\n case `${ActionTypes.FETCH_OWNERSHIP}_${ActionTypes.CALL_API_ERROR}`:\n ownership = { ...state.ownerships[action.metaData.ownershipId] };\n return {\n ...state,\n ownerships: {\n ...state.ownerships,\n [action.metaData.ownershipId]: {\n ...ownership,\n id: action.metaData.ownershipId,\n isFetching: false,\n fetchOwnershipError: action.error,\n },\n },\n };\n case `${ActionTypes.ADD_OWNER_TO_OWNERSHIP}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.CREATE_TASK}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.CREATE_TENANCY}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.UPDATE_OWNERSHIP_DETAILS}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.CREATE_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.FETCH_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.ACCOUNT_ENTRY_ATTACH_DOCUMENT}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.ACCOUNT_ENTRY_MARK_AS_VOID}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.ACCOUNT_ENTRY_ADD_PAYMENT}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.CREATE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.UPDATE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.DELETE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_INVOICE_VERSION}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_RECEIPT_VERSION}_${ActionTypes.CALL_API_REQUEST}`:\n ownership = { ...state.ownerships[action.metaData.ownershipId] };\n return {\n ...state,\n ownerships: {\n ...state.ownerships,\n [action.metaData.ownershipId]: {\n ...ownership,\n id: action.metaData.ownershipId,\n isUpdating: true,\n },\n },\n };\n case `${ActionTypes.ADD_OWNER_TO_OWNERSHIP}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.CREATE_TASK}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.CREATE_TENANCY}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.UPDATE_OWNERSHIP_DETAILS}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.CREATE_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.FETCH_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.ACCOUNT_ENTRY_ATTACH_DOCUMENT}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.ACCOUNT_ENTRY_MARK_AS_VOID}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.ACCOUNT_ENTRY_ADD_PAYMENT}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.CREATE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.UPDATE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.DELETE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_INVOICE_VERSION}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_RECEIPT_VERSION}_${ActionTypes.CALL_API_SUCCESS}`:\n ownership = { ...action.responseData.ownership };\n return {\n ...state,\n ownerships: {\n ...state.ownerships,\n [ownership.id]: ownership,\n },\n };\n case `${ActionTypes.ADD_OWNER_TO_OWNERSHIP}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.CREATE_TASK}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.CREATE_TENANCY}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.UPDATE_OWNERSHIP_DETAILS}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.CREATE_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.FETCH_ACCOUNT_ENTRY}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.ACCOUNT_ENTRY_ATTACH_DOCUMENT}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.ACCOUNT_ENTRY_MARK_AS_VOID}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.ACCOUNT_ENTRY_ADD_PAYMENT}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.CREATE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.UPDATE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.DELETE_ACCOUNT_ENTRY_LINE_ITEM}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_INVOICE_VERSION}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_RECEIPT_VERSION}_${ActionTypes.CALL_API_ERROR}`:\n ownership = state.ownerships[action.metaData.ownershipId];\n return {\n ...state,\n ownerships: {\n ...state.ownerships,\n [action.metaData.ownershipId]: {\n ...ownership,\n id: action.metaData.ownershipId,\n isUpdating: false,\n updateError: action.error,\n },\n },\n };\n default:\n return state;\n }\n};\n","import * as ArrayUtils from '@utils/array';\nimport * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n isFetching: false,\n owners: {},\n error: null,\n isCreating: false,\n creatingError: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case `${ActionTypes.FETCH_OWNERS}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n case `${ActionTypes.FETCH_OWNERS}_${ActionTypes.CALL_API_SUCCESS}`:\n return {\n ...state,\n isFetching: false,\n error: null,\n owners: {\n ...state.owners,\n ...ArrayUtils.arrayToObject(action.responseData.owners),\n },\n };\n case `${ActionTypes.FETCH_OWNERS}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isFetching: false,\n error: action.error,\n };\n default:\n return state;\n }\n}\n","import * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n isFetchingSummaryData: false,\n summaryData: {},\n errorFetchingSummaryData: null,\n isFetchingNetCashFlowData: false,\n netCashFlowData: {},\n errorFetchingNetCashFlowData: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case `${ActionTypes.FETCH_PORTFOLIO_SUMMARY}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isFetchingSummaryData: true,\n errorFetchingSummaryData: null,\n };\n case `${ActionTypes.FETCH_PORTFOLIO_SUMMARY}_${ActionTypes.CALL_API_SUCCESS}`:\n return {\n ...state,\n isFetchingSummaryData: false,\n summaryData: action.responseData,\n errorFetchingSummaryData: null,\n };\n case `${ActionTypes.FETCH_PORTFOLIO_SUMMARY}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isFetchingSummaryData: false,\n errorFetchingSummaryData: action.error,\n };\n case `${ActionTypes.FETCH_NET_CASH_FLOW}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isFetchingNetCashFlowData: true,\n errorFetchingNetCashFlowData: null,\n };\n case `${ActionTypes.FETCH_NET_CASH_FLOW}_${ActionTypes.CALL_API_SUCCESS}`:\n return {\n ...state,\n isFetchingNetCashFlowData: false,\n netCashFlowData: action.responseData,\n errorFetchingNetCashFlowData: null,\n };\n case `${ActionTypes.FETCH_NET_CASH_FLOW}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isFetchingNetCashFlowData: false,\n errorFetchingNetCashFlowData: action.error,\n };\n default:\n return state;\n }\n}\n","import * as ArrayUtils from '@utils/array';\nimport * as ActionTypes from '@actions/types';\n\nexport const initialState = {\n isFetching: false,\n tasks: {},\n error: null,\n isCreating: false,\n creatingError: null,\n}\n\nexport default (state = initialState, action) => {\n let task, tasks;\n switch (action.type) {\n case `${ActionTypes.FETCH_TASKS}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n case `${ActionTypes.FETCH_TASKS}_${ActionTypes.CALL_API_SUCCESS}`:\n return {\n ...state,\n isFetching: false,\n tasks: {\n ...state.tasks,\n ...ArrayUtils.arrayToObject(action.responseData.tasks),\n },\n error: null,\n };\n case `${ActionTypes.FETCH_TASKS}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isFetching: false,\n error: action.error,\n };\n case `${ActionTypes.CREATE_TASK}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n isCreating: true,\n creatingError: null,\n };\n case `${ActionTypes.CREATE_TASK}_${ActionTypes.CALL_API_SUCCESS}`:\n task = action.responseData.task;\n return {\n ...state,\n isCreating: false,\n creatingError: null,\n tasks: {\n ...state.tasks,\n [task.id]: task,\n },\n };\n case `${ActionTypes.CREATE_TASK}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n isCreating: false,\n creatingError: action.error,\n };\n case `${ActionTypes.UPDATE_TASK}_${ActionTypes.CALL_API_REQUEST}`:\n case `${ActionTypes.DELETE_TASK_ATTACHMENT}_${ActionTypes.CALL_API_REQUEST}`:\n task = { ...state.tasks[action.metaData.taskId] };\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [action.metaData.taskId]: {\n ...task,\n id: action.metaData.taskId,\n isUpdating: true,\n },\n },\n };\n case `${ActionTypes.UPDATE_TASK}_${ActionTypes.CALL_API_SUCCESS}`:\n case `${ActionTypes.DELETE_TASK_ATTACHMENT}_${ActionTypes.CALL_API_SUCCESS}`:\n task = { ...action.responseData.task };\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [task.id]: task,\n },\n };\n case `${ActionTypes.UPDATE_TASK}_${ActionTypes.CALL_API_ERROR}`:\n case `${ActionTypes.DELETE_TASK_ATTACHMENT}_${ActionTypes.CALL_API_ERROR}`:\n task = { ...state.tasks[action.metaData.taskId] };\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [action.metaData.taskId]: {\n ...task,\n id: action.metaData.taskId,\n isUpdating: false,\n updateError: action.error,\n },\n },\n };\n default:\n return state;\n }\n}\n","import * as ActionTypes from '@actions/types';\nimport * as ArrayUtils from '@utils/array';\n\nexport const initialState = {\n isAuthenticated: false,\n me: {},\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case `${ActionTypes.UPDATE_USER_PROFILE}_${ActionTypes.CALL_API_REQUEST}`:\n return {\n ...state,\n };\n case `${ActionTypes.UPDATE_USER_PROFILE}_${ActionTypes.CALL_API_SUCCESS}`:\n return {\n ...state,\n me: action.responseData.me,\n };\n case `${ActionTypes.UPDATE_USER_PROFILE}_${ActionTypes.CALL_API_ERROR}`:\n return {\n ...state,\n };\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\nimport accountEntriesReducer from './accountEntries';\nimport documentsReducer from './documents';\nimport listingsReducer from './listings';\nimport constantsReducer from './constants';\nimport organizationReducer from './organization';\nimport ownershipsReducer from './ownerships';\nimport ownersReducer from './owners';\nimport portfolioReducer from './portfolio';\nimport tasksReducer from './tasks';\nimport usersReducer from './users';\n\nexport default combineReducers({\n accountEntriesReducer,\n documentsReducer,\n listingsReducer,\n constantsReducer,\n organizationReducer,\n ownershipsReducer,\n ownersReducer,\n portfolioReducer,\n tasksReducer,\n usersReducer,\n});\n","export const ThemeColors = {\n black: 'rgba(0, 0, 0, .65)',\n green: '#3f8600',\n red: '#cf1322',\n orange: 'rgb(248, 172, 47)',\n babyBlue: 'rgb(230, 247, 255)', // matches selected blue color\n darkBlue: 'rgb(1, 21, 40)', // matches the header\n}\n\nexport const LayoutStyle = {\n routerContentStyle: {\n height: '100vh',\n backgroundColor: 'rgb(238, 240, 244)',\n },\n siderTitle: {\n paddingLeft: 24,\n paddingTop: 20,\n paddingBottom: 20,\n marginBottom: 0,\n },\n}\n","import moment from 'moment';\n\nexport const formatDate = (date) => {\n if (!date) {\n return \"\";\n }\n return moment(date).format('Do MMM YYYY')\n}\n\nexport const formatDateRange = (startDate, endDate) => {\n if (!startDate || !endDate) {\n return \"\";\n }\n return `${formatDate(startDate)} - ${formatDate(endDate)}`;\n}\n","import axios from 'axios';\nimport qs from 'qs';\n\nimport * as ActionTypes from '@actions/types';\n\nconst API_URL = `${window.location.origin}`;\nconst API_PATH = `${API_URL}/api/v2`;\n\nconst onRequestStart = (requestType, metaData) => {\n return {\n type: `${requestType}_${ActionTypes.CALL_API_REQUEST}`,\n metaData,\n };\n}\n\nconst onRequestSuccess = (requestType, responseData, metaData) => {\n return {\n type: `${requestType}_${ActionTypes.CALL_API_SUCCESS}`,\n responseData,\n metaData\n };\n}\n\nconst onRequestError = (requestType, error, metaData) => {\n return {\n type: `${requestType}_${ActionTypes.CALL_API_ERROR}`,\n error,\n metaData,\n };\n}\n\nexport const get = (endpoint, requestType, params = {}, metaData = {}) => {\n return async (dispatch) => {\n try {\n dispatch(onRequestStart(requestType, metaData));\n let response = await axios(endpoint, {\n method: 'GET',\n baseURL: `${API_PATH}/`,\n params,\n paramsSerializer: (params) => {\n return qs.stringify(params, { arrayFormat: 'brackets' })\n },\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n const responseData = response.data;\n dispatch(onRequestSuccess(requestType, responseData, metaData));\n return responseData;\n } catch (error) {\n dispatch(onRequestError(requestType, error, metaData));\n throw error;\n }\n }\n}\n\nexport const post = (endpoint, requestType, data = {}, metaData = {}) => {\n return async (dispatch) => {\n try {\n dispatch(onRequestStart(requestType, metaData));\n let response = await axios(endpoint, {\n method: 'POST',\n baseURL: `${API_PATH}/`,\n data,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n const responseData = response.data;\n dispatch(onRequestSuccess(requestType, responseData, metaData));\n return responseData;\n } catch (error) {\n dispatch(onRequestError(requestType, error, metaData));\n throw error;\n }\n }\n}\n\nexport const put = (endpoint, requestType, body = {}, metaData = {}) => {\n return async (dispatch) => {\n try {\n dispatch(onRequestStart(requestType, metaData));\n let response = await axios(endpoint, {\n method: 'PUT',\n baseURL: `${API_PATH}/`,\n data: body,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n const responseData = response.data;\n dispatch(onRequestSuccess(requestType, responseData, metaData));\n return responseData;\n } catch (error) {\n dispatch(onRequestError(requestType, error, metaData));\n throw error;\n }\n }\n}\n\nexport const putUpload = (endpoint, requestType, body = {}, metaData = {}) => {\n return async (dispatch) => {\n const data = new FormData();\n Object.entries(body).forEach(([key, value]) => {\n if (!value) {\n // Ignore null value. multipart-form will submit \"null\" string instead of just null\n return\n }\n if (key.includes('[]')) {\n value.forEach((valueItem) => {\n data.append(key, valueItem);\n });\n } else {\n data.append(key, value);\n }\n });\n try {\n dispatch(onRequestStart(requestType, metaData));\n let response = await axios(endpoint, {\n method: 'PUT',\n baseURL: `${API_PATH}/`,\n data,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n const responseData = response.data;\n dispatch(onRequestSuccess(requestType, responseData, metaData));\n return responseData;\n } catch (error) {\n dispatch(onRequestError(requestType, error, metaData));\n throw error;\n }\n }\n}\n\nexport const postUpload = (endpoint, requestType, body = {}, metaData = {}) => {\n return async (dispatch) => {\n const data = new FormData();\n Object.entries(body).forEach(([key, value]) => {\n if (!value) {\n // Ignore null value. multipart-form will submit \"null\" string instead of just null\n return\n }\n if (key.includes('[]')) {\n value.forEach((valueItem) => {\n data.append(key, valueItem);\n });\n } else {\n data.append(key, value);\n }\n });\n try {\n dispatch(onRequestStart(requestType, metaData));\n let response = await axios(endpoint, {\n method: 'POST',\n baseURL: `${API_PATH}/`,\n data,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n const responseData = response.data;\n dispatch(onRequestSuccess(requestType, responseData, metaData));\n return responseData;\n } catch (error) {\n dispatch(onRequestError(requestType, error, metaData));\n throw error;\n }\n }\n}\n\nexport const del = (endpoint, requestType, params = {}, metaData = {}) => {\n // delete is a protected word in js. use del instead\n return async (dispatch) => {\n try {\n dispatch(onRequestStart(requestType, metaData));\n let response = await axios(endpoint, {\n method: 'DELETE',\n baseURL: `${API_PATH}/`,\n params,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n const responseData = response.data;\n dispatch(onRequestSuccess(requestType, responseData, metaData));\n return responseData;\n } catch (error) {\n dispatch(onRequestError(requestType, error, metaData));\n throw error;\n }\n }\n}\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchSummary = (params = {}) => {\n return Api.get(\n 'portfolio/summary',\n ActionTypes.FETCH_PORTFOLIO_SUMMARY,\n params,\n );\n}\n\nexport const fetchNetCashflow = (params = {}) => {\n return Api.get(\n 'portfolio/net_cash_flow',\n ActionTypes.FETCH_NET_CASH_FLOW,\n params,\n );\n}\n\nexport const fetchImportantDates = (params = {}) => {\n return Api.get(\n 'portfolio/important_dates',\n ActionTypes.FETCH_PORTFOLIO_IMPORTANT_DATES,\n params,\n )\n}\n\nexport const fetchOwnershipsWithTransition = (params = {}) => {\n return Api.get(\n `portfolio/ownerships_with_transition_tenancy`,\n ActionTypes.FETCH_OWNERSHIPS_WITH_TRANSITION,\n params,\n );\n}\n\nexport const fetchPortfolioTeamMembers = (params = {}) => {\n return Api.get(\n `portfolio/team_members`,\n ActionTypes.FETCH_PORTFOLIO_TEAM_MEMBERS,\n params,\n );\n}\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchAccountEntries = (params = {}) => {\n return Api.get(\n 'account_entries',\n ActionTypes.FETCH_ACCOUNT_ENTRIES,\n params,\n );\n}\n\nexport const createAccountEntry = (ownershipId, params = {}) => {\n return Api.post(\n `account_entries`,\n ActionTypes.CREATE_ACCOUNT_ENTRY,\n {\n ...params,\n ownership_id: ownershipId,\n },\n {\n ownershipId,\n }\n )\n}\n\nexport const markAsVoid = (accountEntryId, ownershipId, params = {}) => {\n return Api.post(\n `account_entries/${accountEntryId}/mark_as_void`,\n ActionTypes.ACCOUNT_ENTRY_MARK_AS_VOID,\n params,\n {\n accountEntryId,\n ownershipId,\n }\n );\n}\n\nexport const fetchAccountEntry = (accountEntryId, ownershipId, params = {}) => {\n return Api.get(\n `account_entries/${accountEntryId}`,\n ActionTypes.FETCH_ACCOUNT_ENTRY,\n params,\n {\n accountEntryId,\n ownershipId,\n }\n );\n}\n\nexport const createLineItem = (accountEntryId, ownershipId, params = {}) => {\n return Api.post(\n `account_entries/${accountEntryId}/create_line_item`,\n ActionTypes.CREATE_ACCOUNT_ENTRY_LINE_ITEM,\n params,\n {\n accountEntryId,\n ownershipId,\n }\n )\n}\n\nexport const updateLineItem = (accountEntryId, ownershipId, params = {}) => {\n return Api.post(\n `account_entries/${accountEntryId}/update_line_item`,\n ActionTypes.UPDATE_ACCOUNT_ENTRY_LINE_ITEM,\n params,\n {\n accountEntryId,\n ownershipId,\n }\n )\n}\n\nexport const deleteLineItem = (accountEntryId, ownershipId, params = {}) => {\n return Api.del(\n `account_entries/${accountEntryId}/delete_line_item`,\n ActionTypes.DELETE_ACCOUNT_ENTRY_LINE_ITEM,\n params,\n {\n accountEntryId,\n ownershipId,\n }\n )\n}\n\nexport const sendAccountEntryInvoice = (accountEntryId, params = {}) => {\n return Api.post(\n `account_entries/${accountEntryId}/send_invoice`,\n ActionTypes.ACCOUNT_ENTRY_SEND_INVOICE,\n params,\n {\n accountEntryId,\n }\n );\n}\n\nexport const sendAccountEntryPaymentReminder = (accountEntryId, params = {}) => {\n return Api.post(\n `account_entries/${accountEntryId}/send_payment_reminder`,\n ActionTypes.ACCOUNT_ENTRY_SEND_PAYMENT_REMINDER,\n params,\n {\n accountEntryId,\n }\n );\n}\n\nexport const sendAccountEntryReceipt = (accountEntryId, params = {}) => {\n return Api.post(\n `account_entries/${accountEntryId}/send_receipt`,\n ActionTypes.ACCOUNT_ENTRY_SEND_RECEIPT,\n params,\n {\n accountEntryId,\n }\n );\n}\n\nexport const addPaymentToAccountEntry = (accountEntryId, ownershipId, params = {}) => {\n return Api.post(\n `account_entries/${accountEntryId}/add_payment`,\n ActionTypes.ACCOUNT_ENTRY_ADD_PAYMENT,\n params,\n {\n accountEntryId,\n ownershipId,\n }\n )\n}\n\nexport const attachDocumentToAccountEntry = (accountEntryId, ownershipId, documentId) => {\n return Api.post(\n `account_entries/${accountEntryId}/attach_document`,\n ActionTypes.ACCOUNT_ENTRY_ATTACH_DOCUMENT,\n {\n document_id: documentId,\n },\n {\n accountEntryId,\n ownershipId,\n }\n );\n}\n\nexport const saveNewInvoiceToAccountEntry = (accountEntryId, ownershipId) => {\n return Api.post(\n `account_entries/${accountEntryId}/save_new_generated_invoice_version`,\n ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_INVOICE_VERSION,\n {},\n {\n ownershipId,\n }\n )\n}\n\nexport const saveNewReceiptToAccountEntry = (accountEntryId, ownershipId) => {\n return Api.post(\n `account_entries/${accountEntryId}/save_new_generated_receipt_version`,\n ActionTypes.ACCOUNT_ENTRY_SAVE_NEW_RECEIPT_VERSION,\n {},\n {\n ownershipId,\n }\n )\n}\n\nexport const destroyAccountPayment = (accountPaymentId) => {\n return Api.del(\n `account_payments/${accountPaymentId}`,\n ActionTypes.DESTROY_ACCOUNT_PAYMENT,\n {},\n );\n}\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchOwnerships = (params = {}) => {\n return Api.get(\n `ownerships`,\n ActionTypes.FETCH_OWNERSHIPS,\n params,\n );\n}\n\nexport const fetchOwnershipsWithManagers = (params = {}) => {\n return Api.get(\n `ownerships/index_with_ownership_managers`,\n ActionTypes.FETCH_OWNERSHIPS_WITH_MANAGERS,\n params,\n );\n}\n\nexport const fetchOwnership = (ownershipId, params = {}) => {\n return Api.get(\n `ownerships/${ownershipId}`,\n ActionTypes.FETCH_OWNERSHIP,\n params,\n {\n // metaData\n ownershipId,\n }\n );\n}\n\nexport const fetchOwnershipManagers = (ownershipId, params = {}) => {\n return Api.get(\n `ownerships/${ownershipId}/ownership_managers`,\n ActionTypes.FETCH_OWNERSHIP_MANAGERS,\n params,\n {\n // metaData\n ownershipId,\n }\n );\n}\n\nexport const createOwnership = (values) => {\n return Api.post(\n `ownerships`,\n ActionTypes.CREATE_OWNERSHIP,\n values,\n )\n}\n\nexport const addOwnershipManager = (ownershipId, values) => {\n return Api.post(\n `ownerships/${ownershipId}/add_ownership_manager`,\n ActionTypes.ADD_OWNERSHIP_MANAGER,\n values,\n {\n // metaData\n ownershipId,\n }\n )\n}\n\nexport const addOwnerToOwnership = (ownershipId, values) => {\n return Api.postUpload(\n `ownerships/${ownershipId}/add_owner`,\n ActionTypes.ADD_OWNER_TO_OWNERSHIP,\n {\n ...values,\n ownership_id: ownershipId,\n },\n {\n // metaData\n ownershipId,\n }\n )\n}\n\nexport const fetchUnprocessedDocuments = (ownershipId) => {\n return Api.get(\n `ownerships/${ownershipId}/unprocessed_documents`,\n ActionTypes.FETCH_OWNERSHIP_UNPROCESSED_DOCUMENTS,\n {},\n )\n}\n\nexport const updateOwnershipSettings = (ownershipId, values) => {\n return Api.post(\n `ownerships/${ownershipId}/update_settings`,\n ActionTypes.UPDATE_OWNERSHIP_DETAILS,\n values,\n {\n // metaData\n ownershipId,\n }\n )\n}\n\nexport const updateOwnershipInfo = (ownershipId, values) => {\n return Api.post(\n `ownerships/${ownershipId}/update_property_info`,\n ActionTypes.UPDATE_OWNERSHIP_DETAILS,\n values,\n {\n // metaData\n ownershipId,\n }\n )\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n List,\n Modal,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\nimport * as OwnershipActions from '@actions/ownerships';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingDocuments: false,\n documents: [],\n errorFetchingDocuments: null,\n ...state,\n };\n}\n\nclass AttachDocumentModal extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n ownershipId: PropTypes.number,\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onAttachDocumentSubmit: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n title: \"\",\n visible: false,\n confirmLoading: false,\n onAttachDocumentSubmit: (documentId) => {},\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onAttachDocumentSubmit = this.onAttachDocumentSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n if (!this.props.ownershipId) {\n return\n }\n this.setState({ isFetchingDocuments: true });\n this.props.fetchUnprocessedDocuments(this.props.ownershipId).then((responseData) => {\n this.setState({\n isFetchingDocuments: false,\n documents: responseData.documents,\n });\n }).catch((error) => {\n this.setState({\n isFetchingDocuments: false,\n errorFetchingDocuments: error,\n })\n });\n }\n }\n\n async onAttachDocumentSubmit(documentId) {\n try {\n let responseData = await this.props.onAttachDocumentSubmit(documentId);\n this.setState({\n documents: this.state.documents.filter((document) => document.id !== documentId),\n });\n return responseData;\n } catch(error) {\n return\n }\n }\n\n renderList() {\n const docList = [...this.state.documents];\n docList.sort((a, b) => {\n // Descending order\n return moment(b.created_at) - moment(a.created_at);\n });\n return (\n (\n this.onAttachDocumentSubmit(item.id) }>\n { this.props.t(\"Documents.actions.AttachDocument\") }\n \n ]}\n >\n \n }\n title={ item.doc_type_display_name }\n description={ item.description }\n />\n
{ DateUtils.formatDate(item.date) }
\n \n )}\n />\n )\n }\n\n render() {\n if (!this.props.ownershipId) {\n return null;\n }\n\n return (\n \n { this.renderList() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchUnprocessedDocuments: (ownershipId) => {\n return (dispatch(OwnershipActions.fetchUnprocessedDocuments(ownershipId)));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(AttachDocumentModal));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport {\n Button,\n Dropdown,\n Icon,\n Menu,\n Table,\n Tag,\n Tooltip,\n} from 'antd';\nimport moment from 'moment';\nimport numeral from 'numeral';\nimport Highlighter from 'react-highlight-words';\nimport { withTranslation } from 'react-i18next';\n\nimport { ThemeColors } from '@constants/Theme';\nimport * as DateUtils from '@utils/date';\n\nclass AccountEntriesTable extends React.Component {\n static propTypes = {\n showPropertyName: PropTypes.bool,\n onItemAction: PropTypes.func\n }\n\n static defaultProps = {\n showPropertyName: false,\n onItemAction: (record, actionKey) => {},\n }\n\n constructor(props) {\n super(props);\n }\n\n renderActionMenu(record) {\n let items = [{\n key: \"addPayment\",\n shouldRender: (record) => (record.reconciled_amount !== record.amount),\n renderItem: (record) => { this.props.t(\"AccountEntries.actions.AddPayment\") },\n }, {\n key: \"attachDocument\",\n shouldRender: (record) => true,\n renderItem: (record) => { this.props.t(\"Documents.actions.AttachDocument\") },\n }, {\n key: \"previewInvoice\",\n shouldRender: (record) => record.preview_invoice_url,\n renderItem: (record) => { this.props.t(\"AccountEntries.actions.PreviewInvoice\") },\n }, {\n key: \"sendInvoice\",\n shouldRender: (record) => false && record.can_send_invoice,\n renderItem: (record) => Send Invoice,\n }, {\n key: \"previewOutstandingRentalReminder\",\n shouldRender: (record) => record.preview_rental_reminder_url,\n renderItem: (record) => { this.props.t(\"AccountEntries.actions.PreviewRentReminder\") },\n }, {\n key: \"sendPaymentReminder\",\n shouldRender: (record) => false && record.can_send_payment_reminder,\n renderItem: (record) => (\n \n Send Payment Reminder\n \n ),\n }, {\n key: \"markAsVoid\",\n shouldRender: (record) => (record.state === \"unpaid\"),\n renderItem: (record) => { this.props.t(\"AccountEntries.actions.MarkAsVoid\") },\n disabled: (record.reconciled_amount !== 0),\n }, {\n key: \"previewReceipt\",\n shouldRender: (record) => record.preview_receipt_url,\n renderItem: (record) => { this.props.t(\"AccountEntries.actions.PreviewReceipt\") },\n }, {\n key: \"sendReceipt\",\n shouldRender: (record) => false && (record.can_send_receipt),\n renderItem: (record) => Send Receipt,\n }];\n\n\n return (\n this.props.onItemAction(record, key) }\n >\n {\n items.filter(({ shouldRender }) => !!shouldRender(record)).map(({ key, renderItem, disabled = false }) => (\n \n { renderItem(record ) }\n \n ))\n }\n \n )\n }\n\n render() {\n const { sorter, pagination, filteredInfo, ...rest } = this.props;\n let columns = [{\n title: this.props.t(\"shared.Date\"),\n dataIndex: 'due_date',\n key: 'date',\n defaultSortOrder: 'descend',\n sorter: (a, b) => {\n if (a.due_date !== b.due_date) {\n return (moment(a.due_date) - moment(b.due_date));\n }\n const aStage = this.props.AccountEntryStatusOptions[a.state].stage || 0;\n const bStage = this.props.AccountEntryStatusOptions[b.state].stage || 0;\n return (aStage - bStage);\n },\n sortOrder: sorter.columnKey === 'date' && sorter.order,\n render: (date, record) => {\n const dueDate = DateUtils.formatDate(date);\n const periodStart = record.period_start_date ? DateUtils.formatDate(record.period_start_date) : null;\n const periodEnd = record.period_end_date ? DateUtils.formatDate(record.period_end_date) : null;\n return (\n
\n { DateUtils.formatDate(date) }\n

\n { periodStart && periodEnd && `${periodStart} - ${periodEnd}`}\n
\n )\n },\n }, {\n title: this.props.t(\"shared.Type\"),\n dataIndex: 'entry_type',\n key: 'type',\n render: (type) => this.props.AccountEntryTypeOptions[type].text,\n }, {\n title: this.props.t(\"shared.Amount\"),\n dataIndex: 'amount',\n key: 'amount',\n sorter: (a, b) => {\n if (a.amount !== b.amount) {\n return (a.amount - b.amount)\n }\n const aStage = this.props.AccountEntryStatusOptions[a.state].stage || 0;\n const bStage = this.props.AccountEntryStatusOptions[b.state].stage || 0;\n return (aStage - bStage);\n },\n sortOrder: sorter.columnKey === 'amount' && sorter.order,\n render: (amount, record) => {\n const color = (amount < 0) ? ThemeColors.red : ThemeColors.green;\n const outstandingAmount = (amount - record.reconciled_amount);\n return (\n
\n

\n { numeral(amount).format('($0,0.[00])') }\n

\n {\n (outstandingAmount !== 0) ? (\n

\n { this.props.t(\"AccountEntries.OutstandingAmount\") }: { numeral(outstandingAmount).format('($0,0.[00])') }\n

\n ) : null\n }\n
\n )\n }\n }, {\n title: this.props.t(\"shared.Status\"),\n dataIndex: 'state',\n key: 'state',\n sorter: (a, b) => {\n const aStage = this.props.AccountEntryStatusOptions[a.state].stage || 0;\n const bStage = this.props.AccountEntryStatusOptions[b.state].stage || 0;\n if (aStage !== bStage) {\n return (aStage - bStage);\n }\n return (moment(b.due_date) - moment(a.due_date))\n },\n sortOrder: sorter.columnKey === 'state' && sorter.order,\n render: (state, record) => {\n const aeStatusObject = this.props.AccountEntryStatusOptions[state];\n const color = aeStatusObject.color || 'red';\n const dueDate = moment(record.due_date);\n const now = moment();\n\n const invoicedSavedTag = (record.invoice_saved_at) ? (\n \n

\n \n \n { this.props.t(\"AccountEntries.InvoiceSaved\") }\n \n \n
\n ) : null\n const receiptedSavedTag = (record.receipt_saved_at) ? (\n \n

\n \n \n { this.props.t(\"AccountEntries.ReceiptSaved\") }\n \n \n
\n ) : null\n return (\n
\n
\n \n { this.props.t(aeStatusObject.ttextKey) }\n \n {\n ((aeStatusObject.value == 'unpaid') && (dueDate < now)) ? (\n

\n { now.to(dueDate, true) }\n

\n ) : null\n }\n
\n { invoicedSavedTag }\n { receiptedSavedTag }\n
\n )\n },\n }, {\n title: this.props.t(\"shared.Action\"),\n key: 'action',\n render: (text, record) => (\n this.renderActionMenu(record) }>\n \n \n ),\n }];\n\n if (this.props.showPropertyName) {\n columns.splice(1, 0, {\n title: this.props.t(\"Properties.Property\"),\n dataIndex: 'ownership.name',\n key: 'property',\n // TODO: https://ant.design/components/table/\n // customized filter panel (allows you to use a search input)\n render: (name, record) => (\n \n \n \n ),\n });\n }\n\n return (\n record.id.toString() }\n columns={ columns }\n sorter={ sorter }\n pagination={{\n ...pagination,\n showTotal: (total, range) => `${range[0]}-${range[1]} of ${total} items`,\n showSizeChanger: true,\n }}\n { ...rest }\n />\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryStatusOptions: state.accountEntriesReducer.AccountEntryStatusOptions,\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(AccountEntriesTable));\n","// NOTE: This is mostly a duplicate of the EditableTable defined in antd docs\n// diff:\n// pagination { onChange: this.cancel } => { false }\n// EditableCell - can allow for number/currency/else\n// operation/Operation => action/Action\n// columns are now defined using props.columns\n// age => amount (for the cell inputType)\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n Form,\n Input,\n InputNumber,\n Popconfirm,\n Table,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nconst NEW_ITEM_KEY = 'new_';\n\nconst EditableContext = React.createContext();\n\nclass EditableCell extends React.Component {\n getInput = () => {\n if (this.props.inputType === 'number') {\n return ;\n }\n if (this.props.inputType === 'currency') {\n return (\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )\n }\n return ;\n };\n\n renderCell = ({ getFieldDecorator }) => {\n const {\n editing,\n dataIndex,\n title,\n inputType,\n record,\n index,\n children,\n ...restProps\n } = this.props;\n return (\n \n {editing ? (\n \n {getFieldDecorator(dataIndex, {\n rules: [\n {\n required: true,\n message: `Please Input ${title}!`,\n },\n ],\n initialValue: record[dataIndex],\n })(this.getInput())}\n \n ) : (\n children\n )}\n \n );\n };\n\n render() {\n return {this.renderCell};\n }\n}\n\nclass EditableTable extends React.Component {\n static propTypes = {\n dataSource: PropTypes.array,\n columns: PropTypes.array,\n onSaveRecord: PropTypes.func.isRequired,\n onDeleteRecord: PropTypes.func.isRequired,\n canAdd: PropTypes.bool,\n title: PropTypes.node,\n }\n static defaultProps = {\n dataSource: [],\n columns: [],\n onSaveRecord: (key, row) => {},\n onDeleteRecord: (key) => {},\n canAdd: false,\n title: null,\n }\n\n constructor(props) {\n super(props);\n this.state = {\n editingKey: null,\n isCreatingLineItem: false,\n };\n\n this.columns = [...props.columns, {\n title: this.props.t(\"shared.Action\"),\n dataIndex: 'action',\n render: (text, record) => {\n const { editingKey } = this.state;\n const editable = this.isEditing(record);\n return editable ? (\n \n \n {form => (\n this.save(form, record.id)}\n style={{ marginRight: 8 }}\n >\n Save\n \n )}\n \n this.cancel(record.id)}>\n Cancel\n \n \n ) : (\n \n this.edit(record.id)}\n style={{ marginRight: 8 }}\n >\n Edit\n \n this.delete(record.id)}>\n \n Delete\n \n \n \n );\n },\n }];\n }\n\n isEditing = record => record.id === this.state.editingKey;\n\n cancel = (key) => {\n if (key === NEW_ITEM_KEY) {\n this.setState({\n isCreatingLineItem: false,\n });\n }\n this.setState({ editingKey: null });\n };\n\n async save(form, key) {\n let row;\n try {\n row = await form.validateFields();\n } catch(error) {\n return\n }\n try {\n const responseData = await this.props.onSaveRecord(key, row);\n this.setState({\n editingKey: null,\n isCreatingLineItem: false,\n });\n } catch(error) {\n return\n }\n }\n\n async delete(key) {\n try {\n const responseData = await this.props.onDeleteRecord(key);\n } catch(error) {\n return\n }\n }\n\n edit(key) {\n this.setState({ editingKey: key });\n }\n\n render() {\n const components = {\n body: {\n cell: EditableCell,\n },\n };\n\n const columns = this.columns.map(col => {\n if (!col.editable) {\n return col;\n }\n return {\n ...col,\n onCell: record => ({\n record,\n inputType: col.inputType,\n dataIndex: col.dataIndex,\n title: col.title,\n editing: this.isEditing(record),\n }),\n };\n });\n\n let newItem = {}\n columns.forEach((col) => newItem[col.key] = '');\n newItem['id'] = NEW_ITEM_KEY;\n\n const editingItems = (this.state.isCreatingLineItem) ? [newItem] : [];\n const dataSource = [\n ...this.props.dataSource,\n ...editingItems,\n ]\n return (\n
\n { this.props.title }\n {\n this.props.canAdd ? (\n this.setState({ isCreatingLineItem: true, editingKey: newItem['id'] }) }\n disabled={ this.state.isCreatingLineItem }\n >\n { this.props.t(\"actions.Add\") }\n \n ) : null\n }\n \n item.id.toString() }\n components={components}\n bordered\n dataSource={ dataSource }\n columns={ columns }\n rowClassName=\"editable-row\"\n loading={ this.props.loading }\n pagination={ false }\n />\n \n
\n );\n }\n}\n\nconst EditableFormTable = Form.create()(EditableTable);\nexport default withTranslation('common')(EditableFormTable);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nclass DocumentPreview extends React.Component {\n static propTypes = {\n document: PropTypes.shape({\n id: PropTypes.number,\n url: PropTypes.string,\n preview_url: PropTypes.string,\n doc_type_display_name: PropTypes.string,\n }).isRequired,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { document } = this.props;\n return (\n \n {\n (document.preview_url) && (\n
\n \n

\n
\n )\n }\n { document.doc_type_display_name }\n \n )\n }\n}\n\nexport default DocumentPreview;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Col,\n Descriptions,\n Icon,\n message,\n Popconfirm,\n Row,\n Table,\n Timeline,\n} from 'antd';\n\nimport moment from 'moment';\nimport numeral from 'numeral';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\nimport * as AccountEntryActions from '@actions/accountEntries';\nimport EditableTable from '@components/EditableTable';\nimport DocumentPreview from '@components/DocumentPreview';\n\nclass AccountEntryShow extends React.Component {\n static propTypes = {\n showPropertyName: PropTypes.bool,\n accountEntry: PropTypes.shape({\n id: PropTypes.number.isRequired,\n }),\n updateItemState: PropTypes.func.isRequired,\n destroyAccountPayment: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n showPropertyName: false,\n updateItemState: (newItem) => {},\n }\n\n constructor(props) {\n super(props);\n this.onSaveLineItem = this.onSaveLineItem.bind(this);\n this.onDeleteLineItem = this.onDeleteLineItem.bind(this);\n }\n\n async onSaveLineItem(key, row) {\n const { accountEntry } = this.props;\n const newData = [...accountEntry.account_entry_line_items];\n const index = newData.findIndex(item => key === item.id);\n if (index > -1) {\n const item = {\n ...newData[index],\n ...row,\n };\n try {\n this.props.updateItemState({\n ...accountEntry,\n isUpdating: true,\n })\n const responseData = await this.props.updateAccountEntryLineItem(accountEntry.id, accountEntry.ownership_id, item);\n this.props.updateItemState(responseData.account_entry);\n message.success(this.props.t(\"AccountEntries.messages.UpdateLineItem.Success\"));\n return responseData;\n } catch (error) {\n this.props.updateItemState({\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n })\n message.error(this.props.t(\"AccountEntries.messages.UpdateLineItem.Fail\"));\n throw error;\n }\n } else {\n try {\n this.props.updateItemState({\n ...accountEntry,\n isUpdating: true,\n });\n const responseData = await this.props.createAccountEntryLineItem(accountEntry.id, accountEntry.ownership_id, row);\n this.props.updateItemState(responseData.account_entry);\n message.success(this.props.t(\"AccountEntries.messages.CreateLineItem.Success\"));\n return responseData;\n } catch(error) {\n this.props.updateItemState({\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"AccountEntries.messages.CreateLineItem.Fail\"));\n throw error;\n }\n }\n }\n\n async onDeleteLineItem(key) {\n const { accountEntry } = this.props;\n try {\n this.props.updateItemState({\n ...accountEntry,\n isUpdating: true,\n })\n const responseData = await this.props.deleteAccountEntryLineItem(accountEntry.id, accountEntry.ownership_id, key);\n this.props.updateItemState(responseData.account_entry);\n message.success(this.props.t(\"AccountEntries.messages.DestroyLineItem.Success\"));\n return responseData;\n } catch (error) {\n this.props.updateItemState({\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n })\n message.error(this.props.t(\"AccountEntries.messages.DestroyLineItem.Fail\"));\n throw error;\n }\n }\n\n renderLineItems(accountEntry) {\n if ((accountEntry.account_entry_line_items || []).length === 0) {\n return null\n }\n\n return (\n \n { this.props.t(\"AccountEntries.LineItems\") } }\n columns={[{\n title: this.props.t(\"AccountEntries.LineItemType\"),\n dataIndex: 'item_type',\n inputType: 'string',\n key: 'item_type',\n editable: true,\n }, {\n title: this.props.t(\"shared.Description\"),\n dataIndex: 'description',\n inputType: 'string',\n key: 'description',\n editable: true,\n }, {\n title: this.props.t(\"shared.Amount\"),\n dataIndex: 'amount',\n inputType: 'currency',\n key: 'amount',\n editable: true,\n render: (amount) => numeral(amount).format('($0,0.[00])'),\n }]}\n />\n \n )\n }\n\n renderPayments(accountEntry) {\n if ((accountEntry.account_entry_payments || []).length === 0 && accountEntry.isFetching) {\n return null\n }\n\n return (\n \n

{ this.props.t(\"AccountEntries.CompletedPayments\")}

\n record.id }\n loading={ accountEntry.isFetching || accountEntry.isUpdating }\n dataSource={ accountEntry.account_entry_payments }\n pagination={ false }\n locale={{ emptyText: ({ this.props.t(\"AccountEntries.NoPayments\") })}}\n columns={[{\n title: this.props.t(\"AccountEntries.PaymentDate\"),\n dataIndex: 'payment_date',\n key: 'payment_date',\n render: (payment_date) => DateUtils.formatDate(payment_date),\n }, {\n title: this.props.t(\"AccountEntries.Reference\"),\n dataIndex: 'reference_number',\n key: 'reference_number',\n }, {\n title: this.props.t(\"AccountEntries.PaymentAmount\"),\n dataIndex: 'total_amount',\n key: 'total_amount',\n render: (total_amount, record) => {\n const totalAmount = numeral(total_amount).format('($0,0.[00])')\n if (total_amount === record.reconciled_amount) {\n return totalAmount\n }\n return `${numeral(record.reconciled_amount).format('($0,0.[00])')} of total: ${totalAmount}`;\n },\n }, {\n title: this.props.t(\"shared.Notes\"),\n dataIndex: 'note',\n key: 'note',\n // }, {\n // title: 'Attachment',\n // dataIndex: 'attachment',\n // key: 'attachment',\n }, {\n title: this.props.t(\"shared.Action\"),\n dataIndex: 'action',\n key: 'action',\n render: (actions, record) => {\n return (\n this.props.destroyAccountPayment(record.account_payment_id)}>\n Delete\n \n )\n },\n }]}\n />\n
\n )\n }\n\n renderTimeline(accountEntry) {\n return (\n \n {\n (accountEntry.account_entry_activity_logs || []).map((log) => {\n const user = ({ log.user_display_name });\n let color = \"blue\";\n if (log.note.toLowerCase().includes(\"added\")) {\n color = \"green\";\n } else if (log.note.toLowerCase().includes(\"removed\")) {\n color = \"red\";\n }\n return (\n \n { user } { log.note }\n
\n { moment(log.created_at).fromNow() }\n \n )\n })\n }\n
\n )\n }\n\n render() {\n const { accountEntry } = this.props;\n return (\n
\n { this.renderLineItems(accountEntry) }\n { this.renderPayments(accountEntry) }\n \n \n \n {\n (accountEntry.period_start_date && accountEntry.period_end_date && (\n { this.props.t(\"AccountEntries.Period\") } }>\n { DateUtils.formatDate(accountEntry.period_start_date) } - { DateUtils.formatDate(accountEntry.period_end_date) }\n \n ))\n }\n {\n (this.props.showPropertyName && (\n { this.props.t(\"Properties.Address\") } }>\n { accountEntry.ownership.address }\n \n ))\n }\n { this.props.t(\"AccountEntries.BankDetails\") } }>\n { accountEntry.ownership.bank_name }\n
\n { accountEntry.ownership.bank_account_name }\n
\n { accountEntry.ownership.bank_account_number }\n
\n {\n (accountEntry.owners && accountEntry.owners.length > 0 && (\n { this.props.t(\"Owners.Title\") } }>\n { (accountEntry.owners).map((owner) => owner.name) }\n \n ))\n }\n {\n (accountEntry.notes && (\n { this.props.t(\"shared.Notes\") } }>\n { accountEntry.notes }\n \n ))\n }\n \n \n \n
\n { (accountEntry.isFetching || accountEntry.isUpdating) && }\n { this.renderTimeline(accountEntry) }\n
\n \n
\n \n \n
\n {\n (accountEntry.documents || []).map((document, index) => (\n \n ))\n }\n
\n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n createAccountEntryLineItem: (aeId, ownershipId, lineItem = {}) => {\n const { amount, ...rest } = lineItem;\n return dispatch(AccountEntryActions.createLineItem(aeId, ownershipId, {\n amount_in_cents: Math.round(amount * 100),\n ...rest,\n }));\n },\n updateAccountEntryLineItem: (aeId, ownershipId, lineItem = {}) => {\n const { id, amount, ...rest } = lineItem;\n return dispatch(AccountEntryActions.updateLineItem(aeId, ownershipId, {\n account_entry_line_item_id: id,\n amount_in_cents: Math.round(amount * 100),\n ...rest\n }));\n },\n deleteAccountEntryLineItem: (aeId, ownershipId, lineItemId) => {\n return dispatch(AccountEntryActions.deleteLineItem(aeId, ownershipId, {\n account_entry_line_item_id: lineItemId,\n }));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(AccountEntryShow));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n DatePicker,\n Form,\n Input,\n InputNumber,\n Modal,\n Radio,\n Select,\n Spin,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport { ThemeColors } from '@constants/Theme';\nimport * as OwnershipActions from '@actions/ownerships';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingOwnerships: false,\n ownershipsById: {},\n errorFetchingOwnerships: null,\n selectedType: null,\n ...state,\n };\n}\n\nclass CreateForm extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number,\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n this.setState({ isFetchingOwnerships: true });\n let params = (this.props.ownershipId) ? { ownership_id: this.props.ownershipId } : {};\n this.props.fetchOwnershipsWithManagers(params).then((responseData) => {\n this.setState({\n isFetchingOwnerships: false,\n ownershipsById: {\n ...ArrayUtils.arrayToObject(responseData.ownerships),\n },\n });\n }).catch((error) => {\n this.setState({\n isFetchingOwnerships: false,\n errorFetchingOwnerships: error,\n })\n });\n }\n }\n\n renderForm() {\n const { getFieldDecorator } = this.props.form;\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 }\n };\n\n return (\n
\n \n {getFieldDecorator(\"ownership_id\", {\n rules: [{\n required: true,\n message: `${ this.props.t(\"Properties.messages.Form.PleaseSelectProperty\") }!`,\n }],\n })(\n 5) }\n filterOption={ (inputValue, option) => {\n const ownershipId = parseInt(option.key);\n const ownership = this.state.ownershipsById[ownershipId];\n if (ownership.name.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n if (ownership.address.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n return false;\n }}\n notFoundContent={\n this.state.isFetchingOwnerships ? : null\n }\n >\n {\n Object.values(this.state.ownershipsById).map((ownership) => (\n \n { ownership.name }. { ownership.address }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator(\"entry_type\", {\n rules: [{\n required: true,\n message: `${ this.props.t(\"messages.Form.PleaseSelectType\") }!`,\n }]\n })(\n {\n this.setState({ selectedType: this.props.AccountEntryTypeOptions[key] })\n }}\n >\n {Object.values(this.props.AccountEntryTypeOptions).filter((option) => !option.belongs_to_tenancy).map(entryType => (\n \n {entryType.text}\n \n ))}\n \n )}\n \n \n {getFieldDecorator('direction', {\n rules: [{\n required: true,\n message: `${ this.props.t(\"AccountEntries.messages.Form.PleaseInputPaymentDirection\") }!`,\n }],\n })(\n \n { this.props.t(\"AccountEntries.IncomeReceivable\") }\n { this.props.t(\"AccountEntries.ExpensePayable\") }\n ,\n )}\n \n \n {getFieldDecorator('amount', {\n rules: [{\n required: true,\n message: `${ this.props.t(\"AccountEntries.messages.Form.PleaseInputAmount\") }!`,\n }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n \n {getFieldDecorator(\"due_date\", {\n rules: [{\n required: true,\n message: `${ this.props.t(\"AccountEntries.messages.Form.PleaseInputDueDate\") }!`,\n }],\n })(\n \n )}\n \n \n {getFieldDecorator('account_period', {\n rules: [{\n type: 'array',\n required: this.state.selectedType && this.state.selectedType.require_period,\n message: `${ this.props.t(\"AccountEntries.messages.Form.PleaseSelectPeriod\") }!`,\n }],\n })(\n \n )}\n \n \n {getFieldDecorator('notes', {\n })(\n \n )}\n \n \n )\n }\n\n render() {\n return (\n \n { this.renderForm() }\n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwnershipsWithManagers: (params) => {\n return (dispatch(OwnershipActions.fetchOwnershipsWithManagers(params)));\n },\n };\n}\n\nconst ConnectedCreateForm = connect(mapStateToProps, mapDispatchToProps)(CreateForm);\n\nconst WrappedCreateForm = Form.create({\n name: \"account_entry_creation_form_in_modal\"\n})(ConnectedCreateForm);\n\nexport default withTranslation('common')(WrappedCreateForm);\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchOwners = (params = {}) => {\n return Api.get(\n 'owners',\n ActionTypes.FETCH_OWNERS,\n params,\n );\n}\n\nexport const updateOwner = (ownerId, params = {}) => {\n return Api.putUpload(\n `owners/${ownerId}`,\n ActionTypes.UPDATE_OWNER,\n params,\n {},\n )\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Col,\n DatePicker,\n Form,\n Icon,\n Input,\n Row,\n Select,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/FilterForm.scss';\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnersActions from '@actions/owners';\n\nclass FilterForm extends React.Component {\n static propTypes = {\n showPropertyName: PropTypes.bool,\n loading: PropTypes.bool,\n onSubmit: PropTypes.func.isRequired,\n filteredInfo: PropTypes.shape({\n selectedAccountEntryTypes: PropTypes.array,\n }).isRequired,\n }\n\n static defaultProps = {\n showPropertyName: false,\n loading: false,\n onSubmit: (filteredInfo) => {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n filteredInfo: { ...this.props.filteredInfo },\n isFetchingOwners: false,\n owners: {},\n errorFetchingOwners: null,\n showAdvancedSearch: false,\n };\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n if (props.showPropertyName) {\n this.fetchOwners();\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.filteredInfo !== this.props.filteredInfo) {\n this.setState({\n filteredInfo: this.props.filteredInfo,\n });\n }\n }\n\n async fetchOwners(params = {}) {\n this.setState({ isFetchingOwners: true })\n try {\n let responseData = await this.props.fetchOwners({\n ...params,\n });\n this.setState({\n isFetchingOwners: false,\n errorFetchingOwners: null,\n owners: {\n ...ArrayUtils.arrayToObject(responseData.owners),\n },\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetchingOwners: false,\n errorFetchingOwners: error,\n owners: {},\n });\n return\n }\n }\n\n isDirty() {\n const keys = Object.keys(this.state.filteredInfo);\n return keys.some((key) => this.props.filteredInfo[key] !== this.state.filteredInfo[key])\n }\n\n onSubmit() {\n this.props.onSubmit(this.state.filteredInfo);\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n },\n });\n }\n\n getFormItems() {\n const items = [{\n label: this.props.t(\"shared.Type\"),\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('selectedAccountEntryTypes', values) }\n >\n {\n Object.values(this.props.AccountEntryTypeOptions).map((accountEntryTypeOption) => (\n \n { accountEntryTypeOption.text }\n \n ))\n }\n \n ),\n }, {\n label: this.props.t(\"shared.Date\"),\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('accountsDateRange', dates) }\n />\n ),\n }, {\n label: this.props.t(\"shared.Status\"),\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('selectedAccountStates', values) }\n >\n {\n Object.values(this.props.AccountEntryStatusOptions).map((accountEntryStatusOption) => (\n \n { this.props.t(accountEntryStatusOption.ttextKey) }\n \n ))\n }\n \n ),\n }, {\n label: this.props.t(\"Properties.Property\"),\n shouldRender: this.props.showPropertyName,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('displayName', e.target.value) }\n />\n ),\n }, {\n label: this.props.t(\"Properties.Address\"),\n shouldRender: this.props.showPropertyName,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('address', e.target.value) }\n />\n ),\n }, {\n label: this.props.t(\"Owners.Title\"),\n shouldRender: this.props.showPropertyName,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('selectedOwners', values) }\n loading={ this.state.isFetchingOwners }\n filterOption={ (inputValue, option) => {\n const ownerId = parseInt(option.key);\n const owner = this.state.owners[ownerId];\n return (owner.name.toLowerCase().includes(inputValue.toLowerCase()))\n }}\n >\n {\n Object.values(this.state.owners).map((owner) => (\n \n { owner.name }\n \n ))\n }\n \n ),\n }, {\n label: this.props.t(\"AccountEntries.Reference\"),\n shouldRender: this.state.showAdvancedSearch,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('reference', e.target.value) }\n />\n ),\n }]\n\n const formItemLayout = {\n labelCol: {\n lg: { span: 6, },\n xl: { span: 5 },\n },\n wrapperCol: {\n lg: { span: 18 },\n xl: { span: 19 },\n },\n };\n return items.filter(({ shouldRender }) => { return shouldRender }).map((item, index) => {\n return (\n \n \n { item.renderChildren() }\n \n \n )\n });\n }\n\n render() {\n const buttonItemLayout = {\n wrapperCol: {\n lg: { span: 18, offset: 6 },\n xl: { span: 18, offset: 5 }\n },\n };\n\n const formItems = this.getFormItems();\n return (\n
\n
\n \n { this.getFormItems() }\n \n
\n \n { this.props.t(\"actions.Search\") }\n \n this.setState({ showAdvancedSearch: !this.state.showAdvancedSearch }) }\n >\n { this.state.showAdvancedSearch ? : } { this.state.showAdvancedSearch ? this.props.t(\"actions.Collapse\") : this.props.t(\"actions.Expand\") }\n \n
\n \n
\n )\n }\n}\n\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryStatusOptions: state.accountEntriesReducer.AccountEntryStatusOptions,\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwners: (params = {}) => {\n return dispatch(OwnersActions.fetchOwners(params))\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(FilterForm));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Form,\n Input,\n Modal,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\nimport numeral from 'numeral';\n\nimport {\n ThemeColors,\n} from '@constants/Theme';\n\nconst RESET_STATE = (state = {}) => {\n return {\n ...state,\n }\n}\n\nclass MarkAsVoidForm extends React.Component {\n static propTypes = {\n confirmLoading: PropTypes.bool,\n visible: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n confirmLoading: false,\n visible: false,\n onCancel: () => {},\n onOk: () => {},\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n }\n }\n\n renderForm() {\n const { accountEntry, form } = this.props;\n const { getFieldDecorator } = form;\n\n const formItemLayout = {\n labelCol: { span: 8 },\n wrapperCol: { span: 16 },\n };\n\n return (\n
\n \n { accountEntry.ownership.name }\n \n \n { this.props.AccountEntryTypeOptions[accountEntry.entry_type].text }\n \n \n \n { numeral(accountEntry.amount).format('($0,0)') }\n

\n \n \n { this.props.t(this.props.AccountEntryStatusOptions[accountEntry.state].ttextKey) }\n \n \n {getFieldDecorator(\"note\", {\n })(\n \n )}\n \n \n )\n }\n\n render() {\n if (!this.props.accountEntry) {\n return null;\n }\n\n return (\n \n { this.renderForm() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryStatusOptions: state.accountEntriesReducer.AccountEntryStatusOptions,\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedMarkAsVoidForm = connect(mapStateToProps, mapDispatchToProps)(MarkAsVoidForm);\n\nconst WrappedMarkAsVoidForm = Form.create({ name: 'account_entry_void_form_in_modal' })(ConnectedMarkAsVoidForm);\n\nexport default withTranslation('common')(WrappedMarkAsVoidForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n DatePicker,\n Form,\n Input,\n InputNumber,\n Modal,\n} from 'antd';\n\nimport numeral from 'numeral';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\nimport {\n ThemeColors,\n} from '@constants/Theme';\n\nconst RESET_STATE = (state = {}) => {\n return {\n ...state,\n }\n}\nclass AddPaymentForm extends React.Component {\n static propTypes = {\n confirmLoading: PropTypes.bool,\n visible: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n confirmLoading: false,\n visible: false,\n onCancel: () => {},\n onOk: () => {},\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n }\n }\n\n renderForm() {\n const { accountEntry, form } = this.props;\n const { getFieldDecorator } = form;\n\n const formItemLayout = {\n labelCol: { span: 8 },\n wrapperCol: { span: 16 },\n };\n\n return (\n
\n \n { accountEntry.ownership.name }\n \n \n { this.props.AccountEntryTypeOptions[accountEntry.entry_type].text }. { DateUtils.formatDate(accountEntry.due_date) }\n \n \n { numeral(Math.abs(accountEntry.amount - accountEntry.reconciled_amount)).format('($0,0.[00])') }\n \n \n {getFieldDecorator(\"payment_date\", {\n rules: [{ required: true, message: 'Please input payment date!' }],\n })(\n \n )}\n \n { this.props.t(\"shared.Amount\") } { (accountEntry.amount > 0) ? this.props.t(\"AccountEntries.received\") : this.props.t(\"AccountEntries.spent\") }\n }\n {...formItemLayout}\n >\n {getFieldDecorator('payment_amount', {\n rules: [{ required: true, message: 'Please input amount' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n \n {getFieldDecorator(\"reference_number\", {\n })(\n \n )}\n \n \n {getFieldDecorator(\"note\", {\n })(\n \n )}\n \n \n )\n }\n\n render() {\n if (!this.props.accountEntry) {\n return null;\n }\n\n return (\n \n { this.renderForm() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedAddPaymentForm = connect(mapStateToProps, mapDispatchToProps)(AddPaymentForm);\n\nconst WrappedAddPaymentForm = Form.create({ name: 'account_entry_add_payment_form_in_modal' })(ConnectedAddPaymentForm);\n\nexport default withTranslation('common')(WrappedAddPaymentForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Modal,\n Spin,\n} from 'antd';\n\nimport { PDFObject } from 'react-pdfobject'\n\nclass PreviewPdfModal extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n visible: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n pdfUrl: PropTypes.string,\n }\n\n static defaultProps = {\n title: \"\",\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { pdfUrl } = this.props;\n if (!pdfUrl) {\n return null;\n }\n return (\n \n { this.props.children }\n
\n \n \n
\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PreviewPdfModal);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Radio,\n Spin,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\nimport * as AccountEntryActions from '@actions/accountEntries';\nimport PreviewPdfModal from '@components/AccountEntries/PreviewPdfModal';\n\nconst RESET_STATE = (state = {}) => {\n return {\n viewing: null,\n\n ...state,\n }\n}\n\nconst ViewingOptions = {\n last_saved: {\n value: \"last_saved\",\n ttextKey: \"AccountEntries.DocumentGeneration.LastSavedVersion\",\n disabled: (item) => !item.last_invoice_url,\n },\n generate_new: {\n value: \"generate_new\",\n ttextKey: \"AccountEntries.DocumentGeneration.NewVersion\",\n disabled: (item) => false,\n },\n}\n\nclass PreviewInvoiceModal extends React.Component {\n static propTypes = {\n item: PropTypes.object,\n visible: PropTypes.bool,\n onCancel: PropTypes.func,\n }\n\n static defaultProps = {\n visible: false,\n onCancel: () => {},\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onSaveNewVersion = this.onSaveNewVersion.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (!prevProps.visible && this.props.visible) {\n if (this.props.item && this.props.item.last_invoice_url) {\n this.setState({ viewing: ViewingOptions.last_saved.value })\n } else {\n this.setState({ viewing: ViewingOptions.generate_new.value })\n }\n }\n }\n\n async onSaveNewVersion() {\n try {\n let responseData = await this.props.onSaveNewVersion();\n this.setState({ viewing: ViewingOptions.last_saved.value })\n } catch (error) {\n return\n }\n }\n\n render() {\n const { item } = this.props;\n if (!item) {\n return null;\n }\n const previewUrl = item.preview_invoice_url;\n if (!previewUrl) {\n return null;\n }\n\n const entryType = this.props.AccountEntryTypeOptions[item.entry_type].text;\n const dueDate = DateUtils.formatDate(item.due_date);\n const title = `${ this.props.t(\"AccountEntries.PreviewInvoiceFor\") }: ${item.ownership.name} ${entryType} - ${dueDate}`\n\n const displayUrl = (this.state.viewing === ViewingOptions.last_saved.value) ? item.last_invoice_url : previewUrl;\n return (\n \n
\n
\n
\n { this.props.t(\"AccountEntries.DocumentGeneration.Viewing\") }:\n this.setState({ viewing: e.target.value }) }\n >\n {\n Object.values(ViewingOptions).map((option) => (\n \n { this.props.t(option.ttextKey) }\n \n ))\n }\n \n
\n \n { this.props.t(\"AccountEntries.DocumentGeneration.SaveNewVersion\") }\n \n
\n
\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(PreviewInvoiceModal));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Radio,\n Spin,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\nimport * as AccountEntryActions from '@actions/accountEntries';\nimport PreviewPdfModal from '@components/AccountEntries/PreviewPdfModal';\n\nconst RESET_STATE = (state = {}) => {\n return {\n viewing: null,\n\n ...state,\n }\n}\n\nconst ViewingOptions = {\n last_saved: {\n value: \"last_saved\",\n ttextKey: \"AccountEntries.DocumentGeneration.LastSavedVersion\",\n disabled: (item) => !item.last_receipt_url,\n },\n generate_new: {\n value: \"generate_new\",\n ttextKey: \"AccountEntries.DocumentGeneration.NewVersion\",\n disabled: (item) => false,\n },\n}\n\nclass PreviewReceiptModal extends React.Component {\n static propTypes = {\n item: PropTypes.object,\n visible: PropTypes.bool,\n onCancel: PropTypes.func,\n }\n\n static defaultProps = {\n visible: false,\n onCancel: () => {},\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onSaveNewVersion = this.onSaveNewVersion.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (!prevProps.visible && this.props.visible) {\n if (this.props.item && this.props.item.last_receipt_url) {\n this.setState({ viewing: ViewingOptions.last_saved.value })\n } else {\n this.setState({ viewing: ViewingOptions.generate_new.value })\n }\n }\n }\n\n async onSaveNewVersion() {\n try {\n let responseData = await this.props.onSaveNewVersion();\n this.setState({ viewing: ViewingOptions.last_saved.value })\n } catch (error) {\n return\n }\n }\n\n render() {\n const { item } = this.props;\n if (!item) {\n return null;\n }\n const previewUrl = item.preview_receipt_url;\n if (!previewUrl) {\n return null;\n }\n\n const entryType = this.props.AccountEntryTypeOptions[item.entry_type].text;\n const dueDate = DateUtils.formatDate(item.due_date);\n const title = `${ this.props.t(\"AccountEntries.PreviewReceiptFor\") }: ${item.ownership.name} ${entryType} - ${dueDate}`\n\n const displayUrl = (this.state.viewing === ViewingOptions.last_saved.value) ? item.last_receipt_url : previewUrl;\n return (\n \n
\n
\n
\n { this.props.t(\"AccountEntries.DocumentGeneration.Viewing\") }:\n this.setState({ viewing: e.target.value }) }\n >\n {\n Object.values(ViewingOptions).map((option) => (\n \n { this.props.t(option.ttextKey) }\n \n ))\n }\n \n
\n \n { this.props.t(\"AccountEntries.DocumentGeneration.SaveNewVersion\") }\n \n
\n
\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(PreviewReceiptModal));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { withTranslation } from 'react-i18next';\n\nimport {\n Checkbox,\n Divider,\n Modal,\n} from 'antd';\n\nconst checkedOptions = {\n owners: [\n { value: 'owner_name', ttextKey: 'Owners.OwnerName' }\n ],\n tenancy: [\n { value: 'tenancy_tenant_name', ttextKey: 'Tenancies.TenantName' },\n { value: 'tenancy_contract_period', ttextKey: 'Tenancies.TenancyPeriod' },\n { value: 'tenancy_security_deposit', ttextKey: 'shared.SecurityDeposit' },\n { value: 'tenancy_terms', ttextKey: 'Tenancies.TenancyTerms.Title' },\n { value: 'tenancy_notes', ttextKey: 'shared.Notes' },\n ],\n accounts: [\n { value: 'account_entry_invoice_number', ttextKey: 'AccountEntries.DebitNoteNumber' },\n { value: 'account_entry_line_items', ttextKey: 'AccountEntries.LineItems' },\n { value: 'account_payments', ttextKey: 'AccountEntries.CompletedPayments' },\n ],\n ownership: [\n { value: 'bank_details', ttextKey: 'AccountEntries.BankDetails' },\n { value: 'property_name', ttextKey: 'Properties.PropertyName' },\n { value: 'property_address', ttextKey: 'Properties.PropertyAddress' },\n ],\n};\n\nclass DownloadEntriesModal extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n title: \"\",\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = {\n checkedLists: {\n owners: [],\n tenancy: [],\n accounts: [],\n ownership: [],\n },\n }\n this.onChangeCheckbox = this.onChangeCheckbox.bind(this);\n this.onOk = this.onOk.bind(this);\n }\n\n onChangeCheckbox(listName, checkedList) {\n this.setState({\n checkedLists: {\n ...this.state.checkedLists,\n [listName]: checkedList,\n },\n });\n };\n\n onOk() {\n this.props.onOk(this.state.checkedLists)\n }\n\n render() {\n const translateOptionLabel = (item) => { return { value: item.value, label: this.props.t(item.ttextKey) } };\n return (\n \n { this.props.t(\"AccountEntries.DownloadResultsModal.OwnerParticulars\") }\n this.onChangeCheckbox('owners', checkedList) }\n />\n { this.props.t(\"AccountEntries.DownloadResultsModal.TenancyDetailsIfApplicable\") }\n this.onChangeCheckbox('tenancy', checkedList) }\n />\n { this.props.t(\"AccountEntries.DownloadResultsModal.Accounts\") }\n this.onChangeCheckbox('accounts', checkedList) }\n />\n { this.props.t(\"AccountEntries.DownloadResultsModal.PropertyDetails\") }\n this.onChangeCheckbox('ownership', checkedList) }\n />\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(DownloadEntriesModal));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Col,\n message,\n notification,\n Row,\n} from 'antd';\n\nimport moment from 'moment';\nimport qs from 'qs';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as DateUtils from '@utils/date';\nimport * as AccountEntryActions from '@actions/accountEntries';\nimport AttachDocumentModal from '@components/AttachDocumentModal';\nimport AccountEntriesTable from './Table';\nimport AccountEntryShow from './Show';\nimport CreateForm from './CreateForm';\nimport FilterForm from './FilterForm';\nimport MarkAsVoidForm from './MarkAsVoidForm';\nimport AddPaymentForm from './AddPaymentForm';\nimport PreviewPdfModal from './PreviewPdfModal';\nimport PreviewInvoiceModal from './PreviewInvoiceModal';\nimport PreviewReceiptModal from './PreviewReceiptModal';\nimport DownloadAccountEntriesModal from './DownloadAccountEntriesModal';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isFetching: false,\n isCreating: false,\n itemsById: {},\n errorFetching: null,\n errorCreating: null,\n\n // modals\n selectedItemId: null,\n attachDocumentModalVisible: false,\n addPaymentModalVisible: false,\n markAsVoidModalVisible: false,\n previewInvoiceModalVisible: false,\n previewRentalReminderModalVisible: false,\n previewReceiptModalVisible: false,\n createModalVisible: false,\n\n // search params\n filteredInfo: {\n displayName: '',\n address: '',\n reference: '',\n selectedAccountEntryTypes: [],\n selectedAccountStates: [],\n selectedOwners: [],\n accountsDateRange: null,\n },\n pagination: {\n current: 1,\n pageSize: 10,\n },\n sorter: {\n columnKey: 'state',\n order: 'ascend',\n },\n\n ...state,\n }\n}\n\nclass AccountEntries extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number,\n }\n\n static defaultProps = {\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.handleFilterFormSubmit = this.handleFilterFormSubmit.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.fetchAccountEntries = this.fetchAccountEntries.bind(this);\n this.fetchAccountEntry = this.fetchAccountEntry.bind(this);\n this.onExpandTableRow = this.onExpandTableRow.bind(this);\n this.onItemAction = this.onItemAction.bind(this);\n this.onCreateSubmit = this.onCreateSubmit.bind(this);\n this.onMarkAsVoidSubmit = this.onMarkAsVoidSubmit.bind(this);\n this.onAddPaymentSubmit = this.onAddPaymentSubmit.bind(this);\n this.onSaveNewInvoiceVersion = this.onSaveNewInvoiceVersion.bind(this);\n this.onSaveNewReceiptVersion = this.onSaveNewReceiptVersion.bind(this);\n this.attachDocumentToAccountEntry = this.attachDocumentToAccountEntry.bind(this);\n this.updateItemState = this.updateItemState.bind(this);\n }\n\n componentDidMount() {\n this.fetchAccountEntries();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.ownershipId !== this.props.ownershipId) {\n this.setState({\n pagination: {\n pageSize: this.state.pagination.pageSize,\n current: 1,\n },\n }, this.fetchAccountEntries)\n }\n }\n\n handleFilterFormSubmit(filteredInfo) {\n this.setState({\n filteredInfo,\n pagination: {\n ...this.state.pagination,\n current: 1,\n },\n }, this.fetchAccountEntries)\n }\n\n handleListChange(pagination, filters, sorter) {\n this.setState({\n pagination,\n sorter,\n }, this.fetchAccountEntries);\n }\n\n getFilterParams() {\n const { filteredInfo } = this.state;\n const ownershipIdFilter = (this.props.ownershipId) ? { ownership_id: this.props.ownershipId } : {};\n return {\n sortField: this.state.sorter.columnKey,\n sortOrder: this.state.sorter.order,\n filter: {\n ...filteredInfo,\n accountsDateRange: filteredInfo && filteredInfo.accountsDateRange && (filteredInfo.accountsDateRange.length == 2) && [\n filteredInfo.accountsDateRange[0].format(\"YYYY-MM-DD\"),\n filteredInfo.accountsDateRange[1].format(\"YYYY-MM-DD\"),\n ],\n },\n ...ownershipIdFilter,\n };\n }\n\n async fetchAccountEntries(params = {}) {\n this.setState({ isFetching: true });\n try {\n let responseData = await this.props.fetchAccountEntries({\n page: this.state.pagination.current,\n results: this.state.pagination.pageSize,\n ...this.getFilterParams(),\n ...params,\n });\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.account_entries),\n },\n pagination: {\n ...this.state.pagination,\n total: responseData.pagy ? responseData.pagy.count : responseData.account_entries.length,\n },\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n itemsById: {},\n })\n return null;\n }\n }\n\n updateItemState(id, item = {}) {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [id]: item,\n },\n });\n }\n\n async fetchAccountEntry(record, params = {}) {\n this.updateItemState(record.id, {\n ...record,\n isFetching: true,\n })\n try {\n let responseData = await this.props.fetchAccountEntry(record.id, record.ownership_id);\n this.updateItemState(record.id, {\n ...responseData.account_entry,\n });\n return responseData;\n } catch(error) {\n this.updateItemState(record.id, {\n ...record,\n isFetching: false,\n errorFetching: error,\n });\n return null;\n }\n }\n\n async onCreateSubmit() {\n const { form } = this.createFormRef.props;\n try {\n let values = await form.validateFields();\n const ownershipId = this.props.ownershipId ? this.props.ownershipId : values[\"ownership_id\"];\n if (!ownershipId) {\n return\n }\n this.setState({ isCreating: true });\n let responseData = await this.props.createAccountEntry(ownershipId, values);\n const newAccountEntry = responseData.account_entry;\n this.setState({\n isCreating: false,\n createModalVisible: false,\n });\n this.updateItemState(newAccountEntry.id, newAccountEntry);\n message.success(this.props.t(\"AccountEntries.messages.CreateAccountEntry.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n isCreating: false,\n errorCreating: error,\n });\n return null;\n }\n }\n\n async attachDocumentToAccountEntry(documentId) {\n let accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n if (!accountEntry) {\n return;\n }\n try {\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: true,\n });\n let responseData = await this.props.attachDocumentToAccountEntry(accountEntry.id, accountEntry.ownership_id, documentId);\n const updatedAccountEntry = responseData.account_entry;\n this.updateItemState(updatedAccountEntry.id, {\n ...updatedAccountEntry,\n });\n message.success(this.props.t(\"Documents.messages.AttachDocument.Success\"));\n return responseData;\n } catch (error) {\n accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"Documents.messages.AttachDocument.Fail\"));\n throw error\n }\n }\n\n async onMarkAsVoidSubmit() {\n let accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n if (!accountEntry) {\n return;\n }\n const { form } = this.markAsVoidFormRef.props;\n try {\n let values = await form.validateFields();\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: true,\n });\n let responseData = await this.props.markAsVoidAccountEntry(accountEntry.id, accountEntry.ownership_id, values);\n const updatedAccountEntry = responseData.account_entry;\n this.updateItemState(updatedAccountEntry.id, {\n ...updatedAccountEntry,\n });\n this.setState({\n selectedItemId: null,\n markAsVoidModalVisible: false,\n })\n message.success(this.props.t(\"AccountEntries.messages.VoidAccountEntry.Success\"));\n return responseData;\n } catch (error) {\n accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"AccountEntries.messages.VoidAccountEntry.Fail\"));\n return null;\n }\n }\n\n async onAddPaymentSubmit() {\n const { form } = this.addPaymentFormRef.props;\n let accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n if (!accountEntry) {\n return;\n }\n\n try {\n let { payment_amount, ...values } = await form.validateFields();\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: true,\n });\n let responseData = await this.props.addPaymentToAccountEntry(accountEntry.id, accountEntry.ownership_id, {\n ...values,\n payment_amount: (accountEntry.amount < 0) ? payment_amount * -1 : payment_amount,\n });\n const updatedAccountEntry = responseData.account_entry;\n this.updateItemState(updatedAccountEntry.id, {\n ...updatedAccountEntry,\n });\n this.setState({\n selectedItemId: null,\n addPaymentModalVisible: false,\n })\n message.success(this.props.t(\"AccountEntries.messages.AddPaymentToEntry.Success\"));\n return responseData;\n return\n } catch (error) {\n accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"AccountEntries.messages.AddPaymentToEntry.Fail\"));\n return null;\n }\n }\n\n async onDestroyAccountPayment(accountPaymentId) {\n this.setState({ isFetching: true });\n try {\n let responseData = await this.props.destroyAccountPayment(accountPaymentId);\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...this.state.itemsById,\n ...ArrayUtils.arrayToObject(responseData.account_entries),\n },\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n })\n return null;\n }\n }\n\n async onSaveNewInvoiceVersion() {\n let accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n if (!accountEntry) {\n return;\n }\n try {\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: true,\n });\n let responseData = await this.props.saveNewInvoiceToAccountEntry(accountEntry.id, accountEntry.ownership_id);\n const updatedAccountEntry = responseData.account_entry;\n this.updateItemState(updatedAccountEntry.id, {\n ...updatedAccountEntry,\n });\n message.success(this.props.t(\"AccountEntries.messages.SaveInvoiceForAccountEntry.Success\"));\n return responseData;\n } catch (error) {\n accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"AccountEntries.messages.SaveInvoiceForAccountEntry.Fail\"));\n throw error;\n }\n }\n\n async onSaveNewReceiptVersion() {\n let accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n if (!accountEntry) {\n return;\n }\n try {\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: true,\n });\n let responseData = await this.props.saveNewReceiptToAccountEntry(accountEntry.id, accountEntry.ownership_id);\n const updatedAccountEntry = responseData.account_entry;\n this.updateItemState(updatedAccountEntry.id, {\n ...updatedAccountEntry,\n });\n message.success(this.props.t(\"AccountEntries.messages.SaveReceiptForAccountEntry.Success\"));\n return responseData;\n } catch (error) {\n accountEntry = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n this.updateItemState(accountEntry.id, {\n ...accountEntry,\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"AccountEntries.messages.SaveReceiptForAccountEntry.Fail\"));\n throw error;\n }\n }\n\n onItemAction(record, key) {\n switch (key) {\n case \"markAsVoid\":\n this.setState({ selectedItemId: record.id, markAsVoidModalVisible: true });\n return\n case \"addPayment\":\n this.setState({ selectedItemId: record.id, addPaymentModalVisible: true });\n return\n case \"attachDocument\":\n this.setState({ selectedItemId: record.id, attachDocumentModalVisible: true });\n return\n case \"previewInvoice\":\n this.setState({ selectedItemId: record.id, previewInvoiceModalVisible: true });\n return\n case \"sendInvoice\":\n return this.props.sendAccountEntryInvoice(record.id).then((responseData) => {\n notification.success({\n message: `Successfully sent invoice`,\n description: responseData.msg,\n });\n }).catch((error) => {\n notification.error({\n message: 'Unable to send invoice',\n description: error.response.data.msg,\n });\n })\n case \"previewOutstandingRentalReminder\":\n this.setState({ selectedItemId: record.id, previewRentalReminderModalVisible: true });\n return\n case \"sendPaymentReminder\":\n return this.props.sendAccountEntryPaymentReminder(record.id).then((responseData) => {\n notification.success({\n message: `Successfully sent payment reminder`,\n description: responseData.msg,\n });\n }).catch((error) => {\n notification.error({\n message: 'Unable to send payment reminder',\n description: error.response.data.msg,\n });\n })\n case \"previewReceipt\":\n this.setState({ selectedItemId: record.id, previewReceiptModalVisible: true });\n return\n case \"sendReceipt\":\n return this.props.sendAccountEntryReceipt(record.id).then((responseData) => {\n notification.success({\n message: `Successfully sent receipt`,\n description: responseData.msg,\n });\n }).catch((error) => {\n notification.error({\n message: 'Unable to send receipt',\n description: error.response.data.msg,\n });\n });\n default:\n return\n }\n }\n\n onExpandTableRow(expanded, record) {\n if (!expanded) {\n return;\n }\n\n this.fetchAccountEntry(record);\n }\n\n getFilteredResults(items) {\n const { filteredInfo } = this.state;\n return items.filter((accountEntry) => {\n if (!filteredInfo) { return true };\n if (filteredInfo.reference) {\n if (!(accountEntry.invoice_number && accountEntry.invoice_number.toLowerCase().includes(filteredInfo.reference.toLowerCase()))) {\n return false\n }\n }\n if (filteredInfo.selectedAccountEntryTypes && filteredInfo.selectedAccountEntryTypes.length > 0) {\n if (!filteredInfo.selectedAccountEntryTypes.includes(accountEntry.entry_type)) {\n return false\n }\n }\n if (filteredInfo.selectedAccountStates && filteredInfo.selectedAccountStates.length > 0) {\n if (!filteredInfo.selectedAccountStates.includes(accountEntry.state)) {\n return false\n }\n }\n if (filteredInfo.accountsDateRange && filteredInfo.accountsDateRange.length == 2) {\n if (moment(accountEntry.due_date).isBefore(filteredInfo.accountsDateRange[0], 'day')) {\n return false\n }\n if (moment(accountEntry.due_date).isAfter(filteredInfo.accountsDateRange[1], 'day')) {\n return false\n }\n }\n return true\n })\n }\n\n saveCreateFormRef = formRef => {\n this.createFormRef = formRef;\n }\n\n saveMarkAsVoidFormRef = formRef => {\n this.markAsVoidFormRef = formRef;\n }\n\n saveAddPaymentFormRef = formRef => {\n this.addPaymentFormRef = formRef;\n }\n\n renderRentalReminderModal(item) {\n if (!item) { return null }\n return (\n this.setState({\n selectedItemId: null,\n previewRentalReminderModalVisible: false,\n })}\n />\n )\n }\n\n render() {\n const dataSource = this.getFilteredResults(Object.values(this.state.itemsById));\n const selectedItem = this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n return (\n
\n \n \n \n this.setState({ createModalVisible: true, selectedItemId: null })}\n >\n { this.props.t(\"AccountEntries.actions.AddAccountEntry\") }\n \n this.setState({ downloadAccountEntriesModalVisible: true })}\n >\n { this.props.t(\"actions.DownloadResults\") }\n \n \n \n this.setState({ createModalVisible: false })}\n onOk={ this.onCreateSubmit }\n ownershipId={ this.props.ownershipId }\n confirmLoading={ this.state.isCreating }\n />\n this.setState({ selectedItemId: null, addPaymentModalVisible: false }) }\n onOk={ this.onAddPaymentSubmit }\n confirmLoading={ selectedItem && selectedItem.isUpdating }\n />\n this.setState({ selectedItemId: null, attachDocumentModalVisible: false }) }\n onAttachDocumentSubmit={ (documentId) => this.attachDocumentToAccountEntry(documentId) }\n confirmLoading={\n (selectedItem && selectedItem.isUpdating)\n }\n />\n this.setState({ downloadAccountEntriesModalVisible: false }) }\n onOk={ (values) => {\n const downloadQs = qs.stringify({\n ...this.getFilterParams(),\n fieldsToExport: Object.values(values).flat(),\n }, { arrayFormat: 'brackets' });\n const downloadAllUrl = `/account_entries.xlsx?${downloadQs}`;\n window.open(downloadAllUrl, '_blank')\n this.setState({ downloadAccountEntriesModalVisible: false })\n }}\n confirmLoading={ false }\n />\n this.setState({\n selectedItemId: null,\n previewInvoiceModalVisible: false,\n })}\n onSaveNewVersion={ this.onSaveNewInvoiceVersion }\n />\n { this.renderRentalReminderModal(selectedItem) }\n this.setState({\n selectedItemId: null,\n previewReceiptModalVisible: false,\n })}\n onSaveNewVersion={ this.onSaveNewReceiptVersion }\n />\n this.setState({ selectedItemId: null, markAsVoidModalVisible: false }) }\n onOk={ this.onMarkAsVoidSubmit }\n confirmLoading={\n (selectedItem && selectedItem.isUpdating)\n }\n />\n this.onItemAction(record, actionKey) }\n expandedRowRender={\n record => (\n this.onDestroyAccountPayment(accountPaymentId) }\n updateItemState={ (item) => this.updateItemState(record.id, item) }\n />\n )\n }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n AccountEntryTypeOptions: state.accountEntriesReducer.AccountEntryTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchAccountEntries: (params = {}) => {\n return dispatch(AccountEntryActions.fetchAccountEntries(params))\n },\n fetchAccountEntry: (aeId, ownershipId) => {\n return dispatch(AccountEntryActions.fetchAccountEntry(aeId, ownershipId));\n },\n createAccountEntry: (ownershipId, params = {}) => {\n const { amount, direction, due_date, account_period, ...rest } = params;\n return dispatch(AccountEntryActions.createAccountEntry(ownershipId, {\n amount_in_cents: Math.round(parseInt(direction) * amount * 100),\n due_date: due_date ? due_date.format('YYYY-MM-DD') : null,\n period_start_date: account_period && account_period[0] && account_period[0].format('YYYY-MM-DD'),\n period_end_date: account_period && account_period[1] && account_period[1].format('YYYY-MM-DD'),\n ...rest,\n }));\n },\n markAsVoidAccountEntry: (aeId, ownershipId, params) => {\n return dispatch(AccountEntryActions.markAsVoid(aeId, ownershipId, params));\n },\n sendAccountEntryInvoice: (aeId) => {\n return dispatch(AccountEntryActions.sendAccountEntryInvoice(aeId));\n },\n sendAccountEntryPaymentReminder: (aeId) => {\n return dispatch(AccountEntryActions.sendAccountEntryPaymentReminder(aeId));\n },\n sendAccountEntryReceipt: (aeId) => {\n return dispatch(AccountEntryActions.sendAccountEntryReceipt(aeId));\n },\n attachDocumentToAccountEntry: (aeId, ownershipId, documentId) => {\n return dispatch(AccountEntryActions.attachDocumentToAccountEntry(aeId, ownershipId, documentId));\n },\n addPaymentToAccountEntry: (aeId, ownershipId, params = {}) => {\n const { payment_amount, payment_date, ...rest } = params;\n return dispatch(AccountEntryActions.addPaymentToAccountEntry(aeId, ownershipId, {\n amount_in_cents: Math.round(payment_amount * 100),\n payment_date: payment_date ? payment_date.format('YYYY-MM-DD') : null,\n ...rest,\n }));\n },\n destroyAccountPayment: (accountPaymentId) => {\n return dispatch(AccountEntryActions.destroyAccountPayment(accountPaymentId));\n },\n saveNewInvoiceToAccountEntry: (aeId, ownershipId) => {\n return dispatch(AccountEntryActions.saveNewInvoiceToAccountEntry(aeId, ownershipId));\n },\n saveNewReceiptToAccountEntry: (aeId, ownershipId) => {\n return dispatch(AccountEntryActions.saveNewReceiptToAccountEntry(aeId, ownershipId));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(AccountEntries));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Alert,\n Badge,\n Calendar,\n Col,\n Radio,\n Row,\n Select,\n Spin,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport './EventCalendar.scss';\n\nimport * as PortfolioActions from '@actions/portfolio';\n\nconst EVENT_COLOR_MAP = {\n task: 'orange',\n income: 'green',\n expense: 'red',\n br_registration: 'blue',\n tenancy_start: 'violet',\n tenancy_end: 'black',\n}\n\nclass EventCalendar extends React.Component {\n static propTypes = {\n events: PropTypes.arrayOf(PropTypes.shape({\n date: PropTypes.string.isRequired,\n type: PropTypes.oneOf(['task', 'income', 'expense', 'br_registration', 'tenancy_start', 'tenancy_end']).isRequired,\n content: PropTypes.string.isRequired,\n status: PropTypes.oneOf(['pending', 'completed']).isRequired,\n })),\n }\n\n constructor(props) {\n super(props);\n this.state = {\n filter: {\n status: 'all',\n },\n calendarValue: moment(),\n calendarSelectedValue: null,\n isFetching: false,\n events: [],\n errorFetching: null,\n };\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.fetchImportantDates = this.fetchImportantDates.bind(this);\n this.onCalendarPanelChange = this.onCalendarPanelChange.bind(this);\n this.onCalendarDateSelect = this.onCalendarDateSelect.bind(this);\n this.renderCustomHeader = this.renderCustomHeader.bind(this);\n this.renderStatusFilter = this.renderStatusFilter.bind(this);\n this.renderSelectedDateContents = this.renderSelectedDateContents.bind(this);\n }\n\n componentDidMount() {\n this.fetchImportantDates();\n }\n\n async fetchImportantDates(params = {}) {\n let { calendarValue } = this.state;\n params = {\n start_date: calendarValue.startOf('month').format('YYYY-MM-DD'),\n end_date: calendarValue.endOf('month').format('YYYY-MM-DD'),\n ...params,\n }\n this.setState({ isFetching: true, events: [], errorFetching: null });\n try {\n let responseData = await this.props.fetchImportantDates(params);\n this.setState({\n isFetching: false,\n events: responseData.events,\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n events: [],\n })\n }\n }\n\n onCalendarDateSelect(value) {\n this.setState({\n calendarValue: value,\n calendarSelectedValue: value,\n });\n }\n\n onCalendarPanelChange(value) {\n this.setState({\n calendarValue: value,\n calendarSelectedValue: null,\n }, this.fetchImportantDates);\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filter: {\n ...this.state.filter,\n [key]: value,\n },\n })\n }\n\n dateCellRender(value) {\n const events = this.state.events.filter((event) => {\n if (event.date !== value.format(\"YYYY-MM-DD\")) {\n return false;\n }\n const { filter } = this.state;\n return ((filter.status === 'all') || (filter.status === event.status));\n });\n return (\n
    \n {\n events.map((item, index) => (\n
  • \n \n
  • \n ))\n }\n
\n );\n }\n\n renderCustomHeader({ value, type, onChange, onTypeChange }) {\n const monthOptions = [];\n const yearOptions = [];\n\n const current = value.clone();\n const localeData = value.localeData();\n const currentYear = moment().year();\n\n for (let index = 0; index < 12; index++) {\n monthOptions.push(\n \n { localeData.monthsShort(current.month(index)) }\n \n )\n }\n\n for (let i = currentYear - 3; i < currentYear + 5; i ++) {\n yearOptions.push(\n \n {i}\n ,\n );\n }\n return (\n
\n \n \n { this.renderStatusFilter() }\n \n \n {\n const now = value.clone().year(newYear);\n onChange(now);\n }}\n value={String(value.year())}\n >\n {yearOptions}\n \n {\n const newValue = value.clone();\n newValue.month(parseInt(selectedMonth, 10));\n onChange(newValue);\n }}\n >\n {monthOptions}\n \n \n \n { this.renderSelectedDateContents() }\n \n \n
\n );\n }\n\n renderStatusFilter() {\n return (\n this.onChangeFilter('status', e.target.value) }\n value={ this.state.filter.status }\n size=\"large\"\n >\n \n { this.props.t(\"Tasks.StatusPending\") }\n \n \n { this.props.t(\"Tasks.StatusCompleted\") }\n \n \n { this.props.t(\"shared.AllStatuses\") }\n \n \n )\n }\n\n renderSelectedDateContents() {\n const { calendarSelectedValue } = this.state;\n if (!calendarSelectedValue) {\n return null;\n }\n const events = this.state.events.filter((event) => {\n if (event.date !== calendarSelectedValue.format(\"YYYY-MM-DD\")) {\n return false;\n }\n const { filter } = this.state;\n return ((filter.status === 'all') || (filter.status === event.status));\n })\n return (\n
    \n {\n events.map((item, index) => (\n
  • \n \n \n { item.type }\n {item.event_holder}: { item.content }\n \n
  • \n ))\n }\n
\n )\n }\n\n render() {\n return (\n
\n { this.state.isFetching && }\n { this.state.errorFetching && (\n this.fetchImportantDates() }>{ this.props.t(\"shared.TryAgain\") }. }\n type=\"error\"\n showIcon\n />\n )}\n this.dateCellRender(value) }\n headerRender={ this.renderCustomHeader }\n onSelect={ this.onCalendarDateSelect }\n onPanelChange={ this.onCalendarPanelChange }\n value={ this.state.calendarValue }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n fetchImportantDates: (params = {}) => {\n return dispatch(PortfolioActions.fetchImportantDates(params));\n },\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(EventCalendar));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Checkbox,\n Divider,\n Modal,\n} from 'antd';\n\nconst checkedOptions = {\n owners: [\n { value: 'owner_name', label: 'Name'}\n ],\n currentTenancy: [\n { value: 'current_tenancy_tenant_name', label: 'Tenant Name' },\n { value: 'current_tenancy_rental_amount', label: 'Rental Amount' },\n { value: 'current_tenancy_security_deposit', label: 'Security Deposit' },\n { value: 'current_tenancy_terms', label: 'Terms' },\n { value: 'current_tenancy_notes', label: 'Notes' },\n ],\n nextTenancy: [\n { value: 'next_tenancy_tenant_name', label: 'Tenant Name' },\n { value: 'next_tenancy_rental_amount', label: 'Rental Amount' },\n { value: 'next_tenancy_security_deposit', label: 'Security Deposit' },\n { value: 'next_tenancy_terms', label: 'Terms' },\n { value: 'next_tenancy_notes', label: 'Notes' },\n ],\n};\n\nclass DownloadTenanciesModal extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n title: \"\",\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = {\n checkedLists: {\n owners: [],\n currentTenancy: [],\n nextTenancy: [],\n },\n }\n this.onChangeCheckbox = this.onChangeCheckbox.bind(this);\n this.onOk = this.onOk.bind(this);\n }\n\n onChangeCheckbox(listName, checkedList) {\n this.setState({\n checkedLists: {\n ...this.state.checkedLists,\n [listName]: checkedList,\n },\n });\n };\n\n onOk() {\n this.props.onOk(this.state.checkedLists)\n }\n\n render() {\n return (\n \n Owner Particulars\n this.onChangeCheckbox('owners', checkedList) }\n />\n Current Tenancy\n this.onChangeCheckbox('currentTenancy', checkedList) }\n />\n Next Tenancy\n this.onChangeCheckbox('nextTenancy', checkedList) }\n />\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DownloadTenanciesModal);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport {\n Button,\n Row,\n Select,\n Spin,\n Table,\n} from 'antd';\n\nimport qs from 'qs';\nimport { withTranslation } from 'react-i18next';\n\nimport * as PortfolioActions from '@actions/portfolio';\nimport * as DateUtils from '@utils/date';\nimport DownloadTenanciesModal from '@components/Portfolio/DownloadTenanciesModal';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // datasource\n isFetching: false,\n data: [],\n error: null,\n\n // form\n time_ahead: \"2\",\n\n downloadModalVisible: false,\n\n ...state,\n }\n}\n\nclass OwnershipWithTransitionContainer extends React.Component {\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchOwnershipsWithTransition = this.fetchOwnershipsWithTransition.bind(this);\n this.handleChangeTimePeriod = this.handleChangeTimePeriod.bind(this);\n }\n\n componentDidMount() {\n this.fetchOwnershipsWithTransition();\n }\n\n handleChangeTimePeriod(value) {\n this.setState({\n time_ahead: value,\n }, this.fetchOwnershipsWithTransition)\n }\n\n async fetchOwnershipsWithTransition(params = {}) {\n params = {\n ...params,\n time_ahead: this.state.time_ahead,\n };\n try {\n this.setState({ isFetching: true });\n let responseData = await this.props.fetchOwnershipsWithTransition(params);\n this.setState({\n isFetching: false,\n data: responseData.transition_ownerships,\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n error,\n });\n return\n }\n }\n\n renderTable() {\n if (this.state.data.length === 0) {\n if (this.state.isFetching) {\n return (\n \n \n \n )\n }\n return (\n \n { this.props.t(\"Portfolio.TenancyTransition.NoVacantExpiringTenancies\") }\n \n )\n }\n\n let columns = [{\n title: this.props.t(\"Properties.Property\"),\n dataIndex: 'name',\n key: 'name',\n render: (name, record) => (\n \n { name }\n \n ),\n }, {\n title: this.props.t(\"Properties.Address\"),\n dataIndex: 'address',\n key: 'address',\n }, {\n title: this.props.t(\"Portfolio.TenancyTransition.CurrentEndDate\"),\n dataIndex: 'expiring_tenancy_end_date',\n key: 'expiring_tenancy_end_date',\n render: (value) => {\n if (!value) {\n return null;\n }\n return DateUtils.formatDate(value);\n },\n }, {\n title: this.props.t(\"Portfolio.TenancyTransition.NextStartDate\"),\n dataIndex: 'next_tenancy_start_date',\n key: 'next_tenancy_start_date',\n render: (value) => {\n if (!value) {\n return null;\n }\n return DateUtils.formatDate(value);\n },\n }];\n\n return (\n \n )\n }\n\n render() {\n return (\n
\n
\n
\n

\n { this.props.t(\"Portfolio.TenancyTransition.VacantExpiringTenanciesIn\") }\n

\n this.handleChangeTimePeriod(value) }\n >\n {\n [\"2\",\"3\",\"4\",\"5\"].map((item, index) => (\n \n { item } { this.props.t(\"shared.months\") }\n \n ))\n }\n \n this.setState({ downloadModalVisible: true }) }\n >\n { this.props.t(\"actions.DownloadResults\") }\n \n
\n {\n const downloadQs = qs.stringify({\n fieldsToExport: ['owner_name'],\n }, { arrayFormat: 'brackets' });\n const downloadAllTenanciesUrl = `/tenancies.xlsx?${downloadQs}`;\n window.open(downloadAllTenanciesUrl, '_blank')\n }}\n >\n { this.props.t(\"actions.DownloadAll\") }\n \n
\n this.setState({ downloadModalVisible: false }) }\n onOk={ (values) => {\n const downloadQs = qs.stringify({\n time_ahead: this.state.time_ahead,\n fieldsToExport: Object.values(values).flat(),\n }, { arrayFormat: 'brackets' });\n const downloadAllUrl = `/portfolio/ownerships_with_transition_tenancy.xlsx?${downloadQs}`;\n window.open(downloadAllUrl, '_blank')\n this.setState({ downloadModalVisible: false })\n }}\n />\n { this.renderTable() }\n
\n )\n }\n}\n\n\nconst mapStateToProps = (state) => {\n return {\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n fetchOwnershipsWithTransition: (params = {}) => {\n return dispatch(PortfolioActions.fetchOwnershipsWithTransition(params));\n },\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(OwnershipWithTransitionContainer));\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport {\n Card,\n Col,\n Divider,\n Icon,\n Row,\n Spin,\n Statistic,\n Table,\n} from 'antd';\nimport { Chart, Axis, Legend, Tooltip, Geom } from 'bizcharts';\nimport numeral from 'numeral';\n\nimport { withTranslation } from 'react-i18next';\n\nimport {\n ThemeColors,\n} from '@constants/Theme';\nimport * as DateUtils from '@utils/date';\nimport * as PortfolioActions from '@actions/portfolio';\nimport AccountEntries from '@components/AccountEntries';\nimport EventCalendar from '@components/EventCalendar';\nimport OwnershipWithTransitionContainer from '@components/Portfolio/OwnershipWithTransitionContainer';\n\nclass Portfolio extends React.Component {\n constructor(props) {\n super(props);\n this.props.fetchSummary();\n this.props.fetchNetCashflow();\n }\n\n renderSummaryCards() {\n const summary = Object.assign({\n number_of_properties: '',\n // management_team_size: '',\n outstanding_rental_payments_count: '',\n outstanding_rental_payments_amount: '',\n pending_tasks_count: '',\n occupancy_rate: '',\n }, this.props.summaryData);\n\n const stats = [\n {\n title: this.props.t(\"Portfolio.PropertyCount\"),\n value: summary.number_of_properties,\n valueStyle: { color: ThemeColors.green },\n linkTo: {\n key: '/properties',\n },\n },\n {\n title: this.props.t(\"Portfolio.Occupancy-6\"),\n value: summary.occupancy_rate ? `${Math.round((summary.occupancy_rate[0] / summary.occupancy_rate[1]) * 1000)/10} %` : null,\n },\n {\n title: { summary.outstanding_rental_payments_count } { this.props.t(\"Portfolio.OutstandingPaymentCount\") },\n value: numeral(summary.outstanding_rental_payments_amount || 0).format('($0,0.[00])'),\n valueStyle: {\n color: (summary.outstanding_rental_payments_count > 0) ? ThemeColors.red : ThemeColors.black,\n },\n prefix: (summary.outstanding_rental_payments_count > 0) ? : null,\n },\n {\n title: this.props.t(\"Portfolio.PendingTasks\"),\n value: summary.pending_tasks_count,\n valueStyle: {\n color: (summary.pending_tasks_count > 0) ? ThemeColors.orange : ThemeColors.black,\n },\n prefix: (summary.pending_tasks_count > 0) ? : null,\n linkTo: {\n key: '/tasks',\n },\n },\n ]\n const colSpan = Math.floor(24 / stats.length);\n return (\n
\n \n {\n stats.map(({ title, value, valueStyle, prefix, linkTo }, index) => {\n const card = (\n \n {\n if (this.props.isFetchingSummaryData) {\n return ()\n }\n return value;\n }}\n prefix={ prefix }\n />\n \n )\n const linkedCard = (linkTo && linkTo.key) ? (\n \n { card }\n \n ) : card;\n\n return (\n \n { linkedCard }\n \n )\n })\n }\n \n
\n )\n }\n\n renderAccountEntries() {\n return (\n
\n \n
\n )\n }\n\n renderIncomeChart() {\n if (this.props.isFetchingNetCashFlowData) {\n return ;\n }\n const data = this.props.netCashFlowData.data;\n if (!data || data.length === 0) {\n return

No account data

;\n }\n return (\n \n \n \n \n \n \n \n );\n }\n\n render() {\n return (\n
\n
\n { this.renderSummaryCards() }\n
\n
\n { this.renderAccountEntries() }\n
\n
\n \n
\n
\n \n

{ this.props.t(\"Portfolio.NetCashFlow\") }

\n
\n { this.renderIncomeChart() }\n
\n
\n \n

{ this.props.t(\"Portfolio.ImportantDates\") }

\n
\n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n isFetchingSummaryData: state.portfolioReducer.isFetchingSummaryData,\n summaryData: state.portfolioReducer.summaryData,\n errorFetchingSummaryData: state.portfolioReducer.errorFetchingSummaryData,\n isFetchingNetCashFlowData: state.portfolioReducer.isFetchingNetCashFlowData,\n netCashFlowData: state.portfolioReducer.netCashFlowData,\n errorFetchingNetCashFlowData: state.portfolioReducer.errorFetchingNetCashFlowData,\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n fetchSummary: () => { return dispatch(PortfolioActions.fetchSummary()).catch((error) => {}) },\n fetchNetCashflow: () => { return dispatch(PortfolioActions.fetchNetCashflow()).catch((error) => {}) },\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Portfolio));\n","export const OwnershipStatusOptions = {\n \"error\": {\n value: \"error\",\n ttextKey: \"Properties.StatusOptions.error\",\n color: \"red\",\n },\n \"warning\": {\n value: \"warning\",\n ttextKey: \"Properties.StatusOptions.warning\",\n color: \"orange\",\n },\n \"ok\": {\n value:\" ok\",\n ttextKey: \"Properties.StatusOptions.ok\",\n color: \"green\",\n },\n}\n\nexport const OwnershipUsageOptions = {\n \"residential\": {\n value: \"residential\",\n text: \"Residential\",\n },\n \"office\": {\n value: \"office\",\n text: \"Office\",\n },\n \"shop\": {\n value: \"shop\",\n text: \"Shop\"\n },\n \"industrial\": {\n value: \"industrial\",\n text: \"Industrial\",\n },\n \"carpark\": {\n value: \"carpark\",\n text: \"Carpark\",\n },\n}\n","export const isNotDefined = (ownership) => {\n return (!ownership || !ownership.name)\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Alert,\n Card,\n Popover,\n Row,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\nimport * as DateUtils from '@utils/date';\n\nclass OwnershipCard extends React.Component {\n static propTypes = {\n title: PropTypes.node,\n status: PropTypes.node,\n onClick: PropTypes.func.isRequired,\n ownership: PropTypes.object.isRequired,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { ownership } = this.props;\n const popoverContainer = (\n
\n

{ ownership.name }

\n

\n { ownership.address }\n

\n {\n ownership.alerts.map((alert, index) => {\n return (\n \n )\n })\n }\n
\n )\n return (\n \n \n \n

{ this.props.t(\"Properties.NextPayment\") }:

\n

\n {\n ownership.next_payment_due_date &&\n DateUtils.formatDate(ownership.next_payment_due_date)\n }\n

\n
\n \n \n )\n }\n}\n\nexport default withTranslation('common')(OwnershipCard);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Form,\n Input,\n Modal,\n Select,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport { OwnershipUsageOptions } from '@constants/models/Ownership';\n\nclass CreateForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n return\n }\n }\n\n renderForm() {\n const { getFieldDecorator } = this.props.form;\n return (\n
\n \n {getFieldDecorator('name', {\n rules: [{ required: true, message: 'Please input the nickname of the property!' }],\n })(\n \n )}\n \n \n {getFieldDecorator(\"usage_type\", {\n rules: [\n { required: true, message: \"Please select a property type!\" }\n ]\n })(\n \n {Object.values(OwnershipUsageOptions).map(ownershipUsage => (\n \n {ownershipUsage.text}\n \n ))}\n \n )}\n \n \n {getFieldDecorator('address', {\n validate: [{\n trigger: 'onChange',\n rules: [\n { required: true, message: 'Please input the property address!' },\n ],\n }, {\n trigger: 'onBlur',\n rules: [\n { min: 10, message: 'Please input a valid property address!' },\n ],\n }],\n })(\n \n )}\n \n \n )\n }\n\n render() {\n const { visible, onCancel, onOk, confirmLoading } = this.props;\n return (\n \n { this.renderForm() }\n \n )\n }\n}\n\nconst WrappedCreateForm = Form.create({ name: 'ownership_create_form_in_modal' })(CreateForm);\n\nexport default withTranslation('common')(WrappedCreateForm);\n","import React from 'react';\n\nimport ReactQuill, { Quill } from 'react-quill';\nlet Block = Quill.import(\"blots/block\")\nBlock.tagName = \"DIV\"\nQuill.register(Block, true)\n\nimport 'react-quill/dist/quill.snow.css';\n\nexport default class QuillEditor extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n \n )\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Checkbox,\n Form,\n Icon,\n Input,\n Modal,\n Switch,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport QuillEditor from '@components/QuillEditor'\n\nclass UpdateSettingsForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n ownership: PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n })\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(value) {\n this.props.form.setFieldsValue({\n invoice_remarks: value,\n })\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n return\n }\n }\n\n render() {\n const { visible, onOk, onCancel, confirmLoading, form, ownership } = this.props;\n const { getFieldDecorator } = form;\n\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 },\n };\n\n return (\n \n { this.props.children }\n
\n \n {getFieldDecorator('name', {\n initialValue: ownership.name,\n rules: [\n { required: true, message: 'Please input a property name' },\n ],\n })(\n \n )}\n \n { false && (
\n \n {getFieldDecorator('send_invoices', {\n valuePropName: 'checked',\n initialValue: ownership.send_invoices || false,\n })(\n }\n unCheckedChildren={}\n />\n )}\n \n \n {getFieldDecorator('send_payment_reminders', {\n valuePropName: 'checked',\n initialValue: ownership.send_payment_reminders || false,\n })(\n }\n unCheckedChildren={}\n />\n )}\n \n \n {getFieldDecorator('send_receipts', {\n valuePropName: 'checked',\n initialValue: ownership.send_receipts || false,\n })(\n }\n unCheckedChildren={}\n />\n )}\n \n
)}\n \n {getFieldDecorator('bank_name', {\n initialValue: ownership.bank_name || \"\",\n })(\n \n )}\n \n \n {getFieldDecorator('bank_address', {\n initialValue: ownership.bank_address || \"\",\n })(\n \n )}\n \n \n {getFieldDecorator('bank_swift_code', {\n initialValue: ownership.bank_swift_code || \"\",\n })(\n \n )}\n \n \n {getFieldDecorator('bank_account_name', {\n initialValue: ownership.bank_account_name || \"\",\n })(\n \n )}\n \n \n {getFieldDecorator('bank_account_number', {\n initialValue: ownership.bank_account_number || \"\",\n })(\n \n )}\n \n \n {getFieldDecorator('include_signature_for_autogenerated', {\n initialValue: ownership.include_signature_for_autogenerated,\n })(\n \n )}\n \n \n {getFieldDecorator('invoice_number_generator', {\n initialValue: ownership.invoice_number_generator || \"\",\n })(\n \n )}\n \n \n {getFieldDecorator('invoice_remarks', {\n initialValue: ownership.invoice_remarks || \"\",\n })(\n \n )}\n \n \n \n \n );\n }\n}\n\nconst WrappedUpdateSettingsForm = Form.create({ name: 'ownership_settings_update_form_in_modal' })(UpdateSettingsForm);\n\nexport default withTranslation('common')(WrappedUpdateSettingsForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n DatePicker,\n Form,\n Icon,\n Input,\n InputNumber,\n Modal,\n Switch,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nclass UpdatePropertyInfoForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n ownership: PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n })\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n return\n }\n }\n\n render() {\n const { visible, onCancel, onOk, confirmLoading, form, ownership } = this.props;\n const { getFieldDecorator } = form;\n\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 },\n };\n\n return (\n \n { this.props.children }\n
\n \n {getFieldDecorator('address', {\n initialValue: ownership.address,\n rules: [\n { required: true, message: 'Please input a property address' },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('net_sqft', {\n initialValue: ownership.net_sqft,\n rules: [\n { required: false, message: 'Please input a property area' },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('gross_sqft', {\n initialValue: ownership.gross_sqft,\n rules: [\n { required: false, message: 'Please input a property area' },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('purchase_price', {\n initialValue: ownership.purchase_price,\n rules: [{ required: false, message: 'Please input purchase price' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n \n {getFieldDecorator(\"purchase_date\", {\n initialValue: ownership.purchase_date ? moment(ownership.purchase_date) : null,\n rules: [{ required: false, message: 'Please input purchase date!' }],\n })(\n \n )}\n \n {/* TODO: translate */}\n \n {getFieldDecorator('rent_and_rates_account_number', {\n initialValue: ownership.rent_and_rates_account_number,\n rules: [\n { required: false, message: 'Please input account number' },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator(\"notes\", {\n initialValue: ownership.notes,\n rules: [{ required: false, message: 'Please input notes!' }],\n })(\n \n )}\n \n \n \n );\n }\n}\n\nconst WrappedUpdatePropertyInfoForm = Form.create({ name: 'ownership_info_update_form_in_modal' })(UpdatePropertyInfoForm);\n\nexport default withTranslation('common')(WrappedUpdatePropertyInfoForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Checkbox,\n Divider,\n Form,\n Icon,\n message,\n Switch,\n Tooltip,\n Typography,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\nimport numeral from 'numeral';\nimport dompurify from 'dompurify';\n\nimport * as DateUtils from '@utils/date';\nimport * as OwnershipActions from '@actions/ownerships';\nimport UpdateSettingsForm from './UpdateSettingsForm';\nimport UpdatePropertyInfoForm from './UpdatePropertyInfoForm';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isUpdating: false,\n errorUpdating: null,\n\n // modal\n isEditingSettings: false,\n isEditingInfo: false,\n\n ...state,\n };\n}\n\nclass OwnershipSettings extends React.Component {\n static propTypes = {\n ownership: PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n }).isRequired,\n }\n\n static defaultProps = {\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onSubmitUpdateOwnershipSettings = this.onSubmitUpdateOwnershipSettings.bind(this);\n this.onSubmitUpdateOwnershipInfo = this.onSubmitUpdateOwnershipInfo.bind(this);\n }\n\n async onSubmitUpdateOwnershipSettings() {\n const { ownership } = this.props;\n const { form } = this.updateSettingsFormRef.props;\n try {\n let values = await form.validateFields();\n this.setState({ isUpdating: true });\n let responseData = await this.props.updateOwnershipSettings(ownership.id, values);\n this.setState({\n isEditingSettings: false,\n isUpdating: false,\n })\n message.success(this.props.t(\"OwnershipDetailSections.Settings.messages.UpdatedSettings.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"OwnershipDetailSections.Settings.messages.UpdatedSettings.Fail\"));\n return null;\n }\n }\n\n async onSubmitUpdateOwnershipInfo() {\n const { ownership } = this.props;\n const { form } = this.updateInfoFormRef.props;\n try {\n let values = await form.validateFields();\n this.setState({ isUpdating: true });\n let responseData = await this.props.updateOwnershipInfo(ownership.id, values);\n this.setState({\n isEditingInfo: false,\n isUpdating: false,\n })\n message.success(this.props.t(\"OwnershipDetailSections.Settings.messages.UpdatePropertyInfo.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n isUpdating: false,\n errorUpdating: error,\n });\n message.error(this.props.t(\"OwnershipDetailSections.Settings.messages.UpdatePropertyInfo.Fail\"));\n return null;\n }\n }\n\n saveUpdateSettingsFormRef = formRef => {\n this.updateSettingsFormRef = formRef;\n }\n\n saveUpdateInfoFormRef = formRef => {\n this.updateInfoFormRef = formRef;\n }\n\n render() {\n const { ownership } = this.props;\n\n const settings = [{\n title: this.props.t(\"Properties.PropertyName\"),\n shouldRender: true,\n render: () => (ownership.name)\n // }, {\n // title: \"Send invoices\",\n // render: () => (\n // }\n // unCheckedChildren={}\n // checked={ ownership.send_invoices || false }\n // />\n // )\n // }, {\n // title: \"Send payment reminders\",\n // render: () => (\n // }\n // unCheckedChildren={}\n // checked={ ownership.send_payment_reminders || false }\n // />\n // )\n // }, {\n // title: \"Send receipts\",\n // render: () => (\n // }\n // unCheckedChildren={}\n // checked={ ownership.send_receipts || false }\n // />\n // )\n }, {\n title: \"Managed by GV Properties\", // TODO: translate\n titleHelper: () => (\n \n { /* TODO: translate */ }\n \n \n ),\n shouldRender: ownership.is_accounts_managed_by_gv,\n render: () => (\n }\n unCheckedChildren={}\n checked={ ownership.is_accounts_managed_by_gv || false }\n />\n )\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.BankName\"),\n shouldRender: true,\n render: () => (ownership.bank_name)\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.BankSwift\"),\n shouldRender: true,\n render: () => (ownership.bank_swift_code),\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.BankAddress\"),\n shouldRender: true,\n render: () => (ownership.bank_address),\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.BankAccountName\"),\n shouldRender: true,\n render: () => (ownership.bank_account_name)\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.BankAccountNumber\"),\n shouldRender: true,\n render: () => (ownership.bank_account_number)\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.IncludeSignature\"),\n shouldRender: true,\n render: () => (\n \n ),\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.DebitNoteFormat\"),\n shouldRender: true,\n render: () => (ownership.invoice_number_generator),\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.DebitNoteRemarks\"),\n shouldRender: true,\n render: () => ownership.invoice_remarks && (\n \n )\n }];\n\n const info = [{\n title: this.props.t(\"Properties.PropertyType\"),\n shouldRender: true,\n render: () => (ownership.usage_type),\n }, {\n title: this.props.t(\"Properties.Address\"),\n shouldRender: true,\n render: () => (ownership.address),\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.NetArea\"),\n shouldRender: true,\n render: () => (ownership.net_sqft) ? `${numeral(ownership.net_sqft).format('0,0')} sqft.` : null,\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.GrossArea\"),\n shouldRender: true,\n render: () => (ownership.gross_sqft) ? `${numeral(ownership.gross_sqft).format('0,0')} sqft.` : null,\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.PurchasePrice\"),\n shouldRender: true,\n render: () => (ownership.purchase_price) ? numeral(ownership.purchase_price).format('($0,0)') : null,\n }, {\n title: this.props.t(\"OwnershipDetailSections.Settings.PurchaseDate\"),\n shouldRender: true,\n render: () => ownership.purchase_date ? DateUtils.formatDate(ownership.purchase_date) : null,\n }, {\n title: \"Rent and Rates Account Number\", // TODO: translate\n shouldRender: !!ownership.rent_and_rates_account_number,\n render: () => ownership.rent_and_rates_account_number,\n }, {\n title: this.props.t(\"shared.Notes\"),\n shouldRender: true,\n render: () => (\n
\n { ownership.notes }\n
\n ),\n }]\n\n const formItemLayout = {\n labelCol: { span: 8 },\n wrapperCol: { span: 16 },\n };\n\n return (\n
\n this.setState({ isEditingSettings: false }) }\n onOk={ () => this.onSubmitUpdateOwnershipSettings() }\n />\n this.setState({ isEditingInfo: false }) }\n onOk={ () => this.onSubmitUpdateOwnershipInfo() }\n />\n
\n Settings\n this.setState({ isEditingSettings: true }) }\n >\n { this.props.t(\"OwnershipDetailSections.Settings.actions.UpdateSettings\") }\n \n
\n {\n settings.filter(({ shouldRender}) => { return shouldRender }).map(item => (\n \n \n { item.title }\n \n { item.titleHelper && item.titleHelper() }\n \n }\n style={{ margin: 0, fontSize: 16 }}\n {...formItemLayout}\n >\n { item.render() }\n \n ))\n }\n \n
\n
\n Property Details\n this.setState({ isEditingInfo: true }) }\n >\n { this.props.t(\"OwnershipDetailSections.Settings.actions.UpdateDetails\") }\n \n
\n {\n info.filter(({ shouldRender}) => { return shouldRender }).map(item => (\n \n { item.title }\n \n }\n style={{ margin: 0, fontSize: 16 }}\n {...formItemLayout}\n >\n { item.render() }\n \n ))\n }\n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n updateOwnershipSettings: (ownershipId, values) => {\n return dispatch(OwnershipActions.updateOwnershipSettings(ownershipId, values));\n },\n updateOwnershipInfo: (ownershipId, values) => {\n return dispatch(OwnershipActions.updateOwnershipInfo(ownershipId, values));\n },\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(OwnershipSettings));\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchDocuments = (params = {}) => {\n return Api.get(\n 'documents',\n ActionTypes.FETCH_DOCUMENTS,\n params,\n );\n}\n\nexport const createDocument = (ownershipId, params = {}) => {\n return Api.postUpload(\n `documents`,\n ActionTypes.CREATE_DOCUMENT,\n {\n ownership_id: ownershipId,\n ...params,\n },\n {\n ownershipId,\n },\n )\n}\n\nexport const updateDocument = (documentId, params = {}) => {\n return Api.put(\n `documents/${documentId}`,\n ActionTypes.UPDATE_DOCUMENT,\n params,\n {},\n )\n}\n\nexport const destroyDocument = (documentId, ownershipId) => {\n return Api.del(\n `documents/${documentId}`,\n ActionTypes.DESTROY_DOCUMENT,\n {},\n {\n documentId,\n ownershipId,\n }\n )\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n DatePicker,\n Form,\n Icon,\n Input,\n Modal,\n Select,\n Spin,\n Upload,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnershipActions from '@actions/ownerships';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingOwnerships: false,\n ownershipsById: {},\n errorFetchingOwnerships: null,\n fileList: [],\n ...state,\n };\n}\n\nclass CreateForm extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number,\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n // form: PropTypes.\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onCancel = this.onCancel.bind(this);\n this.onOk = this.onOk.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n this.setState({ isFetchingOwnerships: true });\n let params = (this.props.ownershipId) ? { ownership_id: this.props.ownershipId } : {};\n this.props.fetchOwnershipsWithManagers(params).then((responseData) => {\n this.setState({\n isFetchingOwnerships: false,\n ownershipsById: {\n ...ArrayUtils.arrayToObject(responseData.ownerships),\n },\n });\n }).catch((error) => {\n this.setState({\n isFetchingOwnerships: false,\n errorFetchingOwnerships: error,\n })\n });\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n onCancel() {\n this.props.onCancel();\n }\n\n async onOk() {\n const { fileList } = this.state;\n this.props.form.setFieldsValue({\n file: (fileList.length > 0) ? fileList[0] : null,\n })\n let isFormValid = await this.props.onOk();\n if (isFormValid && isFormValid.response) {\n this.setState({\n fileList: [],\n });\n }\n }\n\n renderForm() {\n const { getFieldDecorator } = this.props.form;\n const { ownershipId } = this.props;\n\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 17, offset: 1 },\n };\n\n return (\n
\n \n {getFieldDecorator(\"ownership_id\", {\n rules: [{\n required: true,\n message: `${ this.props.t(\"Properties.messages.Form.PleaseSelectProperty\") }!`,\n }],\n })(\n 5) }\n filterOption={ (inputValue, option) => {\n const ownershipId = parseInt(option.key);\n const ownership = this.state.ownershipsById[ownershipId];\n if (ownership.name.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n if (ownership.address.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n return false;\n }}\n notFoundContent={\n this.state.isFetchingOwnerships ? : null\n }\n >\n {\n Object.values(this.state.ownershipsById).map((ownership) => (\n \n { ownership.name }. { ownership.address }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator('doc_type', {\n rules: [{\n required: true,\n message: `${ this.props.t(\"Documents.messages.Form.PleaseSelectDocumentType\") }!`,\n }],\n })(\n \n {\n Object.values(this.props.DocumentTypeOptions).sort((a, b) => (a.text.localeCompare(b.text))).map((docTypeOption) => (\n \n { docTypeOption.text }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator('doc_name', {\n rules: [{\n required: false,\n message: `${ this.props.t(\"Documents.messages.Form.PleaseInputDocumentName\") }!`,\n }],\n })(\n \n )}\n \n \n {getFieldDecorator('date', {\n rules: [{\n required: false,\n message: `${ this.props.t(\"Documents.messages.Form.PleaseSelectDocumentDate\") }!`,\n }],\n })(\n \n )}\n \n \n {getFieldDecorator('description', {\n rules: [\n ],\n })(\n \n )}\n \n \n
\n {getFieldDecorator('file', {\n getValueFromEvent: this.normFile,\n rules: [{\n required: true,\n message: `${ this.props.t(\"Documents.messages.Form.PleaseSelectDocument\") }!`,\n }],\n })(\n {\n this.setState({ fileList: [] });\n }\n }\n beforeUpload={\n (file) => {\n this.setState({\n fileList: [file],\n });\n return false;\n }\n }\n fileList={ this.state.fileList }\n name=\"file\"\n >\n \n \n )}\n
\n \n \n )\n }\n\n render() {\n const { visible, confirmLoading } = this.props;\n\n return (\n \n { this.renderForm() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n DocumentTypeOptions: state.documentsReducer.DocumentTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwnershipsWithManagers: (params) => {\n return (dispatch(OwnershipActions.fetchOwnershipsWithManagers(params)));\n },\n };\n}\n\nconst ConnectedCreateForm = connect(mapStateToProps, mapDispatchToProps)(CreateForm);\n\nconst WrappedCreateForm = Form.create({\n name: \"document_create_form_in_modal\"\n})(ConnectedCreateForm);\n\nexport default withTranslation('common')(WrappedCreateForm);\n","import React from \"react\";\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n DatePicker,\n Form,\n Input,\n Modal,\n Select,\n} from \"antd\";\n\nimport moment from \"moment\";\nimport { withTranslation } from 'react-i18next';\n\nimport * as DocumentActions from '@actions/ownerships';\n\nclass UpdateForm extends React.Component {\n static propTypes = {\n document: PropTypes.shape({\n id: PropTypes.number.isRequired,\n date: PropTypes.string,\n description: PropTypes.string,\n }),\n visible: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n confirmLoading: PropTypes.bool,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);;\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n return\n }\n }\n\n renderForm() {\n const { document } = this.props;\n const { getFieldDecorator } = this.props.form;\n const formItemLayout = {\n labelCol: { span: 12 },\n wrapperCol: { span: 12 }\n };\n return (\n
\n \n { document.ownership_name }\n
\n { document.ownership_address }\n \n \n {getFieldDecorator('doc_type', {\n initialValue: document.type,\n rules: [{\n required: true,\n message: `${ this.props.t(\"Documents.messages.Form.PleaseSelectDocumentType\") }!`,\n }],\n })(\n \n {\n Object.values(this.props.DocumentTypeOptions).sort((a, b) => (a.text.localeCompare(b.text))).map((docTypeOption) => (\n \n { docTypeOption.text }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator('doc_name', {\n initialValue: document.doc_name,\n rules: [\n { required: false, message: `${ this.props.t(\"Documents.messages.Form.PleaseInputDocumentName\") }!` },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('date', {\n initialValue: document.date ? moment(document.date) : null,\n rules: [\n { required: false, message: `${ this.props.t(\"Documents.messages.Form.PleaseSelectDocumentDate\") }!` },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('description', {\n initialValue: document.description,\n rules: [\n ],\n })(\n \n )}\n \n \n )\n }\n\n render() {\n const { document } = this.props;\n if (!document) {\n return null;\n }\n\n return (\n \n { this.renderForm() }\n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n DocumentTypeOptions: state.documentsReducer.DocumentTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedUpdateForm = connect(mapStateToProps, mapDispatchToProps)(UpdateForm);\n\nconst WrappedUpdateForm = Form.create({\n name: \"documents_update_form_in_modal\"\n})(ConnectedUpdateForm);\n\nexport default withTranslation('common')(WrappedUpdateForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nimport {\n Spin,\n Table,\n} from 'antd';\n\nimport moment from 'moment';\nimport Highlighter from 'react-highlight-words';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\n\nclass DocumentsTable extends React.Component {\n static propTypes = {\n showPropertyName: PropTypes.bool,\n dataSource: PropTypes.array.isRequired,\n loading: PropTypes.bool,\n sorter: PropTypes.object,\n pagination: PropTypes.object,\n }\n\n static defaultProps = {\n showPropertyName: false,\n dataSource: [],\n loading: false,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { sorter, filteredInfo } = this.props;\n let columns = [{\n title: this.props.t(\"Documents.DocumentType\"),\n dataIndex: 'type',\n key: 'type',\n sorter: (a, b) => (a.type.localeCompare(b.type)),\n sortOrder: sorter.columnKey === 'type' && sorter.order,\n render: (type, record) => {\n return record.doc_type_display_name;\n },\n }, {\n title: this.props.t(\"shared.Date\"),\n dataIndex: 'date',\n key: 'date',\n sorter: (a, b) => {\n // if DESCENDING, null will be first\n if (!a.date) {\n return 1;\n } else if (!b.date) {\n return -1;\n }\n return moment(a.date) - moment(b.date)\n },\n sortOrder: sorter.columnKey === 'date' && sorter.order,\n render: (value) => value && DateUtils.formatDate(value),\n }];\n\n if (this.props.showPropertyName) {\n columns.splice(1, 0, {\n title: this.props.t(\"Properties.Property\"),\n dataIndex: 'ownership_name',\n key: 'ownership_name',\n sorter: (a, b) => (a.ownership_name.localeCompare(b.ownership_name)),\n sortOrder: sorter.columnKey === 'ownership_name' && sorter.order,\n render: (value, record) => (\n \n \n \n )\n })\n }\n\n return (\n record.id }\n columns={ columns }\n { ...this.props }\n />\n )\n }\n}\n\nexport default withTranslation('common')(DocumentsTable)\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport {\n Button,\n Col,\n Form,\n Input,\n Row,\n Select,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/FilterForm.scss';\n\nclass FilterForm extends React.Component {\n static propTypes = {\n showPropertyName: PropTypes.bool,\n filteredInfo: PropTypes.shape({\n displayName: PropTypes.string,\n address: PropTypes.address,\n selectedDocumentTypes: PropTypes.array,\n }).isRequired,\n loading: PropTypes.bool,\n onSubmit: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n showPropertyName: false,\n loading: false,\n onSubmit: (filteredInfo) => {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n filteredInfo: { ...this.props.filteredInfo },\n };\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.filteredInfo !== this.props.filteredInfo) {\n this.setState({\n filteredInfo: this.props.filteredInfo,\n });\n }\n }\n\n isDirty() {\n const keys = Object.keys(this.state.filteredInfo);\n return keys.some((key) => this.props.filteredInfo[key] !== this.state.filteredInfo[key]);\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n },\n });\n }\n\n onSubmit() {\n this.props.onSubmit(this.state.filteredInfo);\n }\n\n getFormItems() {\n const items = [{\n label: this.props.t(\"Properties.Property\"),\n shouldRender: this.props.showPropertyName,\n span: 6,\n renderChildren: () => (\n this.onChangeFilter('displayName', e.target.value) }\n />\n ),\n }, {\n label: this.props.t(\"Properties.Address\"),\n shouldRender: this.props.showPropertyName,\n span: 6,\n renderChildren: () => (\n this.onChangeFilter('address', e.target.value) }\n />\n ),\n }, {\n label: this.props.t(\"shared.Type\"),\n shouldRender: true,\n span: this.props.showPropertyName ? 6 : 16,\n renderChildren: () => (\n this.onChangeFilter('selectedDocumentTypes', values) }\n >\n {\n Object.values(this.props.DocumentTypeOptions).sort((a, b) => (a.text.localeCompare(b.text))).map((docTypeOption) => (\n \n { docTypeOption.text }\n \n ))\n }\n \n ),\n }, {\n label: null,\n shouldRender: true,\n span: 6,\n renderChildren: () => (\n \n { this.props.t(\"actions.Search\") }\n \n ),\n }];\n return items.filter(({ shouldRender }) => { return shouldRender }).map((item, index) => {\n return (\n \n \n { item.renderChildren() }\n \n \n )\n });\n }\n\n render() {\n return (\n
\n
\n \n { this.getFormItems() }\n \n \n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n DocumentTypeOptions: state.documentsReducer.DocumentTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(FilterForm));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n Popconfirm,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\n\nclass DocumentShow extends React.Component {\n static propTypes = {\n document: PropTypes.shape({\n preview_url: PropTypes.string,\n url: PropTypes.string,\n ownership_name: PropTypes.string,\n doc_type_display_name: PropTypes.string,\n date: PropTypes.string,\n description: PropTypes.description,\n }),\n onClickEdit: PropTypes.func.isRequired,\n onDestroy: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n onDestroy: () => {},\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { document } = this.props;\n return (\n
\n \n
\n window.open(document.url,'_blank') }\n >\n { this.props.t(\"Documents.actions.OpenDocument\") }\n \n \n { this.props.t(\"Documents.actions.EditDocument\") }\n \n {\n this.props.onDestroy();\n }}\n >\n \n \n
\n
\n

{ document.ownership_name }: { document.doc_type_display_name }

\n
\n
\n

{ document.date && DateUtils.formatDate(document.date) }

\n
\n
\n

\n { document.description }\n

\n
\n
\n )\n }\n}\n\n\nexport default withTranslation('common')(DocumentShow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Col,\n Icon,\n message,\n Row,\n Table,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as DocumentsActions from '@actions/documents';\nimport CreateForm from '@components/Documents/CreateForm';\nimport UpdateForm from '@components/Documents/UpdateForm';\nimport DocumentsTable from '@components/Documents/List';\nimport FilterForm from '@components/Documents/FilterForm';\nimport DocumentShow from '@components/Documents/Show';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isCreating: false,\n isFetching: false,\n itemsById: {},\n errorCreating: null,\n errorFetching: null,\n\n // modals\n selectedItemId: null,\n createModalVisible: false,\n showUpdatingModal: false,\n\n // search params\n filteredInfo: {\n address: '',\n displayName: '',\n selectedDocumentTypes: [],\n },\n pagination: {\n current: 1,\n pageSize: 10,\n },\n sorter: {\n columnKey: 'date',\n order: 'descend',\n },\n ...state,\n }\n}\n\nclass Documents extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number,\n }\n\n static defaultProps = {\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.handleFilterFormSubmit = this.handleFilterFormSubmit.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.fetchDocuments = this.fetchDocuments.bind(this);\n this.onSelectItem = this.onSelectItem.bind(this);\n this.onCreateSubmit = this.onCreateSubmit.bind(this);\n this.onUpdateSubmit = this.onUpdateSubmit.bind(this);\n this.onDestroyDocument = this.onDestroyDocument.bind(this);\n }\n\n componentDidMount() {\n this.fetchDocuments();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.ownershipId !== this.props.ownershipId) {\n this.setState({ selectedItemId: null });\n this.fetchDocuments();\n }\n }\n\n handleFilterFormSubmit(filteredInfo) {\n this.setState({\n filteredInfo,\n pagination: {\n ...this.state.pagination,\n current: 1,\n },\n }, this.fetchDocuments);\n }\n\n handleListChange = (pagination, filters, sorter) => {\n this.setState({\n pagination,\n sorter,\n }, this.fetchDocuments)\n }\n\n async fetchDocuments(params = {}) {\n if (this.props.ownershipId) {\n params = {\n ...params,\n ownership_id: this.props.ownershipId,\n }\n }\n this.setState({\n isFetching: true,\n itemsById: {},\n selectedItemId: null,\n });\n try {\n let responseData = await this.props.fetchDocuments({\n page: this.state.pagination.current,\n results: this.state.pagination.pageSize,\n sortField: this.state.sorter.columnKey,\n sortOrder: this.state.sorter.order,\n filter: this.state.filteredInfo,\n ...params,\n });\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.documents),\n },\n pagination: {\n ...this.state.pagination,\n total: responseData.pagy ? responseData.pagy.count : responseData.documents.length,\n },\n });\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n itemsById: {},\n });\n }\n }\n\n onSelectItem(itemId) {\n this.setState({ selectedItemId: itemId });\n }\n\n async onCreateSubmit() {\n const { form } = this.createFormRef.props;\n try {\n let values = await form.validateFields();\n const ownershipId = this.props.ownershipId ? this.props.ownershipId : values[\"ownership_id\"];\n if (!ownershipId) {\n return\n }\n this.setState({ isCreating: true });\n const responseData = await this.props.createDocument(ownershipId, values);\n const newDocument = responseData.document;\n this.setState({\n isCreating: false,\n createModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [newDocument.id]: newDocument,\n },\n });\n message.success(this.props.t(\"Documents.messages.AddDocument.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n isCreating: false,\n errorCreating: error,\n });\n message.error(this.props.t(\"Documents.messages.AddDocument.Fail\"));\n return null\n }\n }\n\n async onUpdateSubmit() {\n let document = this.getSelectedDocument();\n if (!document) {\n return\n }\n const { form } = this.updateFormRef.props;\n try {\n let values = await form.validateFields();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [document.id]: {\n ...document,\n isUpdating: true,\n },\n },\n });\n const responseData = await this.props.updateDocument(document.id, values);\n const updatedDocument = responseData.document;\n this.setState({\n showUpdatingModal: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedDocument.id]: updatedDocument,\n },\n });\n message.success(this.props.t(\"Documents.messages.EditDocument.Success\"));\n return responseData;\n } catch (error) {\n document = this.getSelectedDocument();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [document.id]: {\n ...document,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n message.error(this.props.t(\"Documents.messages.EditDocument.Fail\"));\n return;\n }\n }\n\n onDestroyDocument(document) {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [document.id]: {\n ...this.state.itemsById[document.id],\n isDestroying: true,\n errorDestroying: null,\n },\n },\n });\n\n return this.props.destroyDocument(document.id, document.ownership_id).then((responseData) => {\n let itemsById = { ...this.state.itemsById };\n delete itemsById[document.id];\n this.setState({\n itemsById,\n })\n message.success(`${this.props.t(\"Documents.messages.DeleteDocument.Success\")}: ${document.doc_type_display_name}`)\n return responseData;\n }).catch((error) => {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [document.id]: {\n ...this.state.itemsById[document.id],\n isDestroying: false,\n errorDestroying: error,\n },\n },\n });\n message.error(`${this.props.t(\"Documents.messages.DeleteDocument.Fail\")}: ${document.doc_type_display_name}`)\n })\n }\n\n getSelectedDocument() {\n return this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n }\n\n renderShow() {\n const document = this.getSelectedDocument();\n if (!document) {\n return null;\n }\n\n return (\n (
),\n filterIcon: filtered => ,\n onFilter: (value, record) => true,\n onFilterDropdownVisibleChange: (visible) => this.setState({ selectedItemId: null }),\n }]}\n dataSource={ [] }\n locale={{ emptyText: (\n this.setState({ showUpdatingModal: true }) }\n onDestroy={ () => this.onDestroyDocument(document) }\n />\n )}}\n />\n )\n }\n\n saveCreateFormRef = formRef => {\n this.createFormRef = formRef;\n }\n\n saveUpdateFormRef = formRef => {\n this.updateFormRef = formRef;\n }\n\n render() {\n const dataSource = Object.values(this.state.itemsById);\n const showComponent = this.renderShow();\n const showPropertyName = !this.props.ownershipId;\n const selectedDocument = this.getSelectedDocument();\n return (\n
\n this.setState({ createModalVisible: false })}\n onOk={ this.onCreateSubmit }\n ownershipId={ this.props.ownershipId }\n confirmLoading={ this.state.isCreating }\n />\n this.setState({ showUpdatingModal: false }) }\n onOk={ this.onUpdateSubmit }\n confirmLoading={\n (selectedDocument && selectedDocument.isUpdating)\n }\n />\n \n this.setState({ createModalVisible: true })}\n >\n { this.props.t(\"Documents.actions.AddDocument\") }\n \n \n \n `${range[0]}-${range[1]} of ${total} items`,\n showSizeChanger: true,\n }}\n filteredInfo={ this.state.filteredInfo }\n sorter={ this.state.sorter }\n onChange={ this.handleListChange }\n onRow={ (record, rowIndex) => {\n return {\n onClick: (event) => this.setState({ selectedItemId: record.id }),\n }\n }}\n />\n \n \n { showComponent }\n \n \n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n createDocument: (ownershipId, values) => {\n return dispatch(DocumentsActions.createDocument(ownershipId, values));\n },\n updateDocument: (documentId, params = {}) => {\n const { date, ...rest } = params;\n return dispatch(DocumentsActions.updateDocument(documentId, {\n ...rest,\n date: date ? date.format('YYYY-MM-DD') : null,\n }));\n },\n fetchDocuments: (params = {}) => {\n return dispatch(DocumentsActions.fetchDocuments(params));\n },\n destroyDocument: (documentId, ownershipId) => {\n return dispatch(DocumentsActions.destroyDocument(documentId, ownershipId));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Documents));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Link,\n} from 'react-router-dom';\nimport {\n Button,\n Card,\n Descriptions,\n Tag,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\n\nclass OwnerCard extends React.Component {\n static propTypes = {\n owner: PropTypes.object,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { owner } = this.props;\n const descriptions = [{\n label: this.props.t(\"Owners.CorrespondenceAddress\"),\n shouldRender: true,\n render: () => (\n \n { owner.correspondence_address }\n \n ),\n }, {\n label: this.props.t(\"shared.ContactDetails\"),\n shouldRender: true,\n render: () => (\n \n { owner.contact_details }\n \n ),\n }, {\n label: this.props.t(\"Owners.IDNumber\"),\n shouldRender: !owner.is_company,\n render: () => (\n owner.id_card_number\n ),\n }, {\n label: this.props.t(\"Owners.BusinessRegistration\"),\n shouldRender: owner.is_company,\n render: () => {\n const expiration = owner.br_expiry_date ? (
{ this.props.t(\"Owners.BRExpiryDate\") }: { DateUtils.formatDate(owner.br_expiry_date) }
) : null;\n const cert_num = owner.br_cert_number ? (
{ this.props.t(\"Owners.BRNumber\") }: { owner.br_cert_number }
): null;\n const cert_url = owner.br_cert_url ? ({ this.props.t(\"actions.View\") }) : null\n return (\n
\n { expiration }\n { cert_num }\n { cert_url }\n
\n )\n },\n }, {\n label: this.props.t(\"Properties.Title\"),\n shouldRender: true,\n render: () => (\n
    \n {\n owner.ownerships.map((ownership) => (\n
  • \n \n { ownership.name }\n

    \n { ownership.address }\n \n
  • \n ))\n }\n
\n ),\n }]\n return (\n \n \n { owner.is_company ? this.props.t(\"Owners.Company\") : this.props.t(\"Owners.Individual\") }\n \n { owner.name }\n \n }\n >\n
\n { this.props.onClickEdit(owner.id) } }\n >\n { this.props.t(\"Owners.actions.UpdateOwner\") }\n \n
\n \n {\n descriptions.filter(({ shouldRender }) => shouldRender).map((description, index) => (\n { description.label } }\n key={ index.toString() }\n >\n { description.render() }\n \n ))\n }\n \n \n )\n }\n}\n\nexport default withTranslation('common')(OwnerCard);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Row,\n Spin,\n} from 'antd';\n\nimport OwnerShow from '@components/Owners/Show';\n\nexport default class OwnerList extends React.Component {\n static propTypes = {\n loading: PropTypes.bool,\n owners: PropTypes.arrayOf(PropTypes.object),\n }\n\n static defaultProps = {\n loading: false,\n owners: [],\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n if (this.props.owners.length == 0) {\n if (this.props.loading) {\n return (\n \n \n \n )\n }\n return (No owner information has been provided.)\n }\n\n return (\n
\n {\n this.props.owners.map((owner, index) => (\n this.props.onClickEdit(owner.id) }\n />\n ))\n }\n
\n )\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n Col,\n Form,\n Row,\n Select,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/FilterForm.scss';\n\nclass FilterForm extends React.Component {\n static propTypes = {\n filteredInfo: PropTypes.shape({\n status: PropTypes.oneOf(['pending', 'completed']),\n }).isRequired,\n loading: PropTypes.bool,\n onSubmit: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n loading: false,\n onSubmit: (filteredInfo) => {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n filteredInfo: { ...this.props.filteredInfo },\n };\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.filteredInfo !== this.props.filteredInfo) {\n this.setState({\n filteredInfo: this.props.filteredInfo,\n });\n }\n }\n\n isDirty() {\n const keys = Object.keys(this.state.filteredInfo);\n return keys.some((key) => this.props.filteredInfo[key] !== this.state.filteredInfo[key]);\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n }\n });\n }\n\n onSubmit() {\n this.props.onSubmit(this.state.filteredInfo);\n }\n\n getFormItems() {\n const items = [{\n label: this.props.t(\"Owners.OwnerType\"),\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('selectedIsCompany', values) }\n >\n \n { this.props.t(\"Owners.Company\") }\n \n \n { this.props.t(\"Owners.Individual\") }\n \n \n ),\n }, {\n label: null,\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n \n { this.props.t(\"actions.Search\")}\n \n ),\n }];\n return items.filter(({ shouldRender }) => { return shouldRender }).map((item, index) => {\n return (\n \n \n { item.renderChildren() }\n \n \n )\n });\n }\n\n render() {\n return (\n
\n
\n \n { this.getFormItems() }\n \n \n
\n )\n }\n}\n\nexport default withTranslation('common')(FilterForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n DatePicker,\n Form,\n Icon,\n Input,\n Modal,\n Radio,\n Select,\n Spin,\n Upload,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnersActions from '@actions/owners';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingOwners: false,\n ownersById: {},\n errorfetchingOwners: null,\n createNewOwner: false,\n createNewOwnerIsCompany: null,\n\n fileList: [],\n ...state,\n };\n}\n\nclass AddOwnerForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n ownershipOwnersIds: PropTypes.arrayOf(PropTypes.number),\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n ownershipOwnersIds: [],\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onOk = this.onOk.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n this.setState({ isFetchingOwners: true });\n this.props.fetchOwners().then((responseData) => {\n this.setState({\n isFetchingOwners: false,\n ownersById: {\n ...ArrayUtils.arrayToObject(responseData.owners),\n },\n })\n }).catch((error) => {\n this.setState({\n isFetchingOwners: false,\n errorfetchingOwners: error,\n })\n })\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n\n onOk() {\n const { fileList } = this.state;\n this.props.form.setFieldsValue({\n br_file: (fileList.length > 0) ? fileList[0] : null,\n })\n this.props.onOk();\n }\n\n renderAddFromPortfolioForm() {\n const { getFieldDecorator } = this.props.form;\n\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 17, offset: 1 },\n };\n\n return (\n
\n \n {getFieldDecorator(\"owner_id\", {\n rules: [\n { required: true, message: \"Please select owner!\" },\n ],\n })(\n : null\n }\n >\n {\n Object.values(this.state.ownersById).map((owner) => (\n \n { owner.name }\n \n ))\n }\n \n )}\n \n \n )\n }\n\n renderCreateNewOwnerForm() {\n const { getFieldDecorator } = this.props.form;\n\n const formItemLayout = {\n labelCol: { span: 9 },\n wrapperCol: { span: 14, offset: 1 },\n };\n\n const items = [\n {\n label: \"Name\",\n shouldRender: true,\n render: () => getFieldDecorator(\"name\", {\n initialValue: null,\n rules: [{ required: true, message: \"Please input official owner name!\" }],\n })(),\n }, {\n label: \"Owner type\",\n shouldRender: true,\n render: () => getFieldDecorator(\"is_company\", {\n rules: [{ required: true, message: \"Please select owner type!\" }],\n })(\n this.setState({ createNewOwnerIsCompany: e.target.value }) }\n >\n \n Individual\n \n \n Company\n \n \n ),\n }, {\n label: \"BR Number\",\n shouldRender: (this.state.createNewOwnerIsCompany === \"true\"),\n render: () => getFieldDecorator(\"br_cert_number\", {\n rules: [{ required: false, message: \"Please input Business Registration number!\" }],\n })(\n \n ),\n }, {\n label: \"BR Expiry Date\",\n shouldRender: (this.state.createNewOwnerIsCompany === \"true\"),\n render: () => getFieldDecorator(\"br_expiry_date\", {\n rules: [{ required: false, message: \"Please input Business Registration expiration!\" }],\n })(\n \n ),\n }, {\n label: \"ID Number\",\n shouldRender: (this.state.createNewOwnerIsCompany === \"false\"),\n render: () => getFieldDecorator(\"id_card_number\", {\n rules: [{ required: false, message: \"Please input ID number!\" }],\n })(\n \n ),\n }, {\n label: \"Correspondence Address\",\n shouldRender: true,\n render: () => getFieldDecorator(\"correspondence_address\", {\n rules: [{ required: true, message: \"Please input correspondence address!\" }],\n })(\n \n ),\n }, {\n label: \"Contact Details\",\n shouldRender: true,\n render: () => getFieldDecorator(\"contact_details\", {\n rules: [{ required: true, message: \"Please input contact details!\" }],\n })(\n \n ),\n }, {\n label: \"Business Registration\",\n shouldRender: (this.state.createNewOwnerIsCompany === \"true\"),\n render: () => (\n
\n {getFieldDecorator(\"br_file\", {\n getValueFromEvent: this.normFile,\n rules: [\n { required: false, message: 'Please select images!' },\n ],\n })(\n {\n this.setState({ fileList: [] });\n }\n }\n beforeUpload={\n (file) => {\n this.setState(state => ({\n fileList: [file],\n }));\n return false;\n }\n }\n fileList={ this.state.fileList }\n name=\"br_file\"\n >\n \n \n )}\n
\n ),\n },\n ]\n\n return (\n
\n {\n items.filter(({ shouldRender }) => shouldRender).map((item, index) => (\n \n { item.render() }\n \n ))\n }\n \n )\n }\n\n renderForm() {\n return this.state.createNewOwner ? this.renderCreateNewOwnerForm() : this.renderAddFromPortfolioForm();\n }\n\n render() {\n return (\n \n { this.renderForm() }\n {\n this.state.createNewOwner ? this.setState({ createNewOwner: false }) }>Go back : Don't see the owner? this.setState({ createNewOwner: true }) }>Click Here\n }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwners: (params) => {\n return (dispatch(OwnersActions.fetchOwners(params)));\n },\n };\n}\n\nconst ConnectedAddOwnerForm = connect(mapStateToProps, mapDispatchToProps)(AddOwnerForm);\n\nconst WrappedAddOwnerForm = Form.create({\n name: \"add_owner_form_in_modal\"\n})(ConnectedAddOwnerForm);\n\nexport default withTranslation('common')(WrappedAddOwnerForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n DatePicker,\n Form,\n Icon,\n Input,\n Modal,\n Upload,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\n\nconst RESET_STATE = (state = {}) => {\n return {\n fileList: [],\n ...state,\n };\n}\n\nclass UpdateForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onOk = this.onOk.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n\n onOk() {\n const { fileList } = this.state;\n this.props.form.setFieldsValue({\n br_file: (fileList.length > 0) ? fileList[0] : null,\n })\n this.props.onOk();\n }\n\n renderForm(owner) {\n const { getFieldDecorator } = this.props.form;\n\n const formItemLayout = {\n labelCol: { span: 9 },\n wrapperCol: { span: 14, offset: 1 },\n };\n\n const items = [\n {\n label: this.props.t(\"Owners.OwnerName\"),\n shouldRender: true,\n render: () => owner.name,\n }, {\n label: this.props.t(\"Owners.OwnerType\"),\n shouldRender: true,\n render: () => owner.is_company ? this.props.t(\"Owners.Company\") : this.props.t(\"Owners.Individual\"),\n }, {\n label: this.props.t(\"Owners.BRNumber\"),\n shouldRender: owner.is_company,\n render: () => getFieldDecorator(\"br_cert_number\", {\n initialValue: owner.br_cert_number,\n rules: [{ required: false, message: \"Please input Business Registration number!\" }],\n })(\n \n ),\n }, {\n label: this.props.t(\"Owners.BRExpiryDate\"),\n shouldRender: owner.is_company,\n render: () => getFieldDecorator(\"br_expiry_date\", {\n initialValue: owner.br_expiry_date ? moment(owner.br_expiry_date) : null,\n rules: [{ required: false, message: \"Please input Business Registration expiration!\" }],\n })(\n \n ),\n }, {\n label: this.props.t(\"Owners.IDNumber\"),\n shouldRender: !owner.is_company,\n render: () => getFieldDecorator(\"id_card_number\", {\n initialValue: owner.id_card_number,\n rules: [{ required: false, message: \"Please input ID number!\" }],\n })(\n \n ),\n }, {\n label: this.props.t(\"Owners.CorrespondenceAddress\"),\n shouldRender: true,\n render: () => getFieldDecorator(\"correspondence_address\", {\n initialValue: owner.correspondence_address,\n rules: [{ required: true, message: \"Please input correspondence address!\" }],\n })(\n \n ),\n }, {\n label: this.props.t(\"shared.ContactDetails\"),\n shouldRender: true,\n render: () => getFieldDecorator(\"contact_details\", {\n initialValue: owner.contact_details,\n rules: [{ required: true, message: \"Please input contact details!\" }],\n })(\n \n ),\n }, {\n label: this.props.t(\"Owners.BusinessRegistration\"),\n shouldRender: owner.is_company,\n render: () => (\n
\n {getFieldDecorator(\"br_file\", {\n getValueFromEvent: this.normFile,\n rules: [\n { required: false, message: 'Please select images!' },\n ],\n })(\n {\n this.setState({ fileList: [] });\n }\n }\n beforeUpload={\n (file) => {\n this.setState(state => ({\n fileList: [file],\n }));\n return false;\n }\n }\n fileList={ this.state.fileList }\n name=\"br_file\"\n >\n \n \n )}\n
\n ),\n }\n ]\n\n return (\n
\n {\n items.filter(({ shouldRender }) => shouldRender).map((item, index) => (\n \n { item.render() }\n \n ))\n }\n \n )\n }\n\n render() {\n if (!this.props.owner) {\n return null\n }\n return (\n \n { this.renderForm(this.props.owner) }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedUpdateOwnerForm = connect(mapStateToProps, mapDispatchToProps)(UpdateForm);\n\nconst WrappedUpdateOwnerForm = Form.create({\n name: \"update_owner_form_in_modal\"\n})(ConnectedUpdateOwnerForm);\n\nexport default withTranslation('common')(WrappedUpdateOwnerForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n message,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnersActions from '@actions/owners';\nimport * as OwnershipsActions from '@actions/ownerships';\nimport OwnersList from '@components/Owners/List';\nimport FilterForm from '@components/Owners/FilterForm';\nimport AddOwnerForm from '@components/Owners/AddOwnerForm';\nimport UpdateOwnerForm from '@components/Owners/UpdateForm';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isCreating: false,\n isFetching: false,\n itemsById: {},\n errorFetching: null,\n errorCreating: null,\n\n // modals\n createModalVisible: false,\n updateItemModalVisible: false,\n\n // search params\n filteredInfo: {\n selectedIsCompany: [],\n },\n\n ...state,\n };\n}\n\nclass Owners extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchOwners = this.fetchOwners.bind(this);\n this.handleFilterFormSubmit = this.handleFilterFormSubmit.bind(this);\n this.onCreateOwnerRelation = this.onCreateOwnerRelation.bind(this);\n this.onUpdateSubmit = this.onUpdateSubmit.bind(this);\n }\n\n componentDidMount() {\n this.fetchOwners();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.ownershipId !== this.props.ownershipId) {\n this.fetchOwners();\n }\n }\n\n handleFilterFormSubmit(filteredInfo) {\n this.setState({\n filteredInfo,\n }, this.fetchOwners)\n }\n\n getSelectedItem() {\n const { selectedItemId, itemsById } = this.state;\n if (!selectedItemId) {\n return null\n }\n const selectedItem = itemsById[selectedItemId];\n return selectedItem ? selectedItem : null;\n }\n\n getFilterParams() {\n const { filteredInfo } = this.state;\n return {\n filter: {\n ...filteredInfo,\n },\n }\n }\n\n async fetchOwners(params = {}) {\n if (this.props.ownershipId) {\n params = {\n ...params,\n ownership_id: this.props.ownershipId,\n }\n }\n this.setState({ isFetching: true })\n try {\n let responseData = await this.props.fetchOwners({\n ...params,\n ...this.getFilterParams(),\n });\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.owners),\n },\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n itemsById: {},\n });\n return\n }\n }\n\n async onCreateOwnerRelation() {\n if (!this.props.ownershipId) {\n return\n }\n const { form } = this.addOwnerFormRef.props;\n try {\n let values = await form.validateFields();\n this.setState({ isCreating: true });\n let responseData = await this.props.addOwnerToOwnership(this.props.ownershipId, values);\n const newOwner = responseData.owner;\n this.setState({\n isCreating: false,\n createModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [newOwner.id]: newOwner,\n },\n });\n message.success(this.props.t(\"Owners.messages.RegisterOwner.Success\"));\n return responseData;\n } catch(error) {\n this.setState({\n isCreating: false,\n errorCreating: error,\n })\n message.error(this.props.t(\"Owners.messages.RegisterOwner.Fail\"));\n return\n }\n }\n\n async onUpdateSubmit() {\n const { form } = this.updateFormRef.props;\n let selectedItem = this.getSelectedItem();\n if (!selectedItem) {\n return\n }\n try {\n let values = await form.validateFields();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: true,\n },\n },\n });\n let responseData = await this.props.updateOwner(selectedItem.id, values);\n const updatedOwner = responseData.owner;\n this.setState({\n selectedItemId: null,\n updateItemModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedOwner.id]: updatedOwner,\n },\n });\n message.success(this.props.t(\"Owners.messages.UpdateOwner.Success\"));\n return responseData;\n } catch (error) {\n selectedItem = this.getSelectedItem();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n return null;\n }\n }\n\n saveAddOwnerFormRef = formRef => {\n this.addOwnerFormRef = formRef;\n }\n\n saveUpdateFormRef = formRef => {\n this.updateFormRef = formRef;\n }\n\n renderAddOwner() {\n if (!this.props.ownershipId) {\n return\n }\n return (\n
\n this.setState({ createModalVisible: true })}\n >\n { this.props.t(\"Owners.actions.AddOwner\") }\n \n this.setState({ createModalVisible: false }) }\n onOk={ this.onCreateOwnerRelation }\n confirmLoading={ this.state.isCreating }\n ownershipOwnersIds={ Object.values(this.state.itemsById).map((item) => item.id ) }\n />\n
\n )\n }\n\n getFilteredResults(items) {\n const { filteredInfo } = this.state;\n return items.filter((owner) => {\n if (!filteredInfo) { return true };\n if (filteredInfo.selectedIsCompany && filteredInfo.selectedIsCompany.length > 0) {\n if (!filteredInfo.selectedIsCompany.includes(owner.is_company.toString())) {\n return false;\n }\n }\n return true;\n })\n }\n\n render() {\n const dataSource = this.getFilteredResults(Object.values(this.state.itemsById));\n const selectedItem = this.getSelectedItem();\n return (\n
\n {\n !this.props.ownershipId && (\n \n )\n }\n { this.renderAddOwner() }\n this.setState({ selectedItemId: null, updateItemModalVisible: false }) }\n onOk={ this.onUpdateSubmit }\n confirmLoading={\n (selectedItem && selectedItem.isUpdating)\n }\n />\n this.setState({ selectedItemId: ownerId, updateItemModalVisible: true }) }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwners: (params = {}) => {\n return dispatch(OwnersActions.fetchOwners(params))\n },\n addOwnerToOwnership: (ownershipId, params = {}) => {\n const { br_expiry_date, ...rest } = params;\n return dispatch(OwnershipsActions.addOwnerToOwnership(ownershipId, {\n ...rest,\n br_expiry_date: br_expiry_date && br_expiry_date.format('YYYY-MM-DD'),\n }));\n },\n updateOwner: (ownerId, params = {}) => {\n return dispatch(OwnersActions.updateOwner(ownerId, params));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Owners));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { withTranslation } from 'react-i18next';\n\nimport {\n Avatar,\n Icon,\n List,\n Popconfirm,\n} from 'antd';\n\nclass OwnershipManagersList extends React.Component {\n static propTypes = {\n loading: PropTypes.bool,\n dataSource: PropTypes.array,\n onDestroyOwnershipManager: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n loading: false,\n dataSource: [],\n onDestroyOwnershipManager: (ownershipManagerId) => {},\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { onDestroyOwnershipManager, currentUserId, ...rest } = this.props;\n return (\n (\n onDestroyOwnershipManager(item.id) }\n onCancel={ () => {} }\n okText={ this.props.t(\"shared.ConfirmYes\") }\n cancelText={ this.props.t(\"sharedConfirmNo\") }\n >\n \n { this.props.t(\"OwnershipDetailSections.Team.RemoveUser\") }\n \n \n ) : null\n }\n >\n }\n title={ item.display_name }\n description={ item.role }\n />\n \n )}\n { ...rest }\n />\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n const me = state.usersReducer.me || {};\n return {\n currentUserId: me.id,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(OwnershipManagersList));\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from 'react-redux';\nimport {\n Form,\n Input,\n Modal,\n Select,\n Spin,\n} from \"antd\";\nimport moment from \"moment\";\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as PortfolioActions from '@actions/portfolio';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingTeamMembers: false,\n teamMembersById: {},\n errorFetchingTeamMembers: null,\n ...state,\n };\n}\n\nclass InviteForm extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number.isRequired,\n ownershipOwnershipManagerIds: PropTypes.arrayOf(PropTypes.number),\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n ownershipOwnershipManagerIds: [],\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n this.setState({ isFetchingTeamMembers: true });\n this.props.fetchPortfolioTeamMembers().then((responseData) => {\n this.setState({\n isFetchingTeamMembers: false,\n teamMembersById: {\n ...ArrayUtils.arrayToObject(responseData.users),\n },\n });\n }).catch((error) => {\n this.setState({\n isFetchingTeamMembers: false,\n errorFetchingTeamMembers: error,\n });\n });\n }\n }\n\n renderForm() {\n const { getFieldDecorator } = this.props.form;\n const { ownershipId } = this.props;\n\n const formItemLayout = {\n labelCol: { span: 8 },\n wrapperCol: { span: 16 }\n };\n return (\n
\n \n {getFieldDecorator(\"user_id\", {\n rules: [\n { required: true, message: `${ this.props.t(\"OwnershipDetailSections.Team.messages.Form.PleaseSelectUser\") }!` },\n ],\n })(\n : null\n }\n >\n {\n Object.values(this.state.teamMembersById).map((teamMember) => (\n \n { teamMember.display_name }. { teamMember.email }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator('role', {\n rules: [\n { required: false, message: this.props.t(\"OwnershipDetailSections.Team.messages.Form.PleaseInputUserRole\") },\n ],\n })(\n \n )}\n \n \n )\n }\n\n render() {\n const { visible, confirmLoading, onOk, onCancel } = this.props;\n\n return (\n \n { this.renderForm() }\n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchPortfolioTeamMembers: (params) => {\n return (dispatch(PortfolioActions.fetchPortfolioTeamMembers(params)));\n },\n };\n}\n\nconst ConnectedInviteForm = connect(mapStateToProps, mapDispatchToProps)(InviteForm);\n\nconst WrappedInviteForm = Form.create({\n name: \"tasks_creation_form_in_modal\"\n})(ConnectedInviteForm);\n\nexport default withTranslation('common')(WrappedInviteForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n message,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnershipActions from '@actions/ownerships';\nimport * as OwnershipManagerActions from '@actions/ownershipManagers';\nimport OwnershipManagersList from '@components/OwnershipManagers/List';\nimport InviteForm from '@components/OwnershipManagers/InviteForm';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isInviting: false,\n isFetching: false,\n itemsById: {},\n errorInviting: null,\n errorFetching: null,\n\n // modals\n inviteModalVisible: false,\n\n ...state,\n }\n}\n\nclass OwnershipManagers extends React.Component {\n static proptypes = {\n ownershipId: PropTypes.number.isRequired,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchOwnershipManagers = this.fetchOwnershipManagers.bind(this);\n this.onInviteSubmit = this.onInviteSubmit.bind(this);\n this.onDestroyOwnershipManager = this.onDestroyOwnershipManager.bind(this);\n }\n\n componentDidMount() {\n this.fetchOwnershipManagers(this.props.ownershipId);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.ownershipId !== this.props.ownershipId) {\n this.setState({ itemsById: {} })\n this.fetchOwnershipManagers(this.props.ownershipId);\n }\n }\n\n async fetchOwnershipManagers(params = {}) {\n this.setState({ isFetching: true });\n try {\n let responseData = await this.props.fetchOwnershipManagers(this.props.ownershipId, {\n ...params,\n })\n this.setState({\n isFetching: false,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.ownership_managers),\n },\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n })\n return error;\n }\n }\n\n async onInviteSubmit() {\n const { form } = this.inviteFormRef.props;\n try {\n let values = await form.validateFields();\n this.setState({ isInviting: true });\n let responseData = await this.props.addOwnershipManager(this.props.ownershipId, values);\n form.resetFields();\n const newItem = responseData.ownership_manager;\n this.setState({\n inviteModalVisible: false,\n isInviting: false,\n itemsById: {\n ...this.state.itemsById,\n [newItem.id]: newItem,\n },\n });\n message.success(this.props.t(\"OwnershipDetailSections.Team.messages.AddTeamMember.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n isInviting: false,\n errorInviting: error,\n });\n message.error(this.props.t(\"OwnershipDetailSections.Team.messages.AddTeamMember.Fail\"));\n return null;\n }\n }\n\n onDestroyOwnershipManager(ownershipManagerId) {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [ownershipManagerId]: {\n ...this.state.itemsById[ownershipManagerId],\n isDestroying: true,\n },\n },\n })\n return this.props.destroyOwnershipManager(ownershipManagerId).then((responseData) => {\n let itemsById = { ...this.state.itemsById };\n delete itemsById[ownershipManagerId];\n this.setState({\n itemsById: {\n ...itemsById,\n },\n });\n message.success(this.props.t(\"OwnershipDetailSections.Team.messages.RemoveTeamMember.Success\"));\n return responseData;\n }).catch((error) => {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [ownershipManagerId]: {\n ...this.state.itemsById[ownershipManagerId],\n isDestroying: false,\n },\n },\n })\n message.error(this.props.t(\"OwnershipDetailSections.Team.messages.RemoveTeamMember.Fail\"));\n return error;\n })\n }\n\n saveInviteFormRef = formRef => {\n this.inviteFormRef = formRef;\n }\n\n render() {\n const { ownershipId } = this.props;\n const dataSource = Object.values(this.state.itemsById);\n return (\n
\n this.setState({ inviteModalVisible: true })}\n >\n { this.props.t(\"OwnershipDetailSections.Team.actions.InviteUser\") }\n \n window.fcWidget.open({\n name: 'Inbox',\n replyText: `I would like to invite a user to [OID.${ownershipId}]. Their email is:`\n })}\n >\n { this.props.t(\"OwnershipDetailSections.Team.actions.InviteOutsideUser\") }\n \n item.user_id) }\n visible={ this.state.inviteModalVisible }\n confirmLoading={ this.state.isInviting }\n onCancel={ () => this.setState({ inviteModalVisible: false }) }\n onOk={ this.onInviteSubmit }\n />\n this.onDestroyOwnershipManager(ownershipManagerId) }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwnershipManagers: (params = {}) => {\n return dispatch(OwnershipActions.fetchOwnershipManagers(params))\n },\n addOwnershipManager: (ownershipId, params = {}) => {\n return dispatch(OwnershipActions.addOwnershipManager(ownershipId, params));\n },\n destroyOwnershipManager: (ownershipManagerId) => {\n return dispatch(OwnershipManagerActions.destroyOwnershipManager(ownershipManagerId));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(OwnershipManagers));\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const destroyOwnershipManager = (ownershipManagerId) => {\n return Api.del(\n `ownership_managers/${ownershipManagerId}`,\n ActionTypes.DESTROY_OWNERSHIP_MANAGER,\n {},\n {\n // metaData\n }\n )\n}\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchTasks = (params = {}) => {\n return Api.get(\n 'tasks',\n ActionTypes.FETCH_TASKS,\n params,\n )\n}\n\nexport const createTask = (ownershipId, task = {}) => {\n return Api.postUpload(\n 'tasks',\n ActionTypes.CREATE_TASK,\n {\n ownership_id: ownershipId,\n ...task\n },{\n ownershipId,\n }\n )\n}\n\nexport const updateTask = (taskId, ownershipId, params = {}) => {\n return Api.putUpload(\n `tasks/${taskId}`,\n ActionTypes.UPDATE_TASK,\n params,\n {\n taskId,\n ownershipId,\n }\n )\n}\n\nexport const destroyTask = (taskId, params = {}) => {\n return Api.del(\n `tasks/${taskId}`,\n ActionTypes.DESTROY_TASK,\n params,\n {}\n )\n}\n\nexport const deleteTaskAttachment = (taskId, ownershipId, attachmentId) => {\n return Api.del(\n `tasks/${taskId}/delete_attachment`,\n ActionTypes.DELETE_TASK_ATTACHMENT,\n {\n attachment_id: attachmentId,\n },{\n taskId,\n ownershipId,\n }\n )\n}\n","export const TaskCategoryOptions = {\n \"other\": {\n value: \"other\",\n text: \"Other\",\n },\n \"leasing\": {\n value: \"leasing\",\n text: \"Leasing\",\n },\n \"repairs\": {\n value: \"repairs\",\n text: \"Repairs\"\n },\n \"finance\": {\n value: \"finance\",\n text: \"Finance\",\n },\n \"info\": {\n value: \"info\",\n text: \"Info\",\n },\n}\n\nexport const TaskStatusOptions = {\n \"pending\": {\n value: \"pending\",\n ttextKey: \"Tasks.StatusPending\",\n },\n \"completed\": {\n value: \"completed\",\n ttextKey: \"Tasks.StatusCompleted\",\n },\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport {\n Avatar,\n Button,\n Dropdown,\n Icon,\n Menu,\n Popconfirm,\n Table,\n Tooltip,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\nimport { TaskCategoryOptions } from \"@constants/models/Tasks\";\n\nclass TasksList extends React.Component {\n static propTypes = {\n showPropertyName: PropTypes.bool,\n onSelectUpdateItem: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n showPropertyName: false,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n let { sorter } = this.props;\n\n let columns = [{\n title: this.props.t(\"Tasks.Category\"),\n dataIndex: 'category',\n key: 'category',\n sorter: (a, b) => (a.category.localeCompare(b.category)),\n sortOrder: sorter.columnKey === 'category' && sorter.order,\n render: (category) => TaskCategoryOptions[category].text,\n }, {\n title: this.props.t(\"Tasks.TaskName\"),\n dataIndex: 'name',\n key: 'name',\n }, {\n title: this.props.t(\"Tasks.AssignedTo\"),\n dataIndex: 'owned_by',\n key: 'owned_by',\n render: (value, record) => {\n return (\n \n
\n \n { value.display_name }\n
\n { record && record.assign_to_mypropty && (\n
\n with MyPropty Assistance\n
\n )}\n
\n );\n },\n }, {\n title: this.props.t(\"Tasks.Deadline\"),\n dataIndex: 'deadline',\n key: 'deadline',\n sorter: (a, b) => moment(a.deadline) - moment(b.deadline),\n sortOrder: sorter.columnKey === 'deadline' && sorter.order,\n render: (value) => {\n if (!value) {\n return null;\n }\n return (\n \n { moment(value).fromNow() }\n \n )\n },\n }, {\n title: this.props.t(\"shared.Action\"),\n key: 'action',\n render: (text, record) => {\n const menuItems = [{\n key: \"updateTask\",\n shouldRender: (record) => true,\n render: (record) => this.props.t(\"Tasks.actions.UpdateTask\"),\n }, {\n key: \"destroyTask\",\n shouldRender: (record) => (record.status !== \"completed\"),\n render: (record) => (\n {\n this.props.onDestroyTask(record);\n }}\n >\n { this.props.t(\"Tasks.actions.DeleteTask\") }\n \n ),\n }];\n const menu = (\n {\n if (key === \"updateTask\") {\n this.props.onSelectUpdateItem(record);\n }\n }}\n >\n {\n menuItems.filter(({ shouldRender }) => shouldRender(record)).map((menuItem) => (\n \n { menuItem.render(record) }\n \n ))\n }\n \n )\n return (\n \n \n \n )\n }\n }];\n\n if (this.props.showPropertyName) {\n columns.splice(1, 0, {\n title: this.props.t(\"Properties.Property\"),\n dataIndex: 'ownership_name',\n key: 'ownership_name',\n sorter: (a, b) => (a.ownership_name.localeCompare(b.ownership_name)),\n sortOrder: sorter.columnKey === 'ownership_name' && sorter.order,\n render: (value, record) => (\n \n { value }\n \n )\n })\n // \n }\n\n return (\n record.id }\n columns={ columns }\n />\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(TasksList));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport {\n Col,\n Descriptions,\n Row,\n Spin,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\nimport dompurify from 'dompurify';\n\nimport * as DateUtils from '@utils/date';\n\nclass TaskShow extends React.Component {\n static propTypes = {\n task: PropTypes.object,\n deleteTaskAttachment: PropTypes.func,\n }\n\n static defaultProps = {\n deleteTaskAttachment: (attachmentId) => {},\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { task } = this.props;\n return (\n
\n {\n task.isUpdating && (\n \n )\n }\n
\n \n { this.props.t(\"Tasks.CreatedOn\") } }>\n { DateUtils.formatDate(task.created_at) }\n \n { this.props.t(\"shared.Description\") } }>\n \n \n \n
\n
\n {\n task.files.map((file, index) => (\n
\n \n \"\"\n \n

\n {\n (task.status !== \"completed\") && (\n this.props.deleteTaskAttachment(file.attachment_id) }\n >\n { this.props.t(\"actions.Delete\") }\n \n )\n }\n
\n ))\n }\n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(TaskShow));\n","import { DirectUpload } from \"@rails/activestorage\"\n\nclass Uploader {\n constructor({ file, onError, onSuccess, onProgress }) {\n this.file = file;\n this.onError = onError;\n this.onSuccess = onSuccess;\n this.onProgress = onProgress;\n this.upload = new DirectUpload(this.file, '/rails/active_storage/direct_uploads', this)\n }\n\n uploadFile() {\n this.upload.create((error, blob) => {\n if (error) {\n this.onError(error)\n } else {\n this.onSuccess(\"ok\", this.file, blob);\n }\n })\n }\n\n directUploadWillStoreFileWithXHR(request) {\n request.upload.addEventListener(\"progress\",\n event => this.directUploadDidProgress(event))\n }\n\n directUploadDidProgress(event) {\n this.onProgress(event, this.file);\n }\n}\n\nexport default Uploader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Upload,\n} from 'antd';\n\nimport Uploader from '@utils/uploader';\n\nclass AsyncUpload extends React.Component {\n static propTypes = {\n fileDataMap: PropTypes.object.isRequired,\n updateFileDataMap: PropTypes.func.isRequired,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { fileDataMap, updateFileDataMap, ...rest} = this.props;\n return (\n {\n if (fileDataMap[file.uid] === undefined) {\n return\n }\n let isFileUploading;\n if (file.status === \"uploading\") {\n isFileUploading = true;\n } else if (file.status === \"done\" || file.status === \"error\") {\n isFileUploading = false;\n }\n this.props.updateFileDataMap({\n ...this.props.fileDataMap,\n [file.uid]: {\n ...this.props.fileDataMap[file.uid],\n isFileUploading,\n },\n })\n }\n }\n onRemove={\n (file) => {\n const newFileDataMap = { ...this.props.fileDataMap };\n delete newFileDataMap[file.uid];\n this.props.updateFileDataMap(newFileDataMap);\n }\n }\n customRequest={ ({ file, onError, onSuccess, onProgress, data, filename, withCredentials, action, headers }) => {\n const onSuccessCallback = (res, file, blob) => {\n onSuccess(res, file);\n this.props.updateFileDataMap({\n ...this.props.fileDataMap,\n [file.uid]: {\n ...this.props.fileDataMap[file.uid],\n blobSignedId: blob.signed_id,\n },\n })\n }\n const uploader = new Uploader({\n file,\n onError,\n onProgress,\n onSuccess: onSuccessCallback,\n });\n uploader.uploadFile();\n }}\n >\n { this.props.children }\n \n )\n }\n}\n\nexport default AsyncUpload;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from 'react-redux';\nimport {\n Button,\n Checkbox,\n DatePicker,\n Form,\n Icon,\n Input,\n Modal,\n Select,\n Spin,\n Switch,\n} from \"antd\";\nimport moment from \"moment\";\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport { TaskCategoryOptions } from \"@constants/models/Tasks\";\nimport * as OwnershipActions from '@actions/ownerships';\nimport QuillEditor from '@components/QuillEditor'\nimport AsyncUpload from '@components/AsyncUpload';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingOwnerships: false,\n ownershipsById: {},\n errorFetchingOwnerships: null,\n fileDataMap: {},\n ...state,\n };\n}\n\nclass CreateForm extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number,\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onCancel = this.onCancel.bind(this);\n this.onOk = this.onOk.bind(this);\n this.handleChangeQuill = this.handleChangeQuill.bind(this);\n this.updateFileDataMap = this.updateFileDataMap.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n this.setState({ isFetchingOwnerships: true });\n let params = (this.props.ownershipId) ? { ownership_id: this.props.ownershipId } : {};\n this.props.fetchOwnershipsWithManagers(params).then((responseData) => {\n this.setState({\n isFetchingOwnerships: false,\n ownershipsById: {\n ...ArrayUtils.arrayToObject(responseData.ownerships),\n },\n });\n }).catch((error) => {\n this.setState({\n isFetchingOwnerships: false,\n errorFetchingOwnerships: error,\n })\n });\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n onCancel() {\n this.props.onCancel();\n }\n\n onOk() {\n this.props.form.setFieldsValue({\n files: Object.values(this.state.fileDataMap).map((fileMetaData) => fileMetaData.blobSignedId),\n });\n this.props.onOk();\n }\n\n handleChangeQuill(key, value) {\n this.props.form.setFieldsValue({\n [key]: value,\n })\n }\n\n updateFileDataMap(fileDataMap) {\n this.setState({ fileDataMap });\n }\n\n renderForm() {\n const { getFieldDecorator } = this.props.form;\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 }\n };\n return (\n
\n \n {getFieldDecorator(\"ownership_id\", {\n rules: [\n { required: true, message: `${ this.props.t(\"Properties.messages.Form.PleaseSelectProperty\") }!` },\n ],\n })(\n 5) }\n filterOption={ (inputValue, option) => {\n const ownershipId = parseInt(option.key);\n const ownership = this.state.ownershipsById[ownershipId];\n if (ownership.name.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n if (ownership.address.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n return false;\n }}\n notFoundContent={\n this.state.isFetchingOwnerships ? : null\n }\n onSelect={ (key) => {\n const ownerships = Object.values(this.state.ownershipsById).filter((ownership) => {\n return ownership.id.toString() === key;\n });\n if (ownerships.length !== 1) {\n return null;\n }\n this.setState({ ownershipManagers: ownerships[0].ownership_managers })\n this.props.form.setFieldsValue({ assigned_to_user_id: undefined })\n }}\n >\n {\n Object.values(this.state.ownershipsById).map((ownership) => (\n \n { ownership.name }. { ownership.address }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator(\"name\", {\n initialValue: null,\n rules: [{ required: true, message: `${ this.props.t(\"Tasks.messages.Form.PleaseInputTaskName\") }` }]\n })()}\n \n \n {getFieldDecorator(\"category\", {\n rules: [\n { required: true, message: this.props.t(\"Tasks.messages.Form.PleaseSelectCategory\") }\n ]\n })(\n \n {Object.values(TaskCategoryOptions).map(taskCategory => (\n \n {taskCategory.text}\n \n ))}\n \n )}\n \n \n {getFieldDecorator(\"assigned_to_user_id\", {\n })(\n : { this.props.t(\"Properties.messages.Form.PleaseSelectProperty\") }\n }\n >\n {(this.state.ownershipManagers || []).map(manager => (\n \n {manager.display_name}\n \n ))}\n \n )}\n \n \n {getFieldDecorator(\"assign_to_mypropty\", {\n valuePropName: \"checked\",\n initialValue: false,\n })(Request Support)}\n \n \n {getFieldDecorator(\"description\", {\n initialValue: null\n })()}\n this.handleChangeQuill(\"description\", value) }\n />\n \n \n {getFieldDecorator(\"deadline\")()}\n \n \n
\n {getFieldDecorator(\"files\", {\n getValueFromEvent: this.normFile,\n rules: [\n { required: false, message: `${ this.props.t(\"Tasks.messages.PleaseSelectAttachments\") }!` },\n ],\n })(\n \n \n \n )}\n
\n \n \n )\n }\n\n render() {\n const { visible, confirmLoading } = this.props;\n\n return (\n \n { this.renderForm() }\n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwnershipsWithManagers: (params) => {\n return (dispatch(OwnershipActions.fetchOwnershipsWithManagers(params)));\n },\n };\n}\n\nconst ConnectedCreateForm = connect(mapStateToProps, mapDispatchToProps)(CreateForm);\n\nconst WrappedCreateForm = Form.create({\n name: \"tasks_creation_form_in_modal\"\n})(ConnectedCreateForm);\n\nexport default withTranslation('common')(WrappedCreateForm);\n","import React from \"react\";\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Checkbox,\n DatePicker,\n Form,\n Icon,\n Input,\n Modal,\n Radio,\n Select,\n Spin,\n Switch,\n} from \"antd\";\nimport moment from \"moment\";\nimport { withTranslation } from 'react-i18next';\n\nimport { TaskCategoryOptions, TaskStatusOptions } from \"@constants/models/Tasks\";\nimport * as OwnershipActions from '@actions/ownerships';\nimport QuillEditor from '@components/QuillEditor'\nimport AsyncUpload from '@components/AsyncUpload';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingOwnershipManagers: false,\n ownershipManagers: [],\n errorFetchingOwnershipManagers: null,\n fileDataMap: {},\n ...state,\n };\n}\n\nclass UpdateForm extends React.Component {\n static propTypes = {\n task: PropTypes.shape({\n id: PropTypes.number.isRequired,\n ownership_id: PropTypes.number.isRequired,\n }),\n visible: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n confirmLoading: PropTypes.bool,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE()\n this.onCancel = this.onCancel.bind(this);\n this.onOk = this.onOk.bind(this);\n this.handleChangeQuill = this.handleChangeQuill.bind(this);\n this.updateFileDataMap = this.updateFileDataMap.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n if (!this.props.task) {\n return null;\n }\n this.setState({ isFetchingOwnershipManagers: true })\n this.props.fetchOwnershipManagers(this.props.task.ownership_id).then((responseData) => {\n this.setState({\n isFetchingOwnershipManagers: false,\n ownershipManagers: responseData.ownership_managers,\n });\n }).catch((error) => {\n this.setState({\n isFetchingOwnershipManagers: false,\n ownershipManagers: [],\n errorFetchingOwnershipManagers: error,\n });\n })\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n onCancel() {\n this.props.onCancel();\n }\n\n onOk() {\n this.props.form.setFieldsValue({\n files: Object.values(this.state.fileDataMap).map((fileMetaData) => fileMetaData.blobSignedId),\n });\n this.props.onOk();\n }\n\n handleChangeQuill(key, value) {\n this.props.form.setFieldsValue({\n [key]: value,\n })\n }\n\n updateFileDataMap(fileDataMap) {\n this.setState({ fileDataMap });\n }\n\n render() {\n const { task } = this.props;\n if (!task) {\n return null;\n }\n\n const { visible, confirmLoading, form } = this.props;\n const { getFieldDecorator } = form;\n\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 }\n };\n\n return (\n \n {this.props.children}\n
\n \n { task.ownership_name }\n
\n { task.ownership_address }\n \n \n {getFieldDecorator(\"name\", {\n initialValue: task.name,\n rules: [{ required: true, message: `${ this.props.t(\"Tasks.messages.Form.PleaseInputTaskName\") }!` }]\n })()}\n \n \n {getFieldDecorator(\"category\", {\n initialValue: task.category,\n rules: [\n { required: true, message: `${ this.props.t(\"Tasks.messages.Form.PleaseSelectCategory\") }!` }\n ]\n })(\n \n {Object.values(TaskCategoryOptions).map(taskCategory => (\n \n {taskCategory.text}\n \n ))}\n \n )}\n \n \n {\n (this.state.ownershipManagers.length > 0) ? (\n getFieldDecorator(\"assigned_to_user_id\", {\n initialValue: task.owned_by && task.owned_by.id.toString(),\n rules: [\n { required: true, message: `${ this.props.t(\"Tasks.messages.Form.PleaseSelectAssignee\") }!` }\n ]\n })(\n \n {\n this.state.ownershipManagers.map((manager) => (\n \n { manager.display_name }\n \n ))\n }\n \n )\n ) : { task.owned_by.display_name }\n }\n \n \n {getFieldDecorator(\"assign_to_mypropty\", {\n valuePropName: \"checked\",\n initialValue: task.assign_to_mypropty,\n })(Request Support)}\n \n \n {getFieldDecorator(\"status\", {\n initialValue: task.status,\n })(\n \n {\n Object.values(TaskStatusOptions).map(taskStatus => (\n \n { this.props.t(taskStatus.ttextKey) }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator(\"description\", {\n initialValue: task.description || \"\",\n })()}\n this.handleChangeQuill(\"description\", value) }\n />\n \n \n {getFieldDecorator('deadline', {\n initialValue: task.deadline ? moment(task.deadline) : null,\n rules: [\n {\n type: 'object',\n required: false,\n },\n ],\n })(\n \n )}\n \n \n
\n {getFieldDecorator(\"files\", {\n getValueFromEvent: this.normFile,\n rules: [\n { required: false, message: `${ this.props.t(\"Tasks.messages.Form.PleaseSelectAttachments\") }!` },\n ],\n })(\n \n \n \n )}\n
\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwnershipManagers: (ownershipId) => {\n return (dispatch(OwnershipActions.fetchOwnershipManagers(ownershipId)));\n },\n };\n}\n\nconst ConnectedUpdateForm = connect(mapStateToProps, mapDispatchToProps)(UpdateForm);\n\nconst WrappedUpdateForm = Form.create({\n name: \"tasks_update_form_in_modal\"\n})(ConnectedUpdateForm);\n\nexport default withTranslation('common')(WrappedUpdateForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n Col,\n Form,\n Radio,\n Row,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/FilterForm.scss';\nimport { TaskStatusOptions } from \"@constants/models/Tasks\";\n\nclass FilterForm extends React.Component {\n static propTypes = {\n filteredInfo: PropTypes.shape({\n status: PropTypes.oneOf(['pending', 'completed']),\n }).isRequired,\n loading: PropTypes.bool,\n onSubmit: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n loading: false,\n onSubmit: (filteredInfo) => {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n filteredInfo: { ...this.props.filteredInfo },\n };\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.filteredInfo !== this.props.filteredInfo) {\n this.setState({\n filteredInfo: this.props.filteredInfo,\n });\n }\n }\n\n isDirty() {\n const keys = Object.keys(this.state.filteredInfo);\n return keys.some((key) => this.props.filteredInfo[key] !== this.state.filteredInfo[key]);\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n }\n });\n }\n\n onSubmit() {\n this.props.onSubmit(this.state.filteredInfo);\n }\n\n getFormItems() {\n const items = [{\n label: this.props.t(\"shared.Status\"),\n shouldRender: true,\n span: 12,\n renderChildren: () => (\n this.onChangeFilter('status', e.target.value) }\n value={ this.state.filteredInfo.status }\n >\n {\n Object.values(TaskStatusOptions).map((taskStatusOption) => (\n \n { this.props.t(taskStatusOption.ttextKey) }\n \n ))\n }\n \n ),\n }, {\n label: null,\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n \n { this.props.t(\"actions.Search\") }\n \n ),\n }];\n return items.filter(({ shouldRender }) => { return shouldRender }).map((item, index) => {\n return (\n \n \n { item.renderChildren() }\n \n \n )\n });\n }\n\n render() {\n return (\n
\n
\n \n { this.getFormItems() }\n \n \n
\n )\n }\n}\n\nexport default withTranslation('common')(FilterForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n message,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as TasksActions from '@actions/tasks';\nimport TasksList from '@components/Tasks/List';\nimport TaskShow from '@components/Tasks/Show';\nimport CreateForm from '@components/Tasks/CreateForm';\nimport UpdateForm from '@components/Tasks/UpdateForm';\nimport FilterForm from '@components/Tasks/FilterForm';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isCreating: false,\n isFetching: false,\n itemsById: {},\n errorCreating: null,\n errorFetching: null,\n\n // modals\n selectedItemId: null,\n createModalVisible: false,\n\n // search params\n filteredInfo: {\n status: 'pending',\n },\n pagination: {\n current: 1,\n pageSize: 10,\n },\n sorter: {\n },\n ...state,\n }\n}\n\nclass Tasks extends React.Component {\n static proptypes = {\n ownershipId: PropTypes.number,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchTasks = this.fetchTasks.bind(this);\n this.onCreateSubmit = this.onCreateSubmit.bind(this);\n this.onUpdateSubmit = this.onUpdateSubmit.bind(this);\n this.onDeleteTaskAttachment = this.onDeleteTaskAttachment.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleFilterFormSubmit = this.handleFilterFormSubmit.bind(this);\n }\n\n componentDidMount() {\n this.fetchTasks();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.ownershipId !== this.props.ownershipId) {\n this.fetchTasks();\n }\n }\n\n handleListChange = (pagination, filters, sorter) => {\n this.setState({\n pagination,\n sorter,\n }, this.fetchTasks)\n }\n\n handleFilterFormSubmit(filteredInfo) {\n this.setState({\n filteredInfo,\n pagination: {\n ...this.state.pagination,\n current: 1,\n },\n }, this.fetchTasks);\n }\n\n async fetchTasks(params = {}) {\n if (this.props.ownershipId) {\n params = {\n ...params,\n ownership_id: this.props.ownershipId,\n };\n }\n this.setState({ isFetching: true });\n try {\n let responseData = await this.props.fetchTasks({\n page: this.state.pagination.current,\n results: this.state.pagination.pageSize,\n sortField: this.state.sorter.columnKey,\n sortOrder: this.state.sorter.order,\n filter: this.state.filteredInfo,\n ...params,\n });\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.tasks),\n },\n })\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n itemsById: {},\n });\n return null;\n }\n }\n\n getSelectedTask() {\n const { selectedItemId, itemsById } = this.state;\n if (!selectedItemId) {\n return null\n }\n const selectedItem = itemsById[selectedItemId];\n return selectedItem ? selectedItem : null;\n }\n\n async onCreateSubmit() {\n const { form } = this.createFormRef.props;\n try {\n let values = await form.validateFields();\n const ownershipId = this.props.ownershipId ? this.props.ownershipId : values[\"ownership_id\"];\n if (!ownershipId) {\n return\n }\n this.setState({ isCreating: true });\n let responseData = await this.props.createTask(ownershipId, values);\n const newTask = responseData.task;\n this.setState({\n isCreating: false,\n createModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [newTask.id]: newTask,\n },\n });\n message.success(this.props.t(\"Tasks.messages.CreateTask.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n isCreating: false,\n errorCreating: error,\n });\n return null;\n }\n }\n\n async onUpdateSubmit() {\n const { form } = this.updateFormRef.props;\n let selectedTask = this.getSelectedTask();\n if (!selectedTask) {\n return\n }\n try {\n let values = await form.validateFields();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedTask.id]: {\n ...selectedTask,\n isUpdating: true,\n },\n },\n });\n let responseData = await this.props.updateTask(selectedTask.id, selectedTask.ownership_id, values);\n const updatedTask = responseData.task;\n this.setState({\n selectedItemId: null,\n itemsById: {\n ...this.state.itemsById,\n [updatedTask.id]: updatedTask,\n },\n });\n message.success(this.props.t(\"Tasks.messages.UpdateTask.Success\"));\n return responseData;\n } catch (error) {\n selectedTask = this.getSelectedTask();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedTask.id]: {\n ...selectedTask,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n return null;\n }\n }\n\n async onDestroyTask(taskId) {\n const task = this.state.itemsById[taskId];\n if (!task) {\n return;\n }\n try {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [taskId]: {\n ...task,\n isDestroying: true,\n },\n },\n })\n let responseData = await this.props.destroyTask(taskId);\n let itemsById = { ...this.state.itemsById };\n delete itemsById[taskId];\n this.setState({\n itemsById,\n })\n message.success(`${this.props.t(\"Tasks.messages.DeleteTask.Success\")}: ${task.name}`);\n return responseData;\n } catch (error) {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [taskId]: {\n ...task,\n isDestroying: false,\n errorDestroying: error,\n },\n },\n });\n message.error(`${this.props.t(\"Tasks.messages.DeleteTask.Fail\")}: ${task.name}`)\n return\n }\n }\n\n async onDeleteTaskAttachment(taskId, ownershipId, attachmentId) {\n const task = this.state.itemsById[taskId];\n if (!task) {\n return;\n }\n try {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [taskId]: {\n ...task,\n isUpdating: true,\n },\n },\n })\n let responseData = await this.props.deleteTaskAttachment(taskId, ownershipId, attachmentId);\n const updatedTask = responseData.task;\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [updatedTask.id]: updatedTask,\n },\n });\n message.success(this.props.t(\"Tasks.messages.DeleteTaskAttachment.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [taskId]: {\n ...task,\n isUpdating: false,\n updateError: error,\n },\n },\n });\n message.error(this.props.t(\"Tasks.messages.DeleteTaskAttachment.Fail\"));\n return null;\n }\n }\n\n saveCreateFormRef = formRef => {\n this.createFormRef = formRef;\n }\n\n saveUpdateFormRef = formRef => {\n this.updateFormRef = formRef;\n }\n\n getFilteredResults(items) {\n const { filteredInfo } = this.state;\n return items.filter((item) => {\n if (filteredInfo && filteredInfo.status) {\n if (item.status !== filteredInfo.status) {\n return false;\n }\n }\n return true;\n })\n }\n\n render() {\n const selectedTask = this.getSelectedTask();\n const dataSource = this.getFilteredResults(Object.values(this.state.itemsById));\n return (\n
\n this.setState({ createModalVisible: false })}\n onOk={ this.onCreateSubmit }\n ownershipId={ this.props.ownershipId }\n confirmLoading={ this.state.isCreating }\n />\n this.setState({ selectedItemId: null }) }\n onOk={ this.onUpdateSubmit }\n confirmLoading={\n (selectedTask && selectedTask.isUpdating)\n }\n />\n \n this.setState({ createModalVisible: true, selectedItemId: null })}\n >\n { this.props.t(\"Tasks.actions.CreateTask\") }\n \n {\n this.state.errorFetching && (Unable to retrieve tasks. this.fetchTasks() }>Try again.)\n }\n (\n this.onDeleteTaskAttachment(record.id, record.ownership_id, attachmentId) }\n />\n )\n }\n loading={ this.state.isFetching }\n dataSource={ dataSource }\n pagination={ this.state.pagination }\n sorter={ this.state.sorter }\n onChange={ this.handleListChange }\n onSelectUpdateItem={ (record) => this.setState({ createModalVisible: false, selectedItemId: record.id }) }\n onDestroyTask={ (record) => this.onDestroyTask(record.id) }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchTasks: (params = {}) => {\n return dispatch(TasksActions.fetchTasks(params))\n },\n createTask: (ownershipId, params) => {\n const { files, deadline, ...rest } = params;\n return dispatch(TasksActions.createTask(ownershipId, {\n ...rest,\n deadline: deadline ? deadline.format('YYYY-MM-DD') : null,\n 'files[]': files,\n }));\n },\n updateTask: (taskId, ownershipId, params) => {\n const { files, deadline, ...rest } = params;\n return dispatch(TasksActions.updateTask(taskId, ownershipId, {\n ...rest,\n deadline: deadline ? deadline.format('YYYY-MM-DD') : null,\n 'files[]': files,\n }));\n },\n destroyTask: (taskId) => {\n return dispatch(TasksActions.destroyTask(taskId));\n },\n deleteTaskAttachment: (taskId, ownershipId, attachmentId) => {\n return dispatch(TasksActions.deleteTaskAttachment(taskId, ownershipId, attachmentId));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Tasks));\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchTenancies = (params = {}) => {\n return Api.get(\n 'tenancies',\n ActionTypes.FETCH_TENANCIES,\n params,\n )\n}\n\nexport const createTenancy = (ownershipId, params = {}) => {\n return Api.post(\n 'tenancies',\n ActionTypes.CREATE_TENANCY,\n {\n ownership_id: ownershipId,\n ...params,\n },{\n ownershipId,\n }\n )\n}\n\nexport const updateTenancy = (tenancyId, ownershipId, params = {}) => {\n return Api.put(\n `tenancies/${tenancyId}`,\n ActionTypes.UPDATE_TENANCY,\n {\n ...params,\n },{\n ownershipId,\n }\n )\n}\n\nexport const updateTenancyTerminateEarly = (tenancyId, ownershipId, params = {}) => {\n return Api.post(\n `tenancies/${tenancyId}/terminate_tenancy`,\n ActionTypes.UPDATE_TENANCY,\n {\n ...params,\n },{\n ownershipId,\n }\n )\n}\n\nexport const attachDocumentToTenancy = (tenancyId, documentId) => {\n return Api.post(\n `tenancies/${tenancyId}/attach_document`,\n ActionTypes.TENANCY_ATTACH_DOCUMENT,\n {\n document_id: documentId,\n },\n {\n tenancyId,\n }\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Card,\n Descriptions,\n Icon,\n List,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\nimport numeral from 'numeral';\n\nimport { ThemeColors } from '@constants/Theme';\nimport * as DateUtils from '@utils/date';\nimport * as FormatterUtils from '@utils/formatter';\nimport DocumentPreview from '@components/DocumentPreview';\n\nclass TenancyShow extends React.Component {\n static propTypes = {\n tenancy: PropTypes.object,\n }\n\n static defaultProps = {\n tenancy: {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n showDocuments: false,\n }\n }\n\n renderDocuments(documents) {\n if (documents.length == 0) {\n return null\n }\n return (\n \n )\n }\n\n getDescriptionItems(tenancy) {\n return [{\n label: this.props.t(\"Tenancies.TenancyPeriod\"),\n renderChildren: () => (\n \n { this.props.t(\"Tenancies.TenancyPeriod\") }: { DateUtils.formatDateRange(tenancy.start_date, tenancy.end_date) }\n
\n { this.props.t(\"Tenancies.RentFreePeriod\") }: { DateUtils.formatDateRange(tenancy.rent_free_start_date, tenancy.rent_free_end_date) }\n {\n tenancy.early_termination_date && (\n
\n { this.props.t(\"Tenancies.EarlyTerminationDate\") }: { DateUtils.formatDate(tenancy.early_termination_date) }\n
\n )\n }\n
\n ),\n }, {\n label: this.props.t(\"Tenancies.RentAmount\"),\n renderChildren: () => (\n \n { this.props.t(\"Listings.MonthlyAmount\") }: { numeral(tenancy.rental_amount).format('($0,0)') }\n
\n { this.props.t(\"shared.SecurityDeposit\") }: { numeral(tenancy.security_deposit).format('($0,0)') }\n
\n ),\n }, {\n label: this.props.t(\"Tenancies.TenancyTerms.Title\"),\n renderChildren: () => (\n \n { this.props.t(\"Tenancies.TenancyTerms.ManagementFee\") }: { tenancy.include_mgmt_fee ? \"INCLUDED\" : \"EXCLUDED\" }\n
\n { this.props.t(\"Tenancies.TenancyTerms.GovtRates\") }: { tenancy.include_govt_rates ? \"INCLUDED\" : \"EXCLUDED\" }\n
\n { this.props.t(\"Tenancies.TenancyTerms.GovtRent\") }: { tenancy.include_govt_rent ? \"INCLUDED\" : \"EXCLUDED\" }\n
\n ),\n }, {\n label: this.props.t(\"Tenancies.PaymentDate\"),\n renderChildren: () => (\n \n { tenancy.rent_due }\n \n ),\n }, {\n label: this.props.t(\"shared.ContactDetails\"),\n renderChildren: () => (\n \n { tenancy.official_tenant_email }
\n { tenancy.official_tenant_phone_number}
\n { tenancy.correspondence_address }\n
\n ),\n }, {\n label: this.props.t(\"shared.Notes\"),\n renderChildren: () => (\n \n \n { tenancy.notes }\n \n \n ),\n }]\n }\n\n render() {\n const { tenancy } = this.props;\n\n return (\n
\n
\n \n {\n this.getDescriptionItems(tenancy).map((item, index) => (\n { item.label } }\n >\n { item.renderChildren() }\n \n ))\n }\n \n
\n { this.renderDocuments(tenancy.documents || []) }\n
\n )\n }\n}\n\nexport default withTranslation('common')(TenancyShow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n Collapse,\n Row,\n Spin,\n Tag,\n Tooltip,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport { ThemeColors } from '@constants/Theme';\nimport * as DateUtils from '@utils/date';\nimport TenancyShow from '@components/Tenancies/Show';\n\nclass List extends React.Component {\n static propTypes = {\n loading: PropTypes.bool,\n tenancies: PropTypes.array,\n onClickAttachDocument: PropTypes.func,\n onClickEdit: PropTypes.func,\n onClickTerminateEarly: PropTypes.func,\n }\n\n static defaultProps = {\n loading: false,\n tenancies: [],\n onClickAttachDocument: (tenancyId) => {},\n onClickEdit: (tenancyId) => {},\n onClickTerminateEarly: (tenancyId) => {},\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n if (this.props.loading) {\n return (\n \n \n \n )\n }\n\n const { tenancies } = this.props;\n if (tenancies.length == 0) {\n return ({ this.props.t(\"Tenancies.messages.NoTenanciesListed\") }.)\n }\n\n let sortedTenancies = tenancies.sort((a, b) => {\n const a_end = a.early_termination_date || a.end_date;\n const b_end = b.early_termination_date || b.end_date;\n return (moment(b_end) - moment(a_end));\n });\n\n const defaultActiveKeys = [`${sortedTenancies[0].id}`];\n return (\n \n {\n sortedTenancies.map((tenancy, index) => {\n const formattedStartDate = DateUtils.formatDate(tenancy.start_date);\n const formattedEndDate = DateUtils.formatDate(tenancy.end_date);\n\n const formattedFullEndDate = tenancy.early_termination_date ? (\n \n \n { DateUtils.formatDate(tenancy.early_termination_date) }\n \n \n ) : formattedEndDate;\n const isPast = moment(tenancy.early_termination_date || tenancy.end_date) < moment();\n const isFuture = moment(tenancy.start_date) > moment();\n return (\n \n \n { isPast ? this.props.t(\"Tenancies.PAST\") : (isFuture ? this.props.t(\"Tenancies.FUTURE\") : this.props.t(\"Tenancies.CURRENT\")) }\n \n { formattedStartDate } - { formattedFullEndDate }: {tenancy.official_tenant_name}\n \n }\n key={ tenancy.id.toString() }\n >\n
\n \n { this.props.onClickEdit(tenancy.id) } }\n >\n { this.props.t(\"Tenancies.actions.UpdateTenancy\") }\n \n { this.props.onClickAttachDocument(tenancy.id) } }\n >\n { this.props.t(\"Documents.actions.AttachDocument\") }\n \n { this.props.onClickTerminateEarly(tenancy.id) } }\n disabled={ !!tenancy.early_termination_date || isPast }\n >\n { this.props.t(\"Tenancies.actions.TerminateTenancy\") }\n \n \n \n { window.open(tenancy.account_payments_url, '_blank') } }\n disabled={ !tenancy.account_payments_url }\n >\n { this.props.t(\"Tenancies.actions.ViewPaymentHistory\") }\n \n \n
\n \n \n )\n })\n }\n
\n )\n }\n}\n\nexport default withTranslation('common')(List);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n DatePicker,\n Form,\n Input,\n InputNumber,\n Modal,\n Radio,\n Select,\n Spin,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnershipActions from '@actions/ownerships';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingOwnerships: false,\n ownershipsById: {},\n errorFetchingOwnerships: null,\n ...state,\n };\n}\n\nclass CreateForm extends React.Component {\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n this.setState({ isFetchingOwnerships: true });\n let params = { ownership_id: this.props.ownershipId };\n this.props.fetchOwnershipsWithManagers(params).then((responseData) => {\n this.setState({\n isFetchingOwnerships: false,\n ownershipsById: {\n ...ArrayUtils.arrayToObject(responseData.ownerships),\n },\n });\n }).catch((error) => {\n this.setState({\n isFetchingOwnerships: false,\n errorFetchingOwnerships: error,\n });\n });\n }\n }\n\n render() {\n const { visible, onCancel, onOk, confirmLoading, form } = this.props;\n const { getFieldDecorator } = form;\n const formItemLayout = {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 8 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 16 },\n },\n };\n return (\n \n
\n \n {getFieldDecorator(\"ownership_id\", {\n rules: [\n { required: true, message: `${ this.props.t(\"Properties.messages.Form.PleaseSelectProperty\") }!` },\n ],\n })(\n 5) }\n filterOption={ (inputValue, option) => {\n const ownershipId = parseInt(option.key);\n const ownership = this.state.ownershipsById[ownershipId];\n if (ownership.name.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n if (ownership.address.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n return false;\n }}\n notFoundContent={\n this.state.isFetchingOwnerships ? : null\n }\n >\n {\n Object.values(this.state.ownershipsById).map((ownership) => (\n \n { ownership.name }. { ownership.address }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator('contract_period', {\n rules: [{ type: 'array', required: true, message: 'Please select dates!' }],\n })(\n \n )}\n \n \n {getFieldDecorator('rent_free_period', {\n rules: [{ type: 'array', required: false, message: 'Please select dates!' }],\n })(\n \n )}\n \n \n {getFieldDecorator(\"official_tenant_name\", {\n rules: [{ required: true, message: \"Please input registered tenant name\" }],\n })()}\n \n \n {getFieldDecorator(\"official_tenant_email\", {\n rules: [{ required: false, message: \"Please input registered tenant email\" }],\n })()}\n \n \n {getFieldDecorator(\"official_tenant_phone_number\", {\n rules: [{ required: false, message: \"Please input registered tenant phone number\" }],\n })()}\n \n \n {getFieldDecorator(\"correspondence_address\", {\n rules: [{ required: false, message: \"Please input registered tenant correspondence address\" }],\n })(\n \n )}\n \n \n {getFieldDecorator('rent_due', {\n initialValue: 1,\n rules: [{ required: true, message: 'Please input payment due date' }],\n })(\n \n )}\n \n \n {getFieldDecorator('rental_amount', {\n rules: [{ required: true, message: 'Please input rental amount' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n \n {getFieldDecorator('security_deposit', {\n rules: [{ required: true, message: 'Please input security deposit' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n \n {getFieldDecorator('include_mgmt_fee', {\n rules: [{ required: true, message: 'Please select management fee' }],\n })(\n \n Included\n Excluded\n \n )}\n \n \n {getFieldDecorator('include_govt_rent', {\n rules: [{ required: true, message: 'Please select govt rent' }],\n })(\n \n Included\n Excluded\n \n )}\n \n \n {getFieldDecorator('include_govt_rates', {\n rules: [{ required: true, message: 'Please select govt rates' }],\n })(\n \n Included\n Excluded\n \n )}\n \n \n {getFieldDecorator('notes', {\n })(\n \n )}\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwnershipsWithManagers: (params) => {\n return (dispatch(OwnershipActions.fetchOwnershipsWithManagers(params)));\n },\n };\n}\n\nconst ConnectedCreateForm = connect(mapStateToProps, mapDispatchToProps)(CreateForm);\n\nconst WrappedCreateForm = Form.create({\n name: \"tenancy_create_form_in_modal\"\n})(ConnectedCreateForm);\n\nexport default withTranslation('common')(WrappedCreateForm);\n","import React from \"react\";\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Form,\n Input,\n Modal,\n Radio,\n} from \"antd\";\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\n\nclass UpdateForm extends React.Component {\n static propTypes = {\n tenancy: PropTypes.shape({\n id: PropTypes.number.isRequired,\n }),\n visible: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n confirmLoading: PropTypes.bool,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { tenancy } = this.props;\n if (!tenancy) {\n return null;\n }\n\n const { form } = this.props;\n const { getFieldDecorator } = form;\n\n const formItemLayout = {\n labelCol: { span: 12 },\n wrapperCol: { span: 12 }\n };\n\n return (\n \n {this.props.children}\n
\n \n { DateUtils.formatDate(tenancy.start_date) } - { DateUtils.formatDate(tenancy.end_date) }\n \n \n {getFieldDecorator(\"official_tenant_name\", {\n initialValue: tenancy.official_tenant_name,\n rules: [{ required: true, message: `${ this.props.t(\"Tenancies.messages.Form.PleaseInputRegisteredTenantName\") }` }],\n })()}\n \n \n {getFieldDecorator(\"official_tenant_email\", {\n initialValue: tenancy.official_tenant_email,\n rules: [{ required: false, message: \"Please input registered tenant email\" }],\n })()}\n \n \n {getFieldDecorator(\"official_tenant_phone_number\", {\n initialValue: tenancy.official_tenant_phone_number,\n rules: [{ required: false, message: \"Please input registered tenant phone number\" }],\n })()}\n \n \n {getFieldDecorator(\"correspondence_address\", {\n initialValue: tenancy.correspondence_address,\n rules: [{ required: false, message: \"Please input registered tenant correspondence address\" }],\n })(\n \n )}\n \n \n {getFieldDecorator('include_mgmt_fee', {\n initialValue: (tenancy.include_mgmt_fee || false).toString(),\n rules: [{ required: true, message: 'Please select management fee' }],\n })(\n \n Included\n Excluded\n \n )}\n \n \n {getFieldDecorator('include_govt_rent', {\n initialValue: (tenancy.include_govt_rent || false).toString(),\n rules: [{ required: true, message: 'Please select govt rent' }],\n })(\n \n Included\n Excluded\n \n )}\n \n \n {getFieldDecorator('include_govt_rates', {\n initialValue: (tenancy.include_govt_rates || false).toString(),\n rules: [{ required: true, message: 'Please select govt rates' }],\n })(\n \n Included\n Excluded\n \n )}\n \n \n {getFieldDecorator('notes', {\n initialValue: tenancy.notes,\n })(\n \n )}\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedUpdateForm = connect(mapStateToProps, mapDispatchToProps)(UpdateForm);\n\nconst WrappedUpdateForm = Form.create({\n name: \"tenancies_update_form_in_modal\"\n})(ConnectedUpdateForm);\n\nexport default withTranslation('common')(WrappedUpdateForm);\n","import React from \"react\";\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Alert,\n DatePicker,\n Form,\n Input,\n Modal,\n} from \"antd\";\n\nimport moment from 'moment'\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\n\nclass TerminateTenancyForm extends React.Component {\n static propTypes = {\n tenancy: PropTypes.shape({\n id: PropTypes.number.isRequired,\n }),\n visible: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n confirmLoading: PropTypes.bool,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { tenancy } = this.props;\n if (!tenancy) {\n return null;\n }\n\n const { form } = this.props;\n const { getFieldDecorator } = form;\n\n const formItemLayout = {\n labelCol: { span: 12 },\n wrapperCol: { span: 12 }\n };\n\n return (\n \n {this.props.children}\n \n
\n \n { DateUtils.formatDate(tenancy.start_date) } - { DateUtils.formatDate(tenancy.end_date) }\n \n \n\n { tenancy.official_tenant_name }\n \n \n {getFieldDecorator(\"early_termination_date\", {\n initialValue: tenancy.early_termination_date && moment(tenancy.early_termination_date),\n rules: [{ required: true, message: `${ this.props.t(\"Tenancies.messages.Form.PleaseInputTerminationDate\") }!` }],\n })(\n {\n return current && (current < moment(tenancy.start_date) || current > moment(tenancy.end_date))\n }}\n />\n )}\n \n \n {getFieldDecorator('notes', {\n initialValue: tenancy.notes,\n })(\n \n )}\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedTerminateTenancyForm = connect(mapStateToProps, mapDispatchToProps)(TerminateTenancyForm);\n\nconst WrappedTerminateTenancyForm = Form.create({\n name: \"tenancies_terminate_form_in_modal\"\n})(ConnectedTerminateTenancyForm);\n\nexport default withTranslation('common')(WrappedTerminateTenancyForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n message,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as DateUtils from '@utils/date';\nimport * as TenanciesActions from '@actions/tenancies';\nimport TenanciesList from '@components/Tenancies/List';\nimport CreateForm from '@components/Tenancies/CreateForm';\nimport UpdateForm from '@components/Tenancies/UpdateForm';\nimport TerminateTenancyForm from '@components/Tenancies/TerminateTenancyForm';\nimport AttachDocumentModal from '@components/AttachDocumentModal';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isCreating: false,\n isFetching: false,\n itemsById: {},\n errorCreating: null,\n errorFetching: null,\n\n // modals\n selectedItemId: null,\n createModalVisible: false,\n updateItemModalVisible: false,\n terminateTenancyModalVisible: false,\n\n // search params\n\n ...state,\n };\n}\n\nclass Tenancies extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number.isRequired,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchTenancies = this.fetchTenancies.bind(this);\n this.onCreateSubmit = this.onCreateSubmit.bind(this);\n this.onUpdateSubmit = this.onUpdateSubmit.bind(this);\n this.attachDocumentToTenancy = this.attachDocumentToTenancy.bind(this);\n this.onTerminateTenancySubmit = this.onTerminateTenancySubmit.bind(this);\n }\n\n componentDidMount() {\n this.fetchTenancies();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.ownershipId !== this.props.ownershipId) {\n this.fetchTenancies();\n }\n }\n\n async fetchTenancies(params = {}) {\n if (this.props.ownershipId) {\n params = {\n ...params,\n ownership_id: this.props.ownershipId,\n }\n }\n this.setState({ isFetching: true })\n try {\n let responseData = await this.props.fetchTenancies({\n ...params,\n });\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.tenancies),\n },\n });\n return responseData\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n itemsById: {},\n });\n return\n }\n }\n\n getSelectedItem() {\n const { selectedItemId, itemsById } = this.state;\n if (!selectedItemId) {\n return null\n }\n const selectedItem = itemsById[selectedItemId];\n return selectedItem ? selectedItem : null;\n }\n\n async onCreateSubmit() {\n const { form } = this.createFormRef.props;\n try {\n let values = await form.validateFields();\n let { contract_period, rent_free_period, ...rest } = values;\n this.setState({ isCreating: true });\n let responseData = await this.props.createTenancy(this.props.ownershipId, {\n start_date: contract_period[0].format('YYYY-MM-DD'),\n end_date: contract_period[1].format('YYYY-MM-DD'),\n rent_free_start_date: rent_free_period && rent_free_period[0] && rent_free_period[0].format('YYYY-MM-DD'),\n rent_free_end_date: rent_free_period && rent_free_period[1] && rent_free_period[1].format('YYYY-MM-DD'),\n ...rest,\n });\n const newTenancy = responseData.tenancy;\n this.setState({\n isCreating: false,\n createModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [newTenancy.id]: newTenancy,\n },\n });\n message.success(this.props.t(\"Tenancies.messages.AddTenancy.Success\"));\n return responseData;\n } catch (error) {\n this.setState({\n isCreating: false,\n errorCreating: error,\n });\n return\n }\n }\n\n async onUpdateSubmit() {\n const { form } = this.updateFormRef.props;\n let selectedItem = this.getSelectedItem();\n if (!selectedItem) {\n return\n }\n try {\n let values = await form.validateFields();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: true,\n },\n },\n });\n let responseData = await this.props.updateTenancy(selectedItem.id, selectedItem.ownership_id, values);\n const updatedTenancy = responseData.tenancy;\n this.setState({\n selectedItemId: null,\n updateItemModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedTenancy.id]: updatedTenancy,\n },\n });\n message.success(this.props.t(\"Tenancies.messages.UpdateTenancy.Success\"));\n return responseData;\n } catch (error) {\n selectedItem = this.getSelectedItem();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n return null;\n }\n }\n\n async onTerminateTenancySubmit() {\n const { form } = this.terminateTenancyFormRef.props;\n let selectedItem = this.getSelectedItem();\n if (!selectedItem) {\n return\n }\n try {\n let values = await form.validateFields();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: true,\n },\n },\n });\n let responseData = await this.props.updateTenancyTerminateEarly(selectedItem.id, selectedItem.ownership_id, values);\n const updatedTenancy = responseData.tenancy;\n this.setState({\n selectedItemId: null,\n terminateTenancyModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedTenancy.id]: updatedTenancy,\n },\n });\n message.success(this.props.t(\"Tenancies.messages.TerminateTenancy.Success\"));\n return responseData;\n } catch (error) {\n selectedItem = this.getSelectedItem();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n return null;\n }\n }\n\n async attachDocumentToTenancy(documentId) {\n let selectedItem = this.getSelectedItem();\n if (!selectedItem) {\n return\n }\n try {\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: true,\n },\n },\n });\n let responseData = await this.props.attachDocumentToTenancy(selectedItem.id, documentId);\n const updatedTenancy = responseData.tenancy;\n this.setState({\n selectedItemId: null,\n attachDocumentModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedTenancy.id]: updatedTenancy,\n },\n });\n message.success(this.props.t(\"Documents.messages.AttachDocument.Success\"));\n return responseData;\n } catch (error) {\n selectedItem = this.getSelectedItem();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedItem.id]: {\n ...selectedItem,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n message.error(this.props.t(\"Documents.messages.AttachDocument.Fail\"));\n throw error\n }\n }\n\n saveCreateFormRef = formRef => {\n this.createFormRef = formRef;\n }\n\n saveUpdateFormRef = formRef => {\n this.updateFormRef = formRef;\n }\n\n saveTerminateTenancyFormRef = formRef => {\n this.terminateTenancyFormRef = formRef;\n }\n\n render() {\n const selectedItem = this.getSelectedItem();\n return (\n
\n this.setState({ createModalVisible: true })}\n >\n { this.props.t(\"Tenancies.actions.AddTenancy\") }\n \n this.setState({ createModalVisible: false }) }\n onOk={ this.onCreateSubmit }\n ownershipId={ this.props.ownershipId }\n confirmLoading={ this.state.isCreating }\n />\n this.setState({ selectedItemId: null, attachDocumentModalVisible: false }) }\n onAttachDocumentSubmit={ (documentId) => this.attachDocumentToTenancy(documentId) }\n confirmLoading={\n (selectedItem && selectedItem.isUpdating)\n }\n />\n this.setState({ selectedItemId: null, updateItemModalVisible: false }) }\n onOk={ this.onUpdateSubmit }\n confirmLoading={\n (selectedItem && selectedItem.isUpdating)\n }\n />\n this.setState({ selectedItemId: null, terminateTenancyModalVisible: false }) }\n onOk={ this.onTerminateTenancySubmit }\n confirmLoading={\n (selectedItem && selectedItem.isUpdating)\n }\n />\n this.setState({ selectedItemId: tenancyId, attachDocumentModalVisible: true })}\n onClickEdit={ (tenancyId) => this.setState({ selectedItemId: tenancyId, updateItemModalVisible: true }) }\n onClickTerminateEarly={ (tenancyId) => this.setState({ selectedItemId: tenancyId, terminateTenancyModalVisible: true }) }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchTenancies: (params = {}) => {\n return dispatch(TenanciesActions.fetchTenancies(params))\n },\n createTenancy: (ownershipId, params = {}) => {\n return dispatch(TenanciesActions.createTenancy(ownershipId, params));\n },\n updateTenancy: (tenancyId, ownershipId, params = {}) => {\n return dispatch(TenanciesActions.updateTenancy(tenancyId, ownershipId, params));\n },\n updateTenancyTerminateEarly: (tenancyId, ownershipId, params = {}) => {\n return dispatch(TenanciesActions.updateTenancyTerminateEarly(tenancyId, ownershipId, params));\n },\n attachDocumentToTenancy: (tenancyId, documentId) => {\n return dispatch(TenanciesActions.attachDocumentToTenancy(tenancyId, documentId));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Tenancies));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Alert,\n Button,\n Icon,\n Row,\n Spin,\n Tabs,\n Timeline,\n} from 'antd';\n\nimport Highlighter from 'react-highlight-words';\n\nimport { withTranslation } from 'react-i18next';\n\nimport moment from 'moment';\n\nimport * as OwnershipUtils from '@utils/ownership';\nimport * as OwnershipActions from '@actions/ownerships';\nimport OwnershipSettings from '@components/Ownerships/Settings';\nimport Documents from '@components/Documents';\nimport AccountEntries from '@components/AccountEntries';\nimport Owners from '@components/Owners';\nimport OwnershipManagers from '@components/OwnershipManagers'\nimport Tasks from '@components/Tasks';\nimport Tenancies from '@components/Tenancies';\n\nconst MAX_ALERTS_HEIGHT = 40 * 3;\n\nclass OwnershipDetail extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number.isRequired,\n onClose: PropTypes.func.isRequired,\n }\n\n constructor(props) {\n super(props);\n this.props.fetchOwnership(props.ownershipId);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.ownershipId !== this.props.ownershipId) {\n this.props.fetchOwnership(this.props.ownershipId);\n }\n }\n\n renderActivityLog(logs) {\n if (!logs || logs.length === 0) {\n return (\n \n No recent activity\n \n )\n }\n\n return (\n \n {\n logs.map((log) => {\n const user = ({ log.user_display_name });\n let color = \"blue\";\n if (log.note.toLowerCase().includes(\"added\") || log.note.toLowerCase().includes(\"created\")) {\n color = \"green\";\n } else if (log.note.toLowerCase().includes(\"removed\") || log.note.toLowerCase().includes(\"deleted\")) {\n color = \"red\";\n }\n return (\n \n { user } { log.note }.\n
\n { moment(log.created_at).fromNow() }\n \n )\n })\n }\n
\n )\n }\n\n renderTabs(ownership) {\n const tabsData = [\n {\n key: \"accounts\",\n renderTabElement: () => ({ this.props.t(\"OwnershipDetailSections.Accounts\") }),\n renderTabDetail: (ownership) => (),\n },\n {\n key: \"tenancies\",\n renderTabElement: () => ({ this.props.t(\"Tenancies.Title\") }),\n renderTabDetail: (ownership) => (),\n },\n {\n key: \"documents\",\n renderTabElement: () => ({ this.props.t(\"Documents.Title\") }),\n renderTabDetail: (ownership) => (),\n },\n {\n key: \"tasks\",\n renderTabElement: () => ({ this.props.t(\"Tasks.Title\") }),\n renderTabDetail: (ownership) => (),\n },\n {\n key: \"owners\",\n renderTabElement: () => ({ this.props.t(\"Owners.Title\") }),\n renderTabDetail: (ownership) => (),\n },\n {\n key: \"team\",\n renderTabElement: () => ({ this.props.t(\"OwnershipDetailSections.Team.Title\") }),\n renderTabDetail: (ownership) => (),\n },\n {\n key: \"settings\",\n renderTabElement: () => ({ this.props.t(\"OwnershipDetailSections.Settings.Title\") }),\n renderTabDetail: (ownership) => (),\n },\n {\n key: \"activity_log\",\n renderTabElement: () => ({ this.props.t(\"OwnershipDetailSections.Activity\") }),\n renderTabDetail: (ownership) => this.renderActivityLog(ownership.activity_logs)\n },\n ]\n\n\n const detailHeight = 194 + Math.min(40 * ownership.alerts.length, MAX_ALERTS_HEIGHT);\n const style = {\n overflowY: \"auto\",\n padding: 4,\n height: `calc(100vh - ${detailHeight}px)`\n }\n\n return (\n \n {\n tabsData.map(({ key, renderTabElement, renderTabDetail }) => {\n return (\n \n
\n { renderTabDetail(ownership) }\n
\n \n )\n })\n }\n
\n )\n }\n\n render() {\n const ownership = this.props.ownershipsData[this.props.ownershipId];\n if (OwnershipUtils.isNotDefined(ownership)) {\n return null;\n }\n return (\n
\n
\n

{ ownership.name }

\n

{ ownership.address }

\n \n
\n \n {\n ownership.alerts.map((alert, index) => {\n const type = alert.type;\n return (\n \n )\n })\n }\n \n { ownership.isFetching ? () : null }\n {\n ownership.fetchOwnershipError ?\n (\n \n There was an issue retrieving your property data.\n this.props.fetchOwnership(ownership.id) }>\n Try again.\n \n

\n }\n showIcon\n />\n ) : null\n }\n { this.renderTabs(ownership) }\n
\n )\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n ownershipsData: state.ownershipsReducer.ownerships,\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n fetchOwnership: (ownershipId) => {\n return dispatch(OwnershipActions.fetchOwnership(ownershipId)).catch((error) => {});\n },\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(OwnershipDetail));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Route } from \"react-router-dom\";\nimport {\n Alert,\n Button,\n Col,\n Empty,\n Form,\n Input,\n message,\n Row,\n Select,\n Spin,\n Tag,\n} from 'antd';\n\nimport Highlighter from 'react-highlight-words';\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/LayoutStyle.scss';\nimport '@components/FilterForm.scss';\nimport {\n ThemeColors,\n LayoutStyle,\n} from '@constants/Theme';\nimport {\n OwnershipStatusOptions,\n} from '@constants/models/Ownership';\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnershipUtils from '@utils/ownership';\nimport * as OwnershipsActions from '@actions/ownerships';\nimport * as OwnersActions from '@actions/owners';\nimport OwnershipCard from '@components/OwnershipCard';\nimport OwnershipCreateForm from '@components/Ownerships/CreateForm';\nimport OwnershipDetail from '@components/OwnershipDetail';\n\nconst calculateStatus = (alerts) => {\n let statusOption = OwnershipStatusOptions.ok;\n if (!alerts) {\n return statusOption;\n }\n if (alerts.some((alert) => alert.type === 'error')) {\n statusOption = OwnershipStatusOptions.error;\n } else if (alerts.some((alert) => alert.type === 'warning')) {\n statusOption = OwnershipStatusOptions.warning;\n }\n return statusOption;\n}\n\nclass Properties extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showCreateOwnershipForm: false,\n filteredInfo: {\n name: '',\n address: '',\n selectedStatusOptions: [],\n selectedOwners: [],\n },\n owners: {\n isFetching: false,\n errorFetching: null,\n itemsById: {},\n },\n }\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.onCreateOwnership = this.onCreateOwnership.bind(this);\n this.fetchOwners = this.fetchOwners.bind(this);\n }\n\n componentDidMount() {\n this.props.fetchOwnerships();\n this.fetchOwners();\n }\n\n async fetchOwners(params = {}) {\n this.setState({\n owners: {\n ...this.state.owners,\n isFetching: true,\n },\n })\n try {\n let responseData = await this.props.fetchOwners({\n ...params,\n });\n this.setState({\n owners: {\n ...this.state.owners,\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.owners),\n },\n },\n });\n return responseData;\n } catch (error) {\n this.setState({\n owners: {\n isFetching: false,\n errorFetching: null,\n itemsById: {},\n },\n });\n return\n }\n }\n\n renderOwnershipDetail() {\n return (\n {\n const { ownershipId } = match.params;\n\n return (\n this.props.history.push(\"/properties\") }\n />\n )\n }}\n />\n )\n }\n\n getFilteredResults(ownerships) {\n const { filteredInfo } = this.state;\n return ownerships.filter((ownership) => {\n if (OwnershipUtils.isNotDefined(ownership)) {\n return false;\n }\n if (filteredInfo && filteredInfo.name) {\n if (!ownership.name.toLowerCase().includes(filteredInfo.name.toLowerCase())) {\n return false;\n }\n }\n if (filteredInfo && filteredInfo.address) {\n if (!ownership.address.toLowerCase().includes(filteredInfo.address.toLowerCase())) {\n return false;\n }\n }\n if (filteredInfo && filteredInfo.selectedStatusOptions && filteredInfo.selectedStatusOptions.length > 0) {\n const statusOption = calculateStatus(ownership.alerts);\n if (!filteredInfo.selectedStatusOptions.includes(statusOption.value)) {\n return false;\n }\n }\n if (filteredInfo && filteredInfo.selectedOwners && filteredInfo.selectedOwners.length > 0) {\n const owners = filteredInfo.selectedOwners.map((ownerId) => this.state.owners.itemsById[ownerId]);\n const ownershipIds = owners.map((owner) => owner.ownerships.map((ownership) => ownership.id)).flat()\n if (!ownershipIds.includes(ownership.id)) {\n return false;\n }\n }\n return true;\n });\n }\n\n renderOwnershipsCards(filteredOwnerships) {\n const { filteredInfo } = this.state;\n if ((filteredOwnerships.length === 0) && !this.props.isFetchingOwnershipsData) {\n return (\n \n )\n }\n return filteredOwnerships.sort((ownershipA, ownershipB) => {\n return ownershipA.name.localeCompare(ownershipB.name);\n }).map((ownership, index) => {\n const statusOption = calculateStatus(ownership.alerts);\n return (\n (\n {\n this.props.history.push(`${this.props.match.path}/${ownership.id}`)\n }}\n style={{\n backgroundColor: (match) ? ThemeColors.babyBlue : 'white',\n }}\n title={\n \n }\n status={ { this.props.t(statusOption.ttextKey) } }\n ownership={ ownership }\n />\n )}\n >\n \n )\n })\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n },\n });\n }\n\n renderFilterOwnershipsForm() {\n const formItems = [\n {\n label: this.props.t(\"Properties.Property\"),\n span: 6,\n render: () => (\n this.onChangeFilter('name', e.target.value) }\n />\n ),\n }, {\n label: this.props.t(\"Properties.Address\"),\n span: 6,\n render: () => (\n this.onChangeFilter('address', e.target.value) }\n />\n ),\n }, {\n label: this.props.t(\"shared.Status\"),\n span: 6,\n render: () => (\n this.onChangeFilter('selectedStatusOptions', values) }\n >\n {\n Object.values(OwnershipStatusOptions).map((statusOption) => (\n \n { this.props.t(statusOption.ttextKey) }\n \n ))\n }\n \n ),\n }, {\n label: this.props.t(\"Owners.Title\"),\n span: 6,\n render: () => (\n this.onChangeFilter('selectedOwners', values) }\n loading={ this.state.owners && this.state.owners.isFetching }\n filterOption={ (inputValue, option) => {\n const ownerId = parseInt(option.key);\n const owner = this.state.owners.itemsById[ownerId];\n return (owner.name.toLowerCase().includes(inputValue.toLowerCase()))\n }}\n >\n {\n Object.values(this.state.owners.itemsById).map((owner) => (\n \n { owner.name }\n \n ))\n }\n \n ),\n }\n ]\n return (\n \n \n {\n formItems.map((item, index) => (\n \n \n { item.render() }\n \n \n ))\n }\n \n \n )\n }\n\n async onCreateOwnership() {\n const { form } = this.createFormRef.props;\n try {\n let values = await form.validateFields();\n let responseData = await this.props.createOwnership(values);\n this.setState({ showCreateOwnershipForm: false })\n message.success(\"Successfully added a new property\");\n let ownershipId = responseData.ownership.id;\n this.props.history.push(`/properties/${ownershipId}`);\n return responseData;\n } catch (error) {\n return\n }\n }\n\n saveCreateFormRef = formRef => {\n this.createFormRef = formRef;\n }\n\n render() {\n const allOwnerships = Object.values(this.props.ownershipsData);\n const filteredOwnerships = this.getFilteredResults(allOwnerships);\n\n return (\n
\n { this.renderFilterOwnershipsForm() }\n {\n this.props.isFetchingOwnershipsData && (\n \n \n \n )\n }\n {\n this.props.errorFetchingOwnershipsData && (\n \n \n There was an issue retrieving your property data.\n this.props.fetchOwnerships() }>\n Try again.\n \n

\n }\n showIcon\n />\n
\n )\n }\n
\n \n
\n this.setState({ showCreateOwnershipForm: true }) }\n >\n { this.props.t(\"Properties.actions.AddProperty\") }\n \n this.setState({ showCreateOwnershipForm: false }) }\n onOk={ this.onCreateOwnership }\n />\n {\n (filteredOwnerships.length !== allOwnerships.length) && (allOwnerships.length > 1) && (\n Showing { filteredOwnerships.length } of { allOwnerships.length }\n )\n }\n
\n { this.renderOwnershipsCards(filteredOwnerships) }\n
\n \n { this.renderOwnershipDetail() }\n
\n \n \n )\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n isFetchingOwnershipsData: state.ownershipsReducer.isFetching,\n ownershipsData: state.ownershipsReducer.ownerships,\n errorFetchingOwnershipsData: state.ownershipsReducer.error,\n isCreatingOwnership: state.ownershipsReducer.isCreating,\n errorCreatingOwnership: state.ownershipsReducer.creatingError,\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n fetchOwnerships: () => {\n return dispatch(OwnershipsActions.fetchOwnerships()).catch((error) => {});\n },\n createOwnership: (values = {}) => {\n return dispatch(OwnershipsActions.createOwnership(values));\n },\n fetchOwners: (params = {}) => {\n return dispatch(OwnersActions.fetchOwners(params))\n },\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Properties));\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport '@components/LayoutStyle.scss';\nimport Documents from '@components/Documents';\n\nexport default class DocumentsMainView extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n return (\n
\n \n
\n )\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport '@components/LayoutStyle.scss';\nimport Tasks from '@components/Tasks';\n\nexport default class TasksMainView extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
\n \n
\n )\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport '@components/LayoutStyle.scss';\nimport Owners from '@components/Owners';\n\nexport default class OwnersMainView extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n return (\n
\n \n
\n )\n }\n}\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchListings = (params = {}) => {\n return Api.get(\n 'listings',\n ActionTypes.FETCH_LISTINGS,\n params,\n )\n}\n\nexport const createListing = (ownershipId, params = {}) => {\n return Api.postUpload(\n 'listings',\n ActionTypes.CREATE_LISTING,\n {\n ...params,\n ownership_id: ownershipId,\n },\n {\n ownershipId,\n }\n )\n}\n\nexport const broadcastListing = (listingId, params = {}) => {\n return Api.post(\n `listings/${listingId}/broadcast_listing`,\n ActionTypes.BROADCAST_LISTING,\n params,\n {},\n )\n}\n\nexport const updateListing = (listingId, params = {}) => {\n return Api.putUpload(\n `listings/${listingId}`,\n ActionTypes.UPDATE_LISTING,\n params,\n {},\n )\n}\n\nexport const closeListing = (listingId, params = {}) => {\n return Api.put(\n `listings/${listingId}/close_listing`,\n ActionTypes.CLOSE_LISTING,\n params,\n {},\n )\n}\n","export const ListingTypeOptions = {\n \"rent\": {\n value: \"rent\",\n ttextKey: \"Listings.ListingTypeRent\",\n color: \"orange\",\n },\n \"sale\": {\n value: \"sale\",\n ttextKey: \"Listings.ListingTypeSale\",\n color: \"red\",\n },\n}\n\n\nexport const ListingStatusOptions = {\n \"available\": {\n value: \"available\",\n ttextKey: \"Listings.StatusOptions.Available\",\n },\n \"closed\": {\n value: \"closed\",\n ttextKey: \"Listings.StatusOptions.Closed\",\n },\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Card,\n Carousel,\n Col,\n Descriptions,\n Icon,\n Radio,\n Row,\n Statistic,\n Table,\n Tabs,\n Tag,\n Tooltip,\n} from 'antd';\n\nimport moment from 'moment';\nimport numeral from 'numeral';\nimport dompurify from 'dompurify';\nimport { withTranslation } from 'react-i18next';\n\nimport * as DateUtils from '@utils/date';\n\nclass ListingEventsTableComponent extends React.Component {\n static propTypes = {\n dataSource: PropTypes.array,\n }\n\n static defaultProps = {\n dataSource: [],\n }\n\n constructor(props) {\n super(props);\n this.state = {\n pagination: {\n current: 1,\n pageSize: 10,\n },\n sorter: {},\n }\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(pagination, filters, sorter) {\n this.setState({\n pagination,\n sorter,\n })\n }\n\n render() {\n let { sorter } = this.state;\n\n let columns = [{\n title: this.props.t(\"shared.Date\"),\n dataIndex: 'event_time',\n key: 'event_time',\n width: 150,\n sorter: (a, b) => moment(a.event_time) - moment(b.event_time),\n sortOrder: sorter.columnKey === 'event_time' && sorter.order,\n render: (event_time) => DateUtils.formatDate(event_time),\n }, {\n title: this.props.t(\"Listings.AgentEventsTable.Agent\"),\n dataIndex: 'property_agent_name',\n key: 'property_agent_name',\n render: (property_agent_name, record) => {\n return (!!record.property_agent_mobile) ? (\n \n { property_agent_name }\n \n ) : property_agent_name;\n },\n }, {\n title: this.props.t(\"Listings.AgentEventsTable.Agency\"),\n dataIndex: 'property_agency_name',\n key: 'property_agency_name',\n }, {\n title: this.props.t(\"Listings.AgentEventsTable.Event\"),\n dataIndex: 'event_type_display_name',\n key: 'event_type_display_name',\n width: 200,\n }, {\n title: this.props.t(\"shared.Notes\"),\n dataIndex: 'note',\n key: 'note',\n }];\n\n return (\n record.id }\n columns={ columns }\n onChange={ this.onChange }\n pagination={{ pageSize: 100 }}\n scroll={{ y: 400 }}\n { ...this.props }\n />\n )\n }\n}\nconst ListingEventsTable = withTranslation('common')(ListingEventsTableComponent)\n\nclass ListingShow extends React.Component {\n static propTypes = {\n }\n\n static defaultProps = {\n }\n\n constructor(props) {\n super(props);\n const eventTypeTags = Object.values(props.ListingEventTypeOptions).map((listingEventType) => listingEventType.value);\n this.state = {\n selectedListingEventTypeTags: eventTypeTags,\n listingEventSummaryRange: \"4-weeks\",\n };\n this.handleListingEventTagChange = this.handleListingEventTagChange.bind(this);\n }\n\n handleListingEventTagChange(tag, checked) {\n const { selectedListingEventTypeTags } = this.state;\n const nextSelectedTags = checked ? [...selectedListingEventTypeTags, tag] : selectedListingEventTypeTags.filter(t => t !== tag);\n this.setState({ selectedListingEventTypeTags: nextSelectedTags });\n }\n\n renderCarousel(listing) {\n if (listing.images.length == 0) {\n return\n }\n return (\n
\n \n {\n listing.images.map((image) => (\n
\n \n
\n ))\n }\n
\n
\n )\n }\n\n renderDescriptions(listing) {\n const isRental = (listing.listing_type == \"rent\")\n const descriptions = [\n {\n label: this.props.t(\"Listings.ListingName\"),\n shouldRender: true,\n span: 1,\n render: () => listing.name,\n }, {\n label: this.props.t(\"Listings.AvailableFrom\"),\n shouldRender: true,\n span: 1,\n render: () => !!listing.available_date && DateUtils.formatDate(listing.available_date),\n }, {\n label: this.props.t(\"Listings.PreviewUrl\"),\n shouldRender: true,\n span: 1,\n render: () => { this.props.t(\"Listings.actions.ViewListing\") },\n }, {\n label: this.props.t(\"Listings.MonthlyAmount\"),\n shouldRender: isRental,\n span: 1,\n render: () => listing.amount && { numeral(listing.amount).format('($0,0)') } / month\n }, {\n label: this.props.t(\"shared.SecurityDeposit\"),\n shouldRender: isRental,\n span: 1,\n render: () => listing.security_deposit && { numeral(listing.security_deposit).format('($0,0)') }\n }, {\n label: this.props.t(\"Listings.SaleAmount\"),\n shouldRender: !isRental,\n span: 2,\n render: () => { numeral(listing.amount).format('($0,0)') }\n }, {\n label: this.props.t(\"Listings.AgentCommission\"),\n shouldRender: true,\n span: 1,\n render: () => listing.agent_commission_fixed && { numeral(listing.agent_commission_fixed).format('($0,0)') },\n }, {\n label: this.props.t(\"Listings.FloorArea\"),\n shouldRender: true,\n span: 3,\n render: () => listing.ownership.sqft_display_text && { listing.ownership.sqft_display_text },\n }, {\n label: this.props.t(\"Listings.LongDescription\"),\n shouldRender: true,\n span: 3,\n render: () => (\n \n ),\n }, {\n label: this.props.t(\"Listings.InternalNotes\"),\n shouldRender: true,\n span: 3,\n render: () => (\n \n ),\n }, {\n label: this.props.t(\"Listings.Photos\"),\n shouldRender: true,\n span: 3,\n render: () => this.renderCarousel(listing),\n },\n ]\n return (\n \n {\n descriptions.filter(({ shouldRender }) => shouldRender).map((item, index) => (\n { item.label } }\n span={ item.span }\n >\n { item.render() }\n \n ))\n }\n \n )\n }\n\n renderActionButtons(listing) {\n return (\n \n this.props.onClickUpdate(listing) }\n icon=\"edit\"\n >\n { this.props.t(\"Listings.actions.UpdateListing\") }\n \n this.props.onClickBroadcast(listing) }\n >\n { this.props.t(\"Listings.actions.BroadcastListing\") }\n \n this.props.onClickCloseListing(listing) }\n icon=\"close\"\n type=\"danger\"\n ghost\n >\n { this.props.t(\"Listings.actions.CloseListing\") }\n \n \n )\n }\n\n render() {\n const { listing } = this.props;\n const listingEvents = listing.listing_property_agent_events;\n const filteredEvents = listingEvents.filter((listingEvent) => {\n return (this.state.selectedListingEventTypeTags.indexOf(listingEvent.event_type_value) > -1)\n }).map((listingEvent) => {\n return {\n ...listingEvent,\n event_type_display_name: this.props.ListingEventTypeOptions[listingEvent.event_type_value].text,\n }\n })\n const countEvents = (event_type) => {\n let events = listingEvents.filter((listingEvent) => listingEvent.event_type_value === event_type);\n events = events.filter((listingEvent) => {\n if (this.state.listingEventSummaryRange === \"4-weeks\") {\n return moment().diff(moment(listingEvent.event_time), 'weeks') < 4;\n } else if (this.state.listingEventSummaryRange === \"2-weeks\") {\n return moment().diff(moment(listingEvent.event_time), 'weeks') < 2;\n } else {\n return true;\n }\n })\n return events.length;\n };\n const listingStatistics = [\n {\n title: \"Broadcast via Whatsapp\",\n value: countEvents(\"broadcast_whatsapp\"),\n prefix: ,\n }, {\n title: \"Outgoing Call\",\n value: countEvents(\"outgoing_call\"),\n prefix: ,\n }, {\n title: \"Inquiry for property\",\n value: countEvents(\"inquiry\"),\n prefix: ,\n }, {\n title: \"Property Viewing\",\n value: countEvents(\"onsite_viewing\"),\n prefix: ,\n },\n ]\n return (\n
\n {\n listing.closed_at ?\n

{ this.props.t(\"Listings.ListingClosedOn\") }: { DateUtils.formatDate(listing.closed_at) }

:\n this.renderActionButtons(listing)\n }\n { this.renderDescriptions(listing) }\n \n \n
\n Event Types:\n {\n Object.values(this.props.ListingEventTypeOptions).map((listingEventType) => {\n const key = listingEventType.value;\n return (\n -1 }\n onChange={ checked => this.handleListingEventTagChange(key, checked) }\n >\n { listingEventType.text }\n \n )\n })\n }\n
\n \n
\n \n {\n this.setState({ listingEventSummaryRange: e.target.value });\n }}\n >\n All\n 1 month\n 2 weeks\n \n \n {\n listingStatistics.map(({ title, value, prefix }, index) => {\n const card = (\n \n \n \n )\n return (\n \n { card }\n \n )\n })\n }\n \n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n ListingEventTypeOptions: state.listingsReducer.ListingEventTypeOptions,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(ListingShow));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n Collapse,\n Spin,\n Tag,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport {\n ListingTypeOptions,\n} from '@constants/models/Listing';\nimport ListingShow from '@components/Listings/Show';\n\nclass ListingsList extends React.Component {\n static propTypes = {\n }\n\n static defaultProps = {\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { onClickBroadcast, onClickUpdate, onClickCloseListing, loading } = this.props;\n if (loading) {\n return (\n
\n \n
\n )\n }\n return (\n
\n \n {\n this.props.dataSource.sort((listingA, listingB) => {\n return listingA.ownership.name.localeCompare(listingB.ownership.name);\n }).map((listing, index) => (\n \n \n { this.props.t(ListingTypeOptions[listing.listing_type].ttextKey) }\n \n { listing.ownership.name }. { listing.ownership.address }\n
\n }\n >\n \n \n ))\n }\n \n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(ListingsList));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport {\n Button,\n Col,\n Form,\n Input,\n Radio,\n Row,\n Select,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/FilterForm.scss';\nimport { ListingStatusOptions } from '@constants/models/Listing';\n\nclass FilterForm extends React.Component {\n static propTypes = {\n // showPropertyName: PropTypes.bool,\n filteredInfo: PropTypes.shape({\n displayName: PropTypes.string,\n address: PropTypes.address,\n status: PropTypes.string,\n selectedUsageTypes: PropTypes.array,\n }).isRequired,\n loading: PropTypes.bool,\n onSubmit: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n showPropertyName: false,\n loading: false,\n onSubmit: (filteredInfo) => {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n filteredInfo: { ...this.props.filteredInfo },\n };\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.filteredInfo !== this.props.filteredInfo) {\n this.setState({\n filteredInfo: this.props.filteredInfo,\n });\n }\n }\n\n isDirty() {\n const keys = Object.keys(this.state.filteredInfo);\n return keys.some((key) => this.props.filteredInfo[key] !== this.state.filteredInfo[key]);\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n },\n });\n }\n\n onSubmit() {\n this.props.onSubmit(this.state.filteredInfo);\n }\n\n getFormItems() {\n const items = [{\n label: this.props.t(\"shared.Status\"),\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('status', e.target.value) }\n value={ this.state.filteredInfo.status }\n >\n {\n Object.values(ListingStatusOptions).map((listingStatusOption) => (\n \n { this.props.t(listingStatusOption.ttextKey) }\n \n ))\n }\n \n )\n }, {\n label: null,\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n \n { this.props.t(\"actions.Search\") }\n \n ),\n }];\n return items.filter(({ shouldRender }) => { return shouldRender }).map((item, index) => {\n return (\n \n \n { item.renderChildren() }\n \n \n )\n });\n }\n\n render() {\n return (\n
\n
\n \n { this.getFormItems() }\n \n \n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(FilterForm));\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchPropertyAgents = (params = {}) => {\n return Api.get(\n 'property_agents',\n ActionTypes.FETCH_PROPERTY_AGENTS,\n params,\n )\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Col,\n Form,\n Input,\n Modal,\n Radio,\n Row,\n Select,\n Table,\n Tag,\n Tooltip,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/FilterForm.scss';\nimport * as ArrayUtils from '@utils/array';\nimport * as PropertyAgentActions from '@actions/propertyAgents';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetching: false,\n itemsById: {},\n errorFetching: null,\n\n selectedRowKeys: [],\n remarksOption: null,\n\n filteredInfo: {\n companyName: '',\n selectedNeighbourhoods: [],\n },\n\n ...state,\n }\n}\n\nclass WhatsappBroadcastForm extends React.Component {\n static propTypes = {\n listing: PropTypes.shape({\n id: PropTypes.number.isRequired,\n }),\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchPropertyAgents = this.fetchPropertyAgents.bind(this);\n this.onSelectChange = this.onSelectChange.bind(this);\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.getFilteredResults = this.getFilteredResults.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.setState({ selectedRowKeys: [], remarksOption: null });\n return\n } else if (!prevProps.visible && this.props.visible) {\n this.fetchPropertyAgents();\n }\n }\n\n async fetchPropertyAgents() {\n this.setState({ isFetching: true })\n try {\n let responseData = await this.props.fetchPropertyAgents();\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.property_agents),\n },\n })\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n })\n }\n }\n\n onSelectChange(selectedRowKeys) {\n this.setState({ selectedRowKeys });\n };\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n },\n });\n }\n\n getFormItems() {\n const items = [{\n label: this.props.t(\"Listings.AgentEventsTable.Agency\"),\n shouldRender: true,\n span: 12,\n renderChildren: () => (\n this.onChangeFilter('companyName', e.target.value) }\n />\n ),\n }, {\n label: \"Region\",\n shouldRender: true,\n span: 12,\n renderChildren: () => (\n this.onChangeFilter('selectedNeighbourhoods', values) }\n filterOption={ (inputValue, option) => {\n const neighbourhoodId = parseInt(option.key);\n const neighbourhood = this.props.NeighbourhoodOptions[neighbourhoodId];\n if (neighbourhood.name.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n return false;\n }}\n >\n {\n Object.values(this.props.NeighbourhoodOptions).map((neighbourhood) => (\n \n { neighbourhood.name }\n \n ))\n }\n \n ),\n }]\n\n const formItemLayout = {\n labelCol: {\n lg: { span: 6, },\n xl: { span: 5 },\n },\n wrapperCol: {\n lg: { span: 18 },\n xl: { span: 19 },\n },\n };\n return items.filter(({ shouldRender }) => { return shouldRender }).map((item, index) => {\n return (\n \n \n { item.renderChildren() }\n \n \n )\n });\n }\n\n renderFilterForm() {\n return (\n
\n
\n \n { this.getFormItems() }\n \n \n
\n )\n }\n\n getFilteredResults(items) {\n const { filteredInfo } = this.state;\n return items.filter((agent) => {\n if (!filteredInfo) { return true };\n if (filteredInfo.companyName) {\n if (agent.agency && agent.agency.name\n && !agent.agency.name.toLowerCase().includes(filteredInfo.companyName.toLowerCase())\n ) {\n return false\n }\n }\n if (filteredInfo.selectedNeighbourhoods && filteredInfo.selectedNeighbourhoods.length > 0) {\n const selectedIds = filteredInfo.selectedNeighbourhoods;\n const actualIds = agent.neighbourhoods.map((n) => n.id.toString());\n const intersection = selectedIds.filter(value => actualIds.includes(value))\n if (intersection.length === 0) {\n return false;\n }\n }\n return true\n })\n }\n\n renderAdditionFormItems() {\n const { getFieldDecorator } = this.props.form;\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 }\n };\n return (\n
\n \n this.setState({ remarksOption: e.target.value }) }\n value={ this.state.remarksOption }\n >\n \n { this.props.t(\"Listings.BroadcastRemarks.NewListing\") }\n \n \n { this.props.t(\"Listings.BroadcastRemarks.UpdatedDetails\") }\n \n \n { this.props.t(\"Listings.BroadcastRemarks.PriceReduction\") }\n \n \n \n \n )\n }\n\n render() {\n const { selectedRowKeys, remarksOption } = this.state;\n const rowSelection = {\n selectedRowKeys: selectedRowKeys,\n onChange: this.onSelectChange,\n };\n const dataSource = this.getFilteredResults(Object.values(this.state.itemsById));\n return (\n { return this.props.onOk(selectedRowKeys, remarksOption) }}\n confirmLoading={ this.props.confirmLoading }\n >\n { this.renderFilterForm() }\n record.id.toString() }\n loading={ this.state.isFetching }\n rowSelection={ rowSelection }\n columns={[{\n title: this.props.t(\"Listings.AgentEventsTable.Agent\"),\n dataIndex: 'name',\n key: 'name',\n }, {\n title: this.props.t(\"Listings.AgentEventsTable.Agency\"),\n dataIndex: 'agency.name',\n key: 'agency.name',\n }, {\n title: 'Regions',\n dataIndex: 'neighbourhoods',\n key: 'neighbourhoods',\n render: (neighbourhoods, record) => {\n return (\n
\n {\n neighbourhoods.map((neighbourhood) => (\n \n \n { neighbourhood.abbreviation }\n \n \n ))\n }\n
\n )\n },\n }]}\n dataSource={ dataSource }\n />\n { this.renderAdditionFormItems() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n NeighbourhoodOptions: state.constantsReducer.neighbourhoodsById,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchPropertyAgents: (params = {}) => {\n return (dispatch(PropertyAgentActions.fetchPropertyAgents(params)));\n },\n };\n}\n\nconst ConnectedWhatsappBroadcastForm = connect(mapStateToProps, mapDispatchToProps)(WhatsappBroadcastForm);\n\nconst WrappedWhatsappBroadcastForm = Form.create({\n name: \"listings_broadcast_form_in_modal\"\n})(ConnectedWhatsappBroadcastForm);\n\nexport default withTranslation('common')(WrappedWhatsappBroadcastForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n DatePicker,\n Form,\n Icon,\n Input,\n InputNumber,\n Modal,\n Select,\n Spin,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport {\n ListingTypeOptions,\n} from '@constants/models/Listing';\nimport * as ArrayUtils from '@utils/array';\nimport * as OwnershipActions from '@actions/ownerships';\nimport QuillEditor from '@components/QuillEditor'\nimport AsyncUpload from '@components/AsyncUpload';\n\nconst RESET_STATE = (state = {}) => {\n return {\n isFetchingOwnerships: false,\n ownershipsById: {},\n errorFetchingOwnerships: null,\n\n fileDataMap: {},\n\n selectedListingType: null,\n ...state,\n };\n}\n\nclass CreateForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onOk = this.onOk.bind(this);\n this.onChangeSelectedType = this.onChangeSelectedType.bind(this);\n this.handleChangeQuill = this.handleChangeQuill.bind(this);\n this.updateFileDataMap = this.updateFileDataMap.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n if (!prevProps.visible && this.props.visible) {\n this.setState({ isFetchingOwnerships: true });\n this.props.fetchOwnershipsWithManagers().then((responseData) => {\n this.setState({\n isFetchingOwnerships: false,\n ownershipsById: {\n ...ArrayUtils.arrayToObject(responseData.ownerships),\n },\n });\n }).catch((error) => {\n this.setState({\n isFetchingOwnerships: false,\n errorFetchingOwnerships: error,\n })\n });\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n onOk() {\n this.props.form.setFieldsValue({\n images: Object.values(this.state.fileDataMap).map((fileMetaData) => fileMetaData.blobSignedId),\n });\n this.props.onOk();\n }\n\n onChangeSelectedType(value) {\n this.setState({ selectedListingType: value });\n }\n\n renderAmountLabel() {\n const { selectedListingType } = this.state;\n if (selectedListingType) {\n if (selectedListingType === \"rent\") {\n return this.props.t(\"Listings.MonthlyAmount\");\n } else {\n return this.props.t(\"Listings.SaleAmount\");\n }\n }\n return this.props.t(\"shared.Amount\");\n }\n\n handleChangeQuill(key, value) {\n this.props.form.setFieldsValue({\n [key]: value,\n })\n }\n\n updateFileDataMap(fileDataMap) {\n this.setState({ fileDataMap });\n }\n\n renderForm() {\n const { getFieldDecorator } = this.props.form;\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 }\n };\n\n return (\n
\n \n {getFieldDecorator(\"ownership_id\", {\n rules: [\n { required: true, message: `${this.props.t(\"Properties.messages.Form.PleaseSelectProperty\")}!` },\n ],\n })(\n 5) }\n filterOption={ (inputValue, option) => {\n const ownershipId = parseInt(option.key);\n const ownership = this.state.ownershipsById[ownershipId];\n if (ownership.name.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n if (ownership.address.toLowerCase().includes(inputValue.toLowerCase())) {\n return true;\n }\n return false;\n }}\n notFoundContent={\n this.state.isFetchingOwnerships ? : null\n }\n >\n {\n Object.values(this.state.ownershipsById).map((ownership) => (\n \n { ownership.name }. { ownership.address }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator(\"listing_type\", {\n rules: [\n { required: true, message: `${this.props.t(\"messages.Form.PleaseSelectType\")}!` },\n ],\n })(\n \n {\n Object.values(ListingTypeOptions).map((listingType) => (\n \n { this.props.t(listingType.ttextKey) }\n \n ))\n }\n \n )}\n \n \n {getFieldDecorator(\"name\", {\n rules: [{ required: true, message: \"Please input a short name\" }]\n })()}\n \n {\n this.state.selectedListingType && (\n \n {getFieldDecorator('amount', {\n rules: [{ required: true, message: 'Please input amount' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n )\n }\n {\n this.state.selectedListingType === \"rent\" && (\n \n {getFieldDecorator('security_deposit', {\n rules: [{ required: false, message: `${ this.props.t(\"Listings.messages.Form.PleaseInputSecurityDeposit\") }!` }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n )\n }\n \n {getFieldDecorator('agent_commission_fixed', {\n rules: [{ required: false, message: `${this.props.t(\"Listings.messages.Form.PleaseInputAgentCommission\") }!` }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n \n {getFieldDecorator(\"available_date\")()}\n \n \n {getFieldDecorator(\"description\", {\n initialValue: null\n })()}\n this.handleChangeQuill(\"description\", value) }\n />\n \n \n {getFieldDecorator(\"internal_notes\", {\n initialValue: null\n })()}\n this.handleChangeQuill(\"internal_notes\", value) }\n />\n \n {\n (this.state.selectedListingType === \"rent\") && (\n \n {getFieldDecorator('min_lease_period_in_months', {\n rules: [{ required: false, message: 'Please input minimum lease period' }],\n })(\n \n )}\n \n )\n }\n \n
\n {getFieldDecorator(\"images\", {\n getValueFromEvent: this.normFile,\n rules: [\n { required: false, message: `${this.props.t(\"Listings.messages.Form.PleaseSelectImages\") }!` },\n ],\n })(\n \n \n \n )}\n
\n \n \n )\n }\n\n render() {\n return (\n \n { this.renderForm() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchOwnershipsWithManagers: (params) => {\n return (dispatch(OwnershipActions.fetchOwnershipsWithManagers(params)));\n },\n };\n}\n\nconst ConnectedCreateForm = connect(mapStateToProps, mapDispatchToProps)(CreateForm);\n\nconst WrappedCreateForm = Form.create({\n name: \"listings_creation_form_in_modal\"\n})(ConnectedCreateForm);\n\nexport default withTranslation('common')(WrappedCreateForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n DatePicker,\n Form,\n Icon,\n Input,\n InputNumber,\n Modal,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport {\n ListingTypeOptions,\n} from '@constants/models/Listing';\nimport * as ArrayUtils from '@utils/array';\nimport QuillEditor from '@components/QuillEditor'\nimport AsyncUpload from '@components/AsyncUpload';\n\nconst RESET_STATE = (state = {}) => {\n return {\n fileDataMap: {},\n ...state,\n };\n}\n\nclass UpdateForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onOk = this.onOk.bind(this);\n this.handleChangeQuill = this.handleChangeQuill.bind(this);\n this.updateFileDataMap = this.updateFileDataMap.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n onOk() {\n this.props.form.setFieldsValue({\n images: Object.values(this.state.fileDataMap).map((fileMetaData) => fileMetaData.blobSignedId),\n });\n this.props.onOk();\n }\n\n renderAmountLabel(listingType) {\n if (listingType === \"rent\") {\n return this.props.t(\"Listings.MonthlyAmount\");\n } else {\n return this.props.t(\"Listings.SaleAmount\");\n }\n }\n\n handleChangeQuill(key, value) {\n this.props.form.setFieldsValue({\n [key]: value,\n })\n }\n\n updateFileDataMap(fileDataMap) {\n this.setState({ fileDataMap });\n }\n\n renderForm() {\n const { listing } = this.props;\n const { getFieldDecorator } = this.props.form;\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 }\n };\n\n return (\n
\n \n { listing.ownership.name }\n \n \n { this.props.t(ListingTypeOptions[listing.listing_type].ttextKey) }\n \n \n {getFieldDecorator(\"name\", {\n initialValue: listing.name || \"\",\n rules: [{ required: true, message: \"Please input a short name\" }]\n })()}\n \n \n {getFieldDecorator('amount', {\n initialValue: listing.amount,\n rules: [{ required: true, message: 'Please input amount' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n {\n listing.listing_type === \"rent\" && (\n \n {getFieldDecorator('security_deposit', {\n initialValue: listing.security_deposit,\n rules: [{ required: false, message: 'Please input security deposit' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n )\n }\n \n {getFieldDecorator('agent_commission_fixed', {\n initialValue: listing.agent_commission_fixed,\n rules: [{ required: false, message: 'Please input agent commission' }],\n })(\n `$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={value => value.replace(/\\$\\s?|(,*)/g, '')}\n />\n )}\n \n \n {getFieldDecorator(\"available_date\", {\n initialValue: listing.available_date ? moment(listing.available_date) : null,\n })()}\n \n \n {getFieldDecorator(\"description\", {\n initialValue: listing.description || \"\",\n })()}\n this.handleChangeQuill(\"description\", value) }\n />\n \n \n {getFieldDecorator(\"internal_notes\", {\n initialValue: listing.internal_notes || \"\",\n })()}\n this.handleChangeQuill(\"internal_notes\", value) }\n />\n \n {\n (listing.listing_type === \"rent\") && (\n \n {getFieldDecorator('min_lease_period_in_months', {\n initialValue: listing.min_lease_period_in_months,\n rules: [{ required: false, message: 'Please input minimum lease period' }],\n })(\n \n )}\n \n )\n }\n \n
\n {getFieldDecorator(\"images\", {\n getValueFromEvent: this.normFile,\n rules: [\n { required: false, message: `${this.props.t(\"Listings.messages.Form.PleaseSelectImages\")}!` },\n ],\n })(\n \n \n \n )}\n
\n \n \n )\n }\n\n render() {\n const { listing } = this.props;\n if (!listing) {\n return null;\n }\n const anyFileLoading = Object.values(this.state.fileDataMap).some((fileMetaData) => fileMetaData.isFileUploading);\n return (\n \n { this.renderForm() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedUpdateForm = connect(mapStateToProps, mapDispatchToProps)(UpdateForm);\n\nconst WrappedUpdateForm = Form.create({\n name: \"listings_update_form_in_modal\"\n})(ConnectedUpdateForm);\n\nexport default withTranslation('common')(WrappedUpdateForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Alert,\n DatePicker,\n Form,\n Modal,\n} from 'antd';\n\nimport moment from 'moment';\nimport { withTranslation } from 'react-i18next';\n\nimport {\n ListingTypeOptions,\n} from '@constants/models/Listing';\nimport * as ArrayUtils from '@utils/array';\n\nconst RESET_STATE = (state = {}) => {\n return {\n ...state,\n };\n}\n\nclass CloseListingForm extends React.Component {\n static propTypes = {\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n confirmLoading: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n }\n\n renderForm() {\n const { listing } = this.props;\n const { getFieldDecorator } = this.props.form;\n const formItemLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 }\n };\n\n return (\n
\n \n { listing.ownership.name }\n \n \n { listing.ownership.address }\n \n \n { this.props.t(ListingTypeOptions[listing.listing_type].ttextKey) }\n \n \n { listing.name }\n \n \n {getFieldDecorator(\"closed_at\", {\n initialValue: listing.closed_at ? moment(listing.closed_at) : null,\n })(\n {\n // Can not select days before today and today\n return current > moment().endOf('day');\n }}\n />\n )}\n \n \n )\n }\n\n render() {\n const { listing } = this.props;\n if (!listing) {\n return null;\n }\n return (\n \n \n { this.renderForm() }\n \n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {};\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n };\n}\n\nconst ConnectedCloseListingForm = connect(mapStateToProps, mapDispatchToProps)(CloseListingForm);\n\nconst WrappedCloseListingForm = Form.create({\n name: \"listings_close_form_in_modal\"\n})(ConnectedCloseListingForm);\n\nexport default withTranslation('common')(WrappedCloseListingForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Button,\n message,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as ListingsActions from '@actions/listings';\n\nimport { ListingStatusOptions } from '@constants/models/Listing';\nimport ListingsList from '@components/Listings/List';\nimport FilterForm from '@components/Listings/FilterForm';\n// import BroadcastForm from '@components/Listings/BroadcastForm';\nimport WhatsappBroadcastForm from '@components/Listings/WhatsappBroadcastForm';\nimport CreateForm from '@components/Listings/CreateForm';\nimport UpdateForm from '@components/Listings/UpdateForm';\nimport CloseListingForm from '@components/Listings/CloseListingForm';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isCreating: false,\n isFetching: false,\n itemsById: {},\n errorCreating: null,\n errorFetching: null,\n\n // modal\n selectedItemId: null,\n broadcastModalVisible: false,\n updateModalVisible: false,\n closeListingModalVisible: false,\n createModalVisible: false,\n\n // search params\n filteredInfo: {\n status: ListingStatusOptions.available.value,\n },\n ...state,\n }\n}\n\nclass Listings extends React.Component {\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchListings = this.fetchListings.bind(this);\n this.onCreateSubmit = this.onCreateSubmit.bind(this);\n this.onBroadcastSubmit = this.onBroadcastSubmit.bind(this);\n this.onUpdateSubmit = this.onUpdateSubmit.bind(this);\n this.onCloseListingSubmit = this.onCloseListingSubmit.bind(this);\n this.handleFilterFormSubmit = this.handleFilterFormSubmit.bind(this);\n }\n\n componentDidMount() {\n this.fetchListings();\n }\n\n async fetchListings(params = {}) {\n this.setState({ isFetching: true });\n try {\n let responseData = await this.props.fetchListings({\n filter: this.state.filteredInfo,\n ...params,\n });\n this.setState({\n isFetching: false,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.listings),\n },\n errorFetching: null,\n })\n return responseData;\n } catch(error) {\n this.setState({\n isFetching: false,\n itemsById: {},\n errorFetching: error,\n })\n return\n }\n }\n\n handleFilterFormSubmit(filteredInfo) {\n this.setState({\n filteredInfo,\n }, this.fetchListings);\n }\n\n async onCreateSubmit() {\n const { form } = this.createFormRef.props;\n try {\n let values = await form.validateFields();\n const ownershipId = this.props.ownershipId ? this.props.ownershipId : values[\"ownership_id\"];\n if (!ownershipId) {\n return\n }\n this.setState({ isCreating: true });\n let responseData = await this.props.createListing(ownershipId, values);\n const newListing = responseData.listing;\n this.setState({\n isCreating: false,\n createModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [newListing.id]: newListing,\n },\n });\n message.success(this.props.t(\"Listings.messages.CreateListing.Success\"));\n return\n } catch(error) {\n this.setState({\n isCreating: false,\n errorCreating: error,\n });\n return\n }\n }\n\n getSelectedListing() {\n return this.state.selectedItemId ? this.state.itemsById[this.state.selectedItemId] : null;\n }\n\n async onBroadcastSubmit(selectedPropertyAgentIds, remarksOption) {\n if (selectedPropertyAgentIds.length === 0) {\n return\n }\n const { form } = this.broadcastFormRef.props;\n let selectedListing = this.getSelectedListing();\n if (!selectedListing) {\n return\n }\n try {\n let values = await form.validateFields();\n values = {\n property_agent_ids: selectedPropertyAgentIds,\n remarks_option: remarksOption,\n }\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedListing.id]: {\n ...selectedListing,\n isBroadcasting: true,\n },\n },\n });\n let responseData = await this.props.broadcastListing(selectedListing.id, values);\n const updatedListing = responseData.listing;\n this.setState({\n selectedItemId: null,\n broadcastModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedListing.id]: updatedListing,\n },\n });\n message.success(this.props.t(\"Listings.messages.BroadcastListing.Success\"));\n return\n } catch(error) {\n selectedListing = this.getSelectedListing();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedListing.id]: {\n ...selectedListing,\n isBroadcasting: false,\n errorBroadcasting: error,\n },\n },\n })\n message.error(this.props.t(\"Listings.messages.BroadcastListing.Fail\"));\n return\n }\n }\n\n async onUpdateSubmit() {\n const { form } = this.updateFormRef.props;\n let selectedListing = this.getSelectedListing();\n if (!selectedListing) {\n return\n }\n try {\n let values = await form.validateFields();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedListing.id]: {\n ...selectedListing,\n isUpdating: true,\n },\n },\n });\n let responseData = await this.props.updateListing(selectedListing.id, values);\n const updatedListing = responseData.listing;\n this.setState({\n selectedItemId: null,\n updateModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedListing.id]: updatedListing,\n },\n });\n message.success(this.props.t(\"Listings.messages.UpdateListing.Success\"));\n return\n } catch(error) {\n selectedListing = this.getSelectedListing();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedListing.id]: {\n ...selectedListing,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n message.error(this.props.t(\"Listings.messages.UpdateListing.Fail\"));\n return\n }\n }\n\n async onCloseListingSubmit() {\n const { form } = this.closeListingFormRef.props;\n let selectedListing = this.getSelectedListing();\n if (!selectedListing) {\n return\n }\n try {\n let values = await form.validateFields();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedListing.id]: {\n ...selectedListing,\n isUpdating: true,\n },\n },\n });\n let responseData = await this.props.closeListing(selectedListing.id, values);\n const updatedListing = responseData.listing;\n this.setState({\n selectedItemId: null,\n closeListingModalVisible: false,\n itemsById: {\n ...this.state.itemsById,\n [updatedListing.id]: updatedListing,\n },\n });\n message.success(this.props.t(\"Listings.messages.CloseListing.Success\"));\n return\n } catch(error) {\n selectedListing = this.getSelectedListing();\n this.setState({\n itemsById: {\n ...this.state.itemsById,\n [selectedListing.id]: {\n ...selectedListing,\n isUpdating: false,\n errorUpdating: error,\n },\n },\n })\n message.error(this.props.t(\"Listings.messages.CloseListing.Fail\"));\n return\n }\n }\n\n saveBroadcastFormRef = formRef => {\n this.broadcastFormRef = formRef;\n }\n\n saveCreateFormRef = formRef => {\n this.createFormRef = formRef;\n }\n\n saveUpdateFormRef = formRef => {\n this.updateFormRef = formRef;\n }\n\n saveCloseListingFormRef = formRef => {\n this.closeListingFormRef = formRef;\n }\n\n render() {\n const selectedListing = this.getSelectedListing();\n return (\n
\n this.setState({ selectedItemId: null, broadcastModalVisible: false }) }\n onOk={ this.onBroadcastSubmit }\n confirmLoading={ selectedListing && selectedListing.isBroadcasting }\n />\n this.setState({ createModalVisible: false })}\n onOk={ this.onCreateSubmit }\n confirmLoading={ this.state.isCreating }\n />\n this.setState({ selectedItemId: null, updateModalVisible: false }) }\n onOk={ this.onUpdateSubmit }\n confirmLoading={ selectedListing && selectedListing.isUpdating }\n />\n this.setState({ selectedItemId: null, closeListingModalVisible: false }) }\n onOk={ this.onCloseListingSubmit }\n confirmLoading={ selectedListing && selectedListing.isUpdating }\n />\n \n this.setState({ createModalVisible: true })}\n >\n { this.props.t(\"Listings.actions.CreateListing\") }\n \n {\n this.setState({\n createModalVisible: false,\n selectedItemId: record.id,\n broadcastModalVisible: true,\n })\n }}\n onClickUpdate={ (record) => {\n this.setState({\n selectedItemId: record.id,\n updateModalVisible: true,\n })\n }}\n onClickCloseListing={ (record) => {\n this.setState({\n selectedItemId: record.id,\n closeListingModalVisible: true,\n })\n }}\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchListings: (params = {}) => {\n return dispatch(ListingsActions.fetchListings(params))\n },\n createListing: (ownershipId, params = {}) => {\n const { images, available_date, ...rest } = params;\n return dispatch(ListingsActions.createListing(ownershipId, {\n ...rest,\n available_date: available_date ? available_date.format('YYYY-MM-DD') : null,\n 'images[]': images,\n }));\n },\n broadcastListing: (listingId, params = {}) => {\n return dispatch(ListingsActions.broadcastListing(listingId, params));\n },\n updateListing: (listingId, params = {}) => {\n const { images, available_date, ...rest } = params;\n return dispatch(ListingsActions.updateListing(listingId, {\n ...rest,\n available_date: available_date ? available_date.format('YYYY-MM-DD') : null,\n 'images[]': images,\n }));\n },\n closeListing: (listingId, params = {}) => {\n const { closed_at, ...rest } = params;\n return dispatch(ListingsActions.closeListing(listingId, {\n ...rest,\n closed_at: closed_at ? closed_at.format('YYYY-MM-DD') : null,\n }));\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Listings));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport '@components/LayoutStyle.scss';\nimport Listings from '@components/Listings';\n\nclass ListingsRoot extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n return (\n
\n \n
\n )\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ListingsRoot);\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const fetchRepairsData = (params = {}) => {\n return Api.get(\n 'market_data/repairs_data',\n ActionTypes.FETCH_REPAIRS_DATA,\n params,\n )\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n Col,\n Form,\n Row,\n Select,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/FilterForm.scss';\n\nclass FilterForm extends React.Component {\n static propTypes = {\n filteredInfo: PropTypes.shape({\n }).isRequired,\n loading: PropTypes.bool,\n onSubmit: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n loading: false,\n onSubmit: (filteredInfo) => {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n filteredInfo: { ...this.props.filteredInfo },\n };\n this.onChangeFilter = this.onChangeFilter.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.filteredInfo !== this.props.filteredInfo) {\n this.setState({\n filteredInfo: this.props.filteredInfo,\n });\n }\n }\n\n isDirty() {\n const keys = Object.keys(this.state.filteredInfo);\n return keys.some((key) => this.props.filteredInfo[key] !== this.state.filteredInfo[key]);\n }\n\n onChangeFilter(key, value) {\n this.setState({\n filteredInfo: {\n ...this.state.filteredInfo,\n [key]: value,\n }\n });\n }\n\n onSubmit() {\n this.props.onSubmit(this.state.filteredInfo);\n }\n\n getFormItems() {\n const items = [{\n label: this.props.t(\"RepairsData.Tags\"),\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n this.onChangeFilter('selectedRepairsDataTags', values) }\n >\n {\n Object.values(this.props.options).map((tagOption) => (\n \n { tagOption.name }\n \n ))\n }\n \n ),\n }, {\n label: null,\n shouldRender: true,\n span: 8,\n renderChildren: () => (\n \n { this.props.t(\"actions.Search\")}\n \n ),\n }];\n return items.filter(({ shouldRender }) => { return shouldRender }).map((item, index) => {\n return (\n \n \n { item.renderChildren() }\n \n \n )\n });\n }\n\n render() {\n return (\n
\n
\n \n { this.getFormItems() }\n \n \n
\n )\n }\n}\n\nexport default withTranslation('common')(FilterForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Table,\n Tag,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\nimport numeral from 'numeral';\n\nimport * as ArrayUtils from '@utils/array';\nimport * as MarketDataActions from '@actions/marketData';\nimport FilterForm from './FilterForm';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isFetching: false,\n itemsById: {},\n errorFetching: null,\n\n // search params\n filteredInfo: {\n selectedRepairsDataTags: [],\n },\n\n ...state,\n };\n}\n\nclass RepairsData extends React.Component {\n static propTypes = {\n ownershipId: PropTypes.number,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.fetchRepairsData = this.fetchRepairsData.bind(this);\n this.handleFilterFormSubmit = this.handleFilterFormSubmit.bind(this);\n }\n\n componentDidMount() {\n this.fetchRepairsData();\n }\n\n handleFilterFormSubmit(filteredInfo) {\n this.setState({\n filteredInfo,\n }, this.fetchRepairsData)\n }\n\n getFilterParams() {\n const { filteredInfo } = this.state;\n return {\n filter: {\n ...filteredInfo,\n },\n }\n }\n\n async fetchRepairsData(params = {}) {\n this.setState({ isFetching: true })\n try {\n let responseData = await this.props.fetchRepairsData({\n ...params,\n ...this.getFilterParams(),\n });\n this.setState({\n isFetching: false,\n errorFetching: null,\n itemsById: {\n ...ArrayUtils.arrayToObject(responseData.repairs_data_items),\n },\n });\n return responseData;\n } catch (error) {\n this.setState({\n isFetching: false,\n errorFetching: error,\n itemsById: {},\n });\n return\n }\n }\n\n render() {\n const columns = [\n {\n title: \"Description\",\n dataIndex: \"description\",\n }, {\n title: \"Amount\",\n dataIndex: \"amount\",\n render: (amount) => numeral(amount).format('($0,0)'),\n }, {\n title: \"Tags\",\n dataIndex: \"repairs_data_tags\",\n render: (repairs_data_tags) => {\n return (\n \n {\n repairs_data_tags.map((tag) => (\n \n { tag.name }\n \n ))\n }\n \n )\n },\n }\n ]\n return (\n
\n \n record.id.toString() }\n columns={ columns }\n dataSource={ Object.values(this.state.itemsById) }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n RepairsDataTagOptions: state.constantsReducer.repairsDataTagsById,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n fetchRepairsData: (params = {}) => {\n return dispatch(MarketDataActions.fetchRepairsData(params))\n },\n };\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(RepairsData));\n","import React from 'react';\n\nimport '@components/LayoutStyle.scss';\nimport RepairsData from '@components/RepairsData';\n\nexport default class RepairsDataMainView extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
\n \n
\n )\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Button,\n Form,\n Icon,\n Input,\n Modal,\n Upload,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nconst RESET_STATE = (state = {}) => {\n return {\n fileList: [],\n ...state,\n }\n}\n\nclass UserProfileEditForm extends React.Component {\n static propTypes = {\n // form: PropTypes\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n me: PropTypes.shape({\n first_name: PropTypes.string,\n last_name: PropTypes.string,\n phone_number: PropTypes.string,\n email: PropTypes.string,\n }).isRequired,\n }\n\n static defaultProps = {\n visible: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onCancel = this.onCancel.bind(this);\n this.onOk = this.onOk.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n }\n\n normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n return e && e.fileList;\n }\n\n onCancel() {\n this.props.onCancel();\n }\n\n async onOk() {\n const { fileList } = this.state;\n this.props.form.setFieldsValue({\n avatar: (fileList.length > 0) ? fileList[0] : null,\n })\n let isFormValid = await this.props.onOk();\n if (isFormValid && isFormValid.response) {\n this.setState({\n fileList: [],\n });\n }\n }\n\n render() {\n // TODO: check out https://ant.design/components/upload/ \"Avatar\" section\n const { visible, confirmLoading, form } = this.props;\n const { getFieldDecorator } = form;\n const me = this.props.me;\n\n const formItemLayout = {\n labelCol: { span: 12 },\n wrapperCol: { span: 12 },\n };\n\n return (\n \n { this.props.children }\n
\n \n {getFieldDecorator('first_name', {\n initialValue: me.first_name,\n rules: [\n { required: true, message: `${ this.props.t(\"Profile.messages.Form.PleaseInputFirstName\") }!` },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('last_name', {\n initialValue: me.last_name,\n rules: [\n { required: true, message: `${ this.props.t(\"Profile.messages.Form.PleaseInputLastName\") }!` },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('phone_number', {\n initialValue: me.phone_number,\n rules: [\n { required: true, message: `${ this.props.t(\"Profile.messages.Form.PleaseInputYourPhoneNumber\") }!` },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('email', {\n initialValue: me.email,\n validate: [{\n trigger: 'onChange',\n rules: [\n { required: true, message: `${ this.props.t(\"Profile.messages.Form.PleaseInputYourEmail\") }!` },\n ],\n }, {\n trigger: 'onBlur',\n rules: [\n { type: 'email', message: `${ this.props.t(\"Profile.messages.Form.PleaseInputValidEmail\") }!` },\n ],\n }],\n })(\n \n )}\n \n \n
\n {getFieldDecorator('avatar', {\n getValueFromEvent: this.normFile,\n })(\n {\n this.setState({ fileList: [] });\n }\n }\n beforeUpload={\n (avatar) => {\n this.setState({\n fileList: [avatar],\n });\n return false;\n }\n }\n fileList={ this.state.fileList }\n name=\"avatar\"\n >\n \n \n )}\n
\n \n \n \n );\n }\n}\n\nconst WrappedUserProfileEditForm = Form.create({ name: 'user_profile_edit_form_in_modal' })(UserProfileEditForm);\n\nexport default withTranslation('common')(WrappedUserProfileEditForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Form,\n Input,\n Modal,\n} from 'antd';\nimport { withTranslation } from 'react-i18next';\n\nconst RESET_STATE = (state = {}) => {\n return {\n confirmDirty: false,\n\n ...state,\n }\n}\n\nclass UserPasswordUpdateForm extends React.Component {\n static propTypes = {\n // form: PropTypes\n visible: PropTypes.bool,\n confirmLoading: PropTypes.bool,\n onCancel: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n }\n\n static defaultProps = {\n visible: false,\n }\n\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.visible && !this.props.visible) {\n this.props.form.resetFields();\n this.setState(RESET_STATE());\n return\n }\n }\n\n handleConfirmBlur = e => {\n const { value } = e.target;\n this.setState({ confirmDirty: this.state.confirmDirty || !!value });\n };\n\n compareToFirstPassword = (rule, value, callback) => {\n const { form } = this.props;\n if (value && value !== form.getFieldValue('password')) {\n callback('Two passwords that you enter is inconsistent!');\n } else {\n callback();\n }\n };\n\n validateToNextPassword = (rule, value, callback) => {\n const { form } = this.props;\n if (value && this.state.confirmDirty) {\n form.validateFields(['password_confirmation'], { force: true });\n }\n callback();\n };\n\n render() {\n const { getFieldDecorator } = this.props.form;\n\n const formItemLayout = {\n labelCol: { span: 12 },\n wrapperCol: { span: 12 },\n };\n\n return (\n \n
\n \n {getFieldDecorator('current_password', {\n rules: [\n { required: true, message: `${ this.props.t(\"Profile.messages.Form.PleaseInputCurrentPassword\") }!` },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('password', {\n validateTrigger: \"onBlur\",\n rules: [\n { required: true, message: `${ this.props.t(\"Profile.messages.Form.PleaseInputNewPassword\") }!` },\n { min: 6, message: `${ this.props.t(\"Profile.messages.Form.PasswordShouldBeGreater\") }!` },\n { validator: this.validateToNextPassword },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('password_confirmation', {\n rules: [\n { required: true, message: `${ this.props.t(\"Profile.messages.Form.PleaseConfirmYourNewPassword\") }!` },\n { validator: this.compareToFirstPassword },\n ],\n })()}\n \n \n \n );\n }\n}\n\nconst WrappedUserPasswordUpdateForm = Form.create({ name: 'user_password_update_form_in_modal' })(UserPasswordUpdateForm);\n\nexport default withTranslation('common')(WrappedUserPasswordUpdateForm);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport {\n Avatar,\n Button,\n Col,\n Descriptions,\n Icon,\n message,\n Row,\n Select,\n Switch,\n Tooltip,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport '@components/LayoutStyle.scss';\nimport * as FormatterUtils from '@utils/formatter';;\nimport * as UserActions from '@actions/users';\nimport UserProfileEditForm from '@components/Profile/UserProfileEditForm';\nimport UserPasswordUpdateForm from '@components/Profile/UserPasswordUpdateForm';\n\nconst RESET_STATE = (state = {}) => {\n return {\n // data\n isUpdating: false,\n\n // modals\n isEditing: false,\n\n ...state,\n }\n}\n\nclass Profile extends React.Component {\n constructor(props) {\n super(props);\n this.state = RESET_STATE();\n this.onUpdateUserProfile = this.onUpdateUserProfile.bind(this);\n this.onUpdateUserPassword = this.onUpdateUserPassword.bind(this);\n }\n\n saveUpdateFormRef = formRef => {\n this.updateFormRef = formRef;\n }\n\n saveUpdatePasswordFormRef = formRef => {\n this.updatePasswordFormRef = formRef;\n }\n\n async onUpdateUserProfile() {\n const { form } = this.updateFormRef.props;\n try {\n let values = await form.validateFields();\n this.setState({ isUpdating: true });\n let responseData = await this.props.updateUserProfile(values);\n this.setState({ isUpdating: false, isEditing: false });\n message.success(this.props.t(\"Profile.messages.UpdateProfile.Success\"));\n return responseData;\n } catch (error) {\n this.setState({ isUpdating: false });\n message.error(this.props.t(\"Profile.messages.UpdateProfile.Fail\"));\n return null;\n }\n }\n\n async onUpdateUserPassword() {\n const { form } = this.updatePasswordFormRef.props;\n let values;\n try {\n values = await form.validateFields();\n } catch (error) {\n return\n }\n\n try {\n this.setState({ isUpdatingPassword: true });\n let responseData = await this.props.updateUserPassword(values);\n this.setState({ isUpdatingPassword: false, isEditingPassword: false });\n message.success(this.props.t(\"Profile.messages.UpdatePassword.Success\"));\n return responseData;\n } catch (error) {\n this.setState({ isUpdatingPassword: false });\n message.error(error.response.data.message);\n return null;\n }\n }\n\n renderProfileInfo(me) {\n const details = [{\n label: this.props.t(\"Profile.Settings.FirstName\"),\n render: () => me.first_name,\n }, {\n label: this.props.t(\"Profile.Settings.LastName\"),\n render: () => me.last_name,\n }, {\n label: this.props.t(\"Profile.Settings.Phone\"),\n render: () => FormatterUtils.phoneNumber(me.phone_number),\n }, {\n label: this.props.t(\"Profile.Settings.Email\"),\n render: () => me.email,\n }]\n return (\n \n {\n details.map((item, index) => (\n { item.label } }\n span={ 3 }\n >\n { item.render() }\n \n ))\n }\n \n )\n }\n\n render() {\n const { me } = this.props;\n\n return (\n
\n \n \n \n \n \n \n \n \n

{ me.display_name }

\n this.setState({ isEditing: true }) }\n >\n { this.props.t(\"Profile.actions.UpdateProfile\") }\n \n this.setState({ isEditing: false }) }\n onOk={ () => this.onUpdateUserProfile() }\n me={ me }\n />\n
\n { this.renderProfileInfo(me) }\n \n
\n \n \n

{ this.props.t(\"Profile.Preferences\") }

\n \n \n \n \n \n \n \n \n \n \n \n
\n

\n { this.props.t(\"Profile.SubscribeReports\") }\n

\n \n \n \n
\n this.props.updateUserProfile({\n subscribe_weekly_reports: `${!me.subscribe_weekly_reports}`,\n })}\n checkedChildren={}\n unCheckedChildren={}\n checked={ me.subscribe_weekly_reports || false }\n />\n
\n

\n { this.props.t(\"Profile.Language\") }\n

\n \n \n \n
\n {\n try {\n let me = await this.props.updateUserProfile({\n language_preference: value,\n })\n this.props.i18n.changeLanguage(value);\n } catch (error) {\n message.error(this.props.t(\"Profile.messages.UpdateLanguagePreference.Fail\"));\n }\n }}\n >\n English\n 中文繁體\n \n
\n
\n

{ this.props.t(\"Profile.OtherActions\") }

\n this.setState({ isEditingPassword: true }) }>\n { this.props.t(\"Profile.actions.UpdatePassword\") }\n \n this.setState({ isEditingPassword: false }) }\n onOk={ this.onUpdateUserPassword }\n />\n
\n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n me: state.usersReducer.me,\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n updateUserProfile: (values) => {\n return dispatch(UserActions.updateUserProfile(values));\n },\n updateUserPassword: (values) => {\n return dispatch(UserActions.updateUserPassword(values));\n },\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(Profile));\n","export const phoneNumber = (phoneNumber) => {\n if (!phoneNumber) {\n return \"\";\n }\n if (phoneNumber.startsWith(\"+852\") && phoneNumber.length == 12) {\n return `${phoneNumber.substring(0, 4)} ${phoneNumber.substring(4, 8)} ${phoneNumber.substring(8, 12)}`;\n }\n return phoneNumber;\n}\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const updateUserProfile = (values = {}) => {\n return Api.postUpload(\n 'users/update_profile',\n ActionTypes.UPDATE_USER_PROFILE,\n values,\n )\n}\n\nexport const updateUserPassword = (values = {}) => {\n return Api.post(\n 'users/update_password',\n ActionTypes.UPDATE_USER_PASSWORD,\n values,\n )\n}\n","import React from 'react';\n\nexport default class NotFound extends React.Component {\n render() {\n return

404

\n }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport {\n Link,\n Redirect,\n Route,\n Switch,\n} from 'react-router-dom';\nimport {\n Icon,\n Layout,\n Menu,\n} from 'antd';\n\nimport { withTranslation } from 'react-i18next';\n\nimport Mixpanel from '@utils/mixpanel';\nimport { LayoutStyle, ThemeColors } from '@constants/Theme'\n\nimport Portfolio from './Portfolio';\nimport Properties from './Properties';\nimport Documents from './Documents';\nimport Tasks from './Tasks';\nimport Owners from './Owners';\nimport Listings from './Listings';\nimport RepairsData from './RepairsData';\nimport Profile from './Profile';\nimport NotFound from './NotFound';\n\nconst routes = [\n {\n key: \"/portfolio\",\n style: { marginTop: 0 },\n icon: \"pie-chart\",\n ttext: \"Portfolio.Title\",\n component: Portfolio,\n },{\n key: \"/properties\",\n icon: \"home\",\n ttext: \"Properties.Title\",\n component: Properties,\n },{\n key: \"/documents\",\n icon: \"file\",\n ttext: \"Documents.Title\",\n component: Documents,\n },{\n key: \"/tasks\",\n icon: \"file-done\",\n ttext: \"Tasks.Title\",\n component: Tasks,\n },{\n key: \"/owners\",\n icon: \"team\",\n ttext: \"Owners.Title\",\n component: Owners,\n },{\n key: \"/listings\",\n icon: \"block\",\n ttext: \"Listings.Title\",\n component: Listings,\n },{\n key: \"/repairs_data\",\n icon: \"tool\",\n ttext: \"RepairsData.Title\",\n component: RepairsData,\n },{\n key: \"/profile\",\n icon: \"user\",\n ttext: \"Profile.Title\",\n component: Profile,\n }\n];\n\nclass AuthenticatedRouter extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoggingOut: false,\n collapsed: false,\n };\n this.onLogout = this.onLogout.bind(this);\n }\n\n onLogout() {\n this.setState({ isLoggingOut: true })\n }\n\n onCollapse = (collapsed) => {\n this.setState({ collapsed });\n }\n\n renderSider() {\n const { location } = this.props;\n const selected = routes.filter((route) => {\n return location.pathname.includes(route.key);\n }).map((route) => { return route.key });\n\n return (\n \n \n \n { this.props.orgName }\n \n \n \n {\n routes.map((route) => (\n \n Mixpanel.track('Sider Menu click', { name: route.key }) }\n >\n \n { this.props.t(route.ttext) }\n \n \n ))\n }\n \n \n \n \n { this.props.t(\"sider.SignOut\") }\n \n \n \n \n \n )\n }\n\n render() {\n return (\n \n { this.renderSider() }\n \n \n \n {\n routes.map((route, index) => (\n \n ))\n }\n \n \n \n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n orgName: state.organizationReducer.name,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n }\n}\n\nexport default withTranslation('common')(connect(mapStateToProps, mapDispatchToProps)(AuthenticatedRouter));\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport {\n Button,\n Col,\n Checkbox,\n Form,\n Icon,\n Input,\n Row,\n} from 'antd';\n\nimport {\n ThemeColors,\n} from '@constants/Theme';\n\nconst csrfToken = document.querySelector(\"meta[name='csrf-token']\").getAttribute('content');\n\nclass LoginForm extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n email: '',\n password: '',\n remember_me: true,\n }\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onChangeText = this.onChangeText.bind(this);\n this.onChangeCheckbox = this.onChangeCheckbox.bind(this);\n }\n\n handleSubmit(e) {\n this.setState({\n isLoading: true,\n });\n this.props.form.validateFields((err, values) => {\n if (err) {\n e.preventDefault();\n this.setState({\n isLoading: false,\n });\n return;\n }\n });\n }\n\n onChangeText(key, e) {\n this.setState({\n [key]: e.target.value,\n })\n }\n\n onChangeCheckbox(key, e) {\n this.setState({\n [key]: e.target.checked,\n });\n }\n\n render() {\n const { getFieldDecorator } = this.props.form;\n const redirect = `/users/sign_in?${ this.props.locationState ? `redirect=${this.props.locationState.from.pathname}` : '' }`;\n return (\n
\n \n \n \n \n\n \n {getFieldDecorator('email', {\n validate: [{\n trigger: 'onChange',\n rules: [\n { required: true, message: 'Please input your email!' },\n ],\n }, {\n trigger: 'onBlur',\n rules: [\n { type: 'email', message: 'Please input a valid email!' },\n ],\n }],\n })(\n }\n size=\"large\"\n placeholder=\"Email\"\n onChange={ (e) => this.onChangeText('email', e) }\n />\n )}\n \n \n {getFieldDecorator('password', {\n rules: [{ required: true, message: 'Please input your password!' }],\n })(\n }\n size=\"large\"\n type=\"password\"\n placeholder=\"Password\"\n onChange={ (e) => this.onChangeText('password', e) }\n />\n )}\n \n \n {getFieldDecorator('remember', {\n valuePropName: 'checked',\n initialValue: this.state.remember_me,\n })(\n this.onChangeCheckbox('remember_me', e) }\n >\n Remember me\n \n )}\n \n \n \n \n \n Sign up\n Forgot password\n \n \n );\n }\n}\n\nconst WrappedLoginForm = Form.create({ name: 'login' })(LoginForm);\n\nexport default class LoginScreen extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const locationState = this.props.location.state\n return (\n \n \n

Log in

\n \n \n \n )\n }\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport {\n Button,\n Checkbox,\n Col,\n Form,\n Icon,\n Input,\n Row,\n Select,\n Tooltip,\n} from 'antd';\n\nimport {\n ThemeColors,\n} from '@constants/Theme';\n\nconst csrfToken = document.querySelector(\"meta[name='csrf-token']\").getAttribute('content');\n\nclass SignUpForm extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n confirmDirty: false,\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onChangeText = this.onChangeText.bind(this);\n this.handleConfirmBlur = this.handleConfirmBlur.bind(this);\n this.checkBoxIsTrue = this.checkBoxIsTrue.bind(this);\n this.compareToFirstPassword = this.compareToFirstPassword.bind(this);\n this.validateToNextPassword = this.validateToNextPassword.bind(this);\n }\n\n handleSubmit(e) {\n this.setState({\n isLoading: true,\n });\n this.props.form.validateFields((err, values) => {\n if (err) {\n e.preventDefault();\n this.setState({\n isLoading: false,\n });\n return;\n }\n });\n }\n\n onChangeText(key, e) {\n this.setState({\n [key]: e.target.value,\n })\n }\n\n handleConfirmBlur(e) {\n const value = e.target.value;\n this.setState({ confirmDirty: this.state.confirmDirty || !!value });\n }\n\n compareToFirstPassword(rule, value, callback) {\n const form = this.props.form;\n if (value && value !== form.getFieldValue('password')) {\n callback('Two passwords do not match!');\n } else {\n callback();\n }\n }\n\n validateToNextPassword(rule, value, callback) {\n const form = this.props.form;\n if (value && this.state.confirmDirty) {\n form.validateFields(['password_confirmation'], { force: true });\n }\n callback();\n }\n\n checkBoxIsTrue(rule, value, callback) {\n if (!value) {\n callback('Please agree to the agreement');\n } else {\n callback();\n }\n }\n\n render() {\n const { getFieldDecorator } = this.props.form;\n\n const formItemLayout = {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 8 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 16 },\n },\n };\n const tailFormItemLayout = {\n wrapperCol: {\n xs: {\n span: 24,\n offset: 0,\n },\n sm: {\n span: 16,\n offset: 8,\n },\n },\n };\n\n return (\n
\n \n \n \n \n \n \n \n\n \n {getFieldDecorator('email', {\n validate: [{\n trigger: 'onChange',\n rules: [\n { required: true, message: 'Please input your email!' },\n ],\n }, {\n trigger: 'onBlur',\n rules: [\n { type: 'email', message: 'Please input a valid email!' },\n ],\n }],\n })(\n this.onChangeText('email', e) }\n />\n )}\n \n \n {getFieldDecorator('password', {\n validate: [{\n trigger: 'onChange',\n rules: [\n { required: true, message: 'Please input your password!' },\n ],\n }, {\n trigger: 'onBlur',\n rules: [\n { min: 6, message: 'Password must be at least 6 characters!' },\n { validator: this.validateToNextPassword },\n ],\n }],\n })(\n this.onChangeText('password', e) }\n />\n )}\n \n \n {getFieldDecorator('password_confirmation', {\n validate: [{\n trigger: 'onChange',\n rules: [\n { required: true, message: 'Please confirm your password!', },\n ],\n }, {\n trigger: 'onBlur',\n rules: [\n { validator: this.compareToFirstPassword },\n ],\n }],\n })(\n this.onChangeText('password_confirmation', e) }\n />\n )}\n \n \n {getFieldDecorator('first_name', {\n rules: [{\n required: true, message: 'Please input your first name.',\n }],\n })(\n this.onChangeText('first_name', e) }\n />\n )}\n \n \n {getFieldDecorator('last_name', {\n rules: [{\n required: true, message: 'Please input your last name.',\n }],\n })(\n this.onChangeText('last_name', e) }\n />\n )}\n \n \n {getFieldDecorator('phone_number', {\n rules: [{ required: true, message: 'Please input your phone number!' }],\n })(\n this.onChangeText('phone_number', e) }\n />\n )}\n \n \n {getFieldDecorator('agreement', {\n valuePropName: 'checked',\n rules: [\n { validator: this.checkBoxIsTrue },\n ],\n })(\n I have read the agreement\n )}\n \n \n \n \n \n Login\n Forgot password\n \n \n );\n }\n}\n\nconst WrappedSignUpForm = Form.create({ name: 'sign_up' })(SignUpForm);\n\nexport default class SignUpScreen extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n \n \n

Sign up

\n \n \n \n )\n }\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport {\n Alert,\n Button,\n Col,\n Checkbox,\n Form,\n Icon,\n Input,\n Row,\n} from 'antd';\n\nimport {\n ThemeColors,\n} from '@constants/Theme';\n\nimport * as AuthActions from '@actions/authentications';\n\nclass ForgotPasswordForm extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n successMessage: null,\n }\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n async handleSubmit() {\n const { form } = this.props;\n try {\n let values = await form.validateFields();\n this.setState({ isLoading: true });\n let responseData = await this.props.forgotPassword(values);\n this.setState({\n isLoading: false,\n successMessage: responseData.message,\n });\n this.props.form.resetFields();\n return responseData;\n } catch (error) {\n this.setState({\n isLoading: false,\n error,\n });\n return null;\n }\n }\n\n render() {\n const { getFieldDecorator } = this.props.form;\n return (\n
\n {\n this.state.successMessage && (\n \n )\n }\n \n {getFieldDecorator('email', {\n validate: [{\n trigger: 'onChange',\n rules: [\n { required: true, message: 'Please input your email!' },\n ],\n }, {\n trigger: 'onBlur',\n rules: [\n { type: 'email', message: 'Please input a valid email!' },\n ],\n }],\n })(\n }\n size=\"large\"\n placeholder=\"Email\"\n />\n )}\n \n \n \n \n \n Log in\n Sign up\n \n \n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n forgotPassword: (values) => {\n return dispatch(AuthActions.forgotPassword(values))\n },\n }\n}\n\nconst WrappedForgotPasswordForm = Form.create({ name: 'forgot_password' })(\n connect(mapStateToProps, mapDispatchToProps)(ForgotPasswordForm)\n);\n\nexport default class ForgotPasswordScreen extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n \n \n

Forgot Password

\n \n \n \n )\n }\n}\n","import * as Api from '@actions/api';\nimport * as ActionTypes from '@actions/types';\n\nexport const forgotPassword = (values) => {\n return Api.post(\n 'authentications/forgot_password',\n ActionTypes.AUTH_FORGOT_PASSWORD,\n {\n email: values.email,\n },\n )\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport {\n Link,\n Redirect,\n Route,\n Switch,\n} from 'react-router-dom';\nimport {\n Button,\n Layout,\n} from 'antd';\n\nimport { LayoutStyle } from '@constants/Theme'\nimport LoginForm from '@views/Authentication/LoginForm';\nimport SignUpForm from '@views/Authentication/SignUpForm';\nimport ForgotPasswordForm from '@views/Authentication/ForgotPasswordForm';\nimport NotFound from './NotFound';\n\nconst routes = [\n {\n key: \"/login\",\n component: LoginForm,\n },{\n key: \"/sign_up\",\n component: SignUpForm,\n },{\n key: \"/forgot_password\",\n component: ForgotPasswordForm,\n },\n];\n\nclass UnauthenticatedRouter extends React.Component {\n constructor(props) {\n super(props);\n }\n\n renderSider() {\n return (\n \n \n \n { this.props.orgName }\n \n \n \n )\n }\n\n render() {\n return (\n \n { this.renderSider() }\n \n \n \n {\n routes.map((route, index) => (\n \n ))\n }\n \n \n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n orgName: state.organizationReducer.name,\n };\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UnauthenticatedRouter);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Route, withRouter } from 'react-router-dom';\n\nimport AuthenticatedRouter from '@views/AuthenticatedRouter';\nimport UnauthenticatedRouter from '@views/UnauthenticatedRouter';\n\nclass BaseLayout extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const Component = (this.props.is_authenticated) ? AuthenticatedRouter : UnauthenticatedRouter;\n return \n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n is_authenticated: state.usersReducer.is_authenticated,\n }\n}\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n }\n}\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(BaseLayout));\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { BrowserRouter as Router } from 'react-router-dom'\nimport { Provider } from 'react-redux'\nimport { createStore, applyMiddleware, compose } from 'redux';\nimport thunkMiddleware from 'redux-thunk'\nimport PropTypes from 'prop-types'\n\nimport * as Sentry from '@sentry/browser';\n\nimport Mixpanel from '@utils/mixpanel';\nimport * as ArrayUtils from '@utils/array';\n\nimport appReducer from '@reducers'\nimport { initialState as accountEntriesInitialState } from '@reducers/accountEntries';\nimport { initialState as documentsInitialState } from '@reducers/documents';\nimport { initialState as listingsInitialState } from '@reducers/listings';\nimport { initialState as constantsInitialState } from '@reducers/constants';\nimport { initialState as organizationInitialState } from '@reducers/organization';\nimport BaseLayout from '@views'\n\nimport {\n I18nextProvider,\n withTranslation,\n} from \"react-i18next\";\nimport i18next from \"i18next\";\nimport { ConfigProvider } from \"antd\";\n\nimport common_zh from \"@translations/zh/common.json\";\nimport common_en from \"@translations/en/common.json\";\n\nimport en_US from \"antd/es/locale/en_US\";\nimport zh_TW from \"antd/es/locale/zh_TW\";\n\ni18next.init({\n interpolation: { escapeValue: false }, // React already does escaping\n lng: 'en', // language to use\n resources: {\n en: {\n common: common_en // 'common' is our custom namespace\n },\n zh: {\n common: common_zh\n },\n },\n});\n\nconst localeMap = {\n en: en_US,\n zh: zh_TW,\n}\n\nif (process.env.NODE_ENV === 'production') {\n Sentry.init({\n dsn: \"https://08c4d47a23734f029e03716b24e50cde@o130536.ingest.sentry.io/1550379\",\n });\n}\n\nclass AntdApp extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const locale = localeMap[this.props.i18n.language] || en_US;\n return (\n \n \n \n \n \n )\n }\n}\n\nconst AntdAppWrapper = withTranslation('common')(AntdApp);\n\nclass App extends React.Component {\n static propTypes = {\n store: PropTypes.object.isRequired,\n }\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { store } = this.props;\n return (\n \n \n \n \n \n )\n }\n}\n\n/* eslint-disable no-underscore-dangle */\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\nconst storeCreator = (initialState = {}) => {\n return createStore(\n appReducer,\n initialState,\n composeEnhancers(\n applyMiddleware(\n thunkMiddleware,\n ),\n )\n );\n}\n/* eslint-enable */\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const serverData = JSON.parse(document.getElementById('server_data').getAttribute('data'));\n const usersReducerData = serverData['auth_data'];\n const me = usersReducerData.me;\n\n const initReducerState = {\n usersReducer: {\n ...usersReducerData,\n },\n accountEntriesReducer: {\n ...accountEntriesInitialState,\n AccountEntryTypeOptions: serverData['AccountEntryTypeOptions'] || {},\n AccountEntryStatusOptions: serverData['AccountEntryStatusOptions'] || {},\n },\n documentsReducer: {\n ...documentsInitialState,\n DocumentTypeOptions: ArrayUtils.arrayToObject(serverData['DocumentTypeOptions'], (obj) => { return obj.value }) || {},\n },\n listingsReducer: {\n ...listingsInitialState,\n ListingEventTypeOptions: serverData['ListingEventTypeOptions'] || {},\n },\n constantsReducer: {\n ...constantsInitialState,\n neighbourhoodsById: {\n ...ArrayUtils.arrayToObject(serverData['NeighbourhoodOptions'] || []),\n },\n repairsDataTagsById: {\n ...ArrayUtils.arrayToObject(serverData['RepairsDataTagOptions'] || []),\n },\n },\n organizationReducer: {\n ...organizationInitialState,\n ...(serverData['OrganizationDetails'] || { id: 1, name: \"MyPropty\" }),\n },\n }\n\n if (usersReducerData.is_authenticated) {\n Mixpanel.identify(me.id);\n Mixpanel.people.set({\n $email: me.email,\n $first_name: me.first_name,\n $last_name: me.last_name,\n });\n }\n\n if (me.language_preference !== \"en\") {\n i18next.changeLanguage(me.language_preference);\n }\n\n ReactDOM.render(\n ,\n document.body.appendChild(document.createElement('div')),\n )\n})\n"],"sourceRoot":""}