{"version":3,"sources":["store/ServiceModules/actionTypes.js","services/config.js","services/loginService.js","services/ModulesServices.js","store/ServiceModules/actions.js","store/ServiceModules/reducer.js","App.js","components/HeaderNavigation/DropDownMenu.js","store/auth/actionTypes.js","services/BookingBugServices/LoginService.js","store/BookingAuth/actionTypes.js","services/EngageBookingBugServices/LoginService.js","store/auth/actions.js","store/BookingAuth/actions.js","components/HeaderNavigation/HeaderNavigation.js","components/FooterNavigation/FooterNavigation.js","components/Input/Input.js","components/Button/Button.js","components/LoginForm/LoginForm.js","store/auth/reducer.js","store/ConciergeSetting/actionTypes.js","services/ConciergeSettingService.js","store/ConciergeSetting/actions.js","store/ConciergeSetting/reducer.js","containers/LoginScreen.js","containers/concierge/AuthArea.js","containers/Logout.js","components/ModuleMenu/ModuleMenu.js","components/ModuleMenu/GridMenu.js","components/FeatureArea/FeatureArea.js","store/Parcels/actionTypes.js","services/ParcelServices.js","store/Parcels/reducer.js","helpers/configHelper.js","store/Parcels/actions.js","store/Residents/actionTypes.js","services/ResidentServices.js","store/AddressLookUp/actionTypes.js","store/AddressLookUp/reducer.js","store/Residents/reducer.js","store/Residents/actions.js","components/DetailList/DetailList.js","components/CompactCard/CompactCard.js","components/TenantAutoSuggest/ResidentAddrAutoSuggest.js","containers/concierge/parcel/CheckInOutScreen.js","containers/concierge/residents/ResidentScreen.js","store/Keys/actionTypes.js","services/KeyServices.js","store/Keys/actions.js","store/Keys/reducer.js","services/AddressLookUpServices.js","store/AddressLookUp/actions.js","components/DetailList/DetailList5Column.js","containers/concierge/keys/KeysScreen.js","store/Meetings/actionTypes.js","store/Meetings/reducer.js","store/Visitors/actionTypes.js","services/VisitorServices.js","services/MeetingServices.js","services/PegeEvent.js","store/Visitors/reducer.js","store/Visitors/actions.js","store/Meetings/actions.js","components/VisitorAutoSuggest/VisitorAutoSuggestComponent.js","components/visitorLogCard/visitorSearchResult.js","components/ResponseMessage/ResponseMessage.js","components/VisitorsExpected/VisitorsExpected.js","components/PastVisitors/PastVisitors.js","containers/concierge/visitors/CheckinVisitorScreen.js","components/ServiceList/ServiceListMulti.js","components/CalendarCustomComponents/CustomDayWrapper.js","components/ToggleButton/ToggleButton.js","components/DotNav/DotNav.js","store/Tenants/actionTypes.js","services/TenantServices.js","store/Tenants/reducer.js","store/Tenants/actions.js","components/TenantAutoSuggest/TenantCompanyAutoSuggest.js","store/Resources/actionTypes.js","store/Resources/reducer.js","services/BookingBugServices/ResourceService.js","services/BookingBugServices/ServicesService.js","services/EngageBookingBugServices/EngageBookingServices.js","services/BookingBugServices/CheckoutService.js","store/Checkout/actionTypes.js","store/PageEvents/actionTypes.js","store/PageEvents/reducer.js","store/ResourcesMonthly/actionTypes.js","store/ResourcesMonthly/reducer.js","store/Resources/actions.js","store/ResourcesMonthly/actions.js","store/Checkout/reducer.js","store/Checkout/actions.js","components/ariaModals/EventModal.js","components/CalendarCustomComponents/CustomEventWrapper.js","components/PaymentGateway/WorldPayComponent.js","utility/cryptoUtility.js","components/BookingCalendar/BookingCalendarCustom.js","store/PageEvents/actions.js","containers/concierge/Rooms/RoomsScreen.js","components/ServiceList/ServiceListPager.js","components/BookingCalendar/BookingCalendarCustomMonthly.js","containers/concierge/Bookings/MonthScreen.js","containers/concierge/Bookings/DailyScreen.js","containers/concierge/Bookings/BookingsScreen.js","helpers/stringHelper.js","components/ParcelAutoSuggest/ParcelAutoSuggest.js","components/Parcel/ParcelResultComponent.js","components/CustomMessage/CustomMessages.js","components/Parcel/ParcelsExpected.js","containers/concierge/parcel/ParcelScreen.js","containers/LandingScreen.js","components/Button/ButtonGroup.js","containers/concierge/parcel/CheckInScreen.js","components/AddrLookUpAutoSuggest/AddrLookUpAutoSuggest.js","containers/concierge/residents/ResidentCreatePage.js","containers/concierge/residents/ResidentProfilePage.js","components/ProfileCard/ProfileCard.js","containers/concierge/residents/ResidentArchivePage.js","containers/concierge/residents/ResidentEditProfilePage.js","containers/ForgotPassword.js","containers/PasswordRecoverySent.js","containers/PassRecoveryNewPassword.js","containers/TermsAndConditions.js","components/TenantAutoSuggest/ResidentVisitorAutoSuggest.js","containers/concierge/keys/keysTestScreen.js","containers/concierge/keys/KeyAssignScreen.js","containers/concierge/keys/KeyProfileScreen.js","containers/concierge/keys/KeyReturnScreen.js","components/TenantAutoSuggest/TenantAddrTypeAutoSuggest.js","components/TenantAutoSuggest/TenantCompanyTypeAutoSuggest.js","components/Input/InputNew.js","images/delete-btn/bin.png","images/delete-bin-white/bin-white.png","components/DetailList/DetailListWithOverlay.js","containers/concierge/visitors/Vistor.js","components/DetailList/DetailListNew.js","images/special-instructions/special-instructions.png","containers/concierge/visitors/VisitorBooking.js","containers/concierge/visitors/VisitorManagement.js","containers/concierge/visitors/VisitorProfile.js","containers/concierge/visitors/ManagementScreen.js","store/PymentGateway/actionTypes.js","store/PymentGateway/reducer.js","store/PymentGateway/actions.js","store/BookingAuth/reducer.js","images/header-image.png","containers/concierge/PaymentScreens/Payments.js","components/TenantAutoSuggest/MemberAutoSuggest.js","components/Input/TextAreaInput.js","components/ariaModals/ParcelCancelModal.js","containers/concierge/parcel/RegisterScreen.js","components/Input/CustomInput.js","components/MultiSelectComponent/MultiSelectComponent.js","containers/concierge/parcel/ParcelManagementScreen.js","components/Parcel/ParcelsListComponent.js","components/ariaModals/ParcelModal.js","containers/concierge/parcel/ParcelExpectedScreen.js","components/ariaModals/ParcelStatusModal.js","containers/concierge/parcel/ParcelInfoScreen.js","containers/static/ErrorScreen401.js","containers/static/ErrorScreen404.js","containers/static/ErrorScreen403.js","containers/static/ErrorScreen500.js","routes.js","index.js","utility/validators.js","config/index.js","history.js","config/config.js","config/config.prod.js"],"names":["MODULES_LOADED_SUCCESSFULLY","PORTAL_SETTINGS_LOAD_SUCCESSFULLY","apiDomain","Config","bookingBugApi","bookingbugApi","bookingBugPwd","bookingbugPwd","browserHistory","createBrowserHistory","visitorStatuses","checkedIn","checkedOut","dueForArrival","notified","CONCIERGE_API","BOOKING_BUG_API","LOGIN_ENDPOINT","BOOKINGBUG_ADMIN_ENDPOINT","CONCIERGE_AUTH_ENDPOINT","PARCELS_ENDPOINT","MEMBERS_ENDPOINT","SERVICE_MODULES_ENDPOINT","ADDRESS_LOOKUP_ENDPOINT","KEYS_ENDPOINT","VISITORS_ENDPOINT","ENGAGE_BOOKINGBUG_API","MEETINGS_ENDPOINT","CONCIERGE_SETTINGS_ENDPOINT","PARCELS_STATUS_CODES_SUCCESS_ENDPOINT","PARCEL_RETURN_REASON_CODES_ENDPOINT","PARCEL_RECORD_ENDPOINT","ALL_PARCELS_ENDPOINT","PARCEL_LOCATIONS_ENDPOINT","PARCEL_RETURN_ENDPOINT","PARCEL_ADD_ENDPOINT","PARCEL_CHECKOUT_ENDPOINT","NOTIFY_PARCEL_CHECKED_IN","NOTIFY_PARCEL_COLLECTED","NOTIFY_PARCELS_CHECKED_IN","NOTIFY_PARCELS_COLLECTED","PARCEL_EXPECTEDARRIVEDBYDATE","concat","PARCEL_REGISTEREXPECTEDLIST","PARCEL_SETTINGS","PARCELS_BY_STATUS","UPDATE_PARCEL","PARCEL_NOTIFY","TENANTS_ENDPOINT","RESIDENTS_ENDPOINT","SEARCH_RESIDENTS_ENDPOINT","CREATE_RESIDENT_ENDPOINT","UPDATE_MEMBER_ENDPOINT","UPDATEAPPROVAL_MEMBER_ENDPOINT","SEND_REGISTERATION_ACTIVATION_ENDPOINT","RESIDENTS_GROUPS_ENDPOINT","ADDRESSES_ENDPOINT","REQUEST_PASSWORD_RESET_ENDPOINT","PASSWORD_RESET_ENDPOINT","VERIFY_REQUEST_RESET_ENDPOINT","UPDATE_MEETING_RECORD_ENDPOINT","MEETING_RECORD_ENDPOINT","CHECKIN_VISITOR_ENPOINT","CHECKOUT_VISITOR_ENPOINT","CREATE_NEW_MEETING_ENDPOINT","CREATE_NEW_MEETINGS_ENDPOINT","RESOURCE_BOOKING_NOTIFY_ENDPOINT","NOTIFY_CHECKING_ENPOINT","RESOURCE_BOOKING_CANCELLED_NOTIFY_ENDPOINT","RESOURCE_BOOKING_UPDATED_NOTIFY_ENDPOINT","NOTIFY_TENANT_RESOURCE_BOOKED","NOTIFY_HOUSE_MANAGER_RESOURCE_BOOKED","NOTIFY_RAISECHARGE_FINANCE_MANAGER_RESOURCE_BOOKED","KEYS_RECORD_ENDPOINT","KEY_STATUSES_ENDPOINT","KEYS_LOG_ENDPOINT","KEYS_LOG_BY_KEY_STATUS","KEY_LOG_BY_KEYID","RETURN_KEY_ENDPOINT","KEY_LOG_LIST_ENDPOINT","KEY_STATUS_UPDATE","NOTIFY_KEY_ASSIGNED","NOTIFY_KEY_RETURNED","SEARCH_VISITOR_ENDPOINT","SEARCH_VISITOR_BY_NAME_ENDPOINT","VISITORS_EXPECTED_ENDPOINT","VISITOR_CHECKIN_ENDPOINT","VISITOR_CHECKOUT_ENPOINT","VISITOR_CAR_REG_ENDPOINT","VISITOR_PASS_COLLECTED","GLOBAL_SEETINGS_ENDPOINT","PAYMENT_GATEWAY_SETTINGS_ENDPOINT","PAYMENT_SIGNATURE_ENDPOINT","PAYMENT_CRYPT_ENDPOINT","ENGAGE__BOOKINGBUG_LOGIN_ENDPOINT","ENGAGE_BOOKINGBUG_SERVICES_ENDPOINT","ENGAGE_BOOKINGBUG_BOOKINGS_ENDPOINT","ENGAGE_BOOKINGBUG_SERVICE_DAYDATA_ENDPOINT","ENGAGE_BOOKINGBUG_RESOURCE_DAYDATA_ENDPOINT","ENGAGE_BOOKINGBUG_RESOURCE_TIMEDATA_ENDPOINT","ENGAGE_BOOKINGBUG_RESOURCES_ENDPOINT","ENGAGE_BOOKINGBUG_BOOKING_QUESTIONS","ENGAGE_BOOKINGBUG_BOOKED_BOOKINGS_ENDPOINT","ENGAGE_BOOKINGBUG_BLOCKED_BOOKINGS_ENDPOINT","ENGAGE_BOOKINGBUG_RESOURCE_BOOKINGS_ENDPOINT","ENGAGE_BOOKINGBUG_ADD_TO_BASKET_ENDPOINT","ENGAGE_BOOKINGBUG_CHECKOUT_ENDPOINT","ENGAGE_BOOKINGBUG_UPDATE_BOOKING_RESOURCE_ENDPOINT","ENGAGE_BOOKINGBUG_CANCEL_BOOKING_ENDPOINT","ENGAGE_BOOKINGBUG_BASKET_ENDPOINT","ENGAGE_BOOKINGBUG_BLOCK_RESOURCE_ENDPOINT","ENGAGE_BOOKINGBUG_DELETE_ITEM_FROM_BASKET_ENDPOINT","errorPageRedirect","response","status","push","MODULES_ENDPOINT","PORTAL_ENPOINT","portalTypes","Residential","Commercial","APP_KEY","APP_ID","COMPANY_ID","MEETING_ROOM_SERVICE_HR_ID","BOOKING_BUG_USER_LOGIN","BOOKING_BUG_USER_PWD","BOOKING_BUG_USER_ID","EngageCryptoKey","EngageCryptoKeyIV","history","AUTH_TOKEN","TOKEN_TYPE","TOKEN_EXPIRE","LoginService","_createClass","_classCallCheck","key","value","_login","_asyncToGenerator","_regeneratorRuntime","mark","_callee","username","password","auth_url","headers","result","wrap","_context","prev","next","config","Headers","append","fetch","method","body","toString","sent","ok","Error","json","this","setToken","_","get","setTokenType","setTokenExpire","abrupt","authToken","stop","_x","_x2","apply","arguments","_requestResetPass","_callee2","resetData","url","reqHeaders","data","_context2","JSON","stringify","_x3","_verifyResetRequest","_callee3","requestData","_context3","_x4","_changePassword","_callee4","_context4","_x5","_getConciergeDetails","_callee5","requestHeader","_context5","getToken","token","localStorage","setItem","getItem","type","min","window","removeItem","replace","CONC_MODULE","ServiceModules","_getModules","authService","setServiceModules","modules","_getPortalSettings","module","loadModules","callback","length","undefined","dispatch","getState","mod","moduleServices","getServiceModules","types","parse","error","getPortalSetting","_ref2","setting","getPortalSettings","settings","t0","getPortalTypes","initialState","Immutable","statusCodes","portal","serviceModuleReducer","state","action","merge","serviceModules","loadPortalSttings","App","_Component","props","_this","_callSuper","serviceModuleActions","autobind","_inherits","prevProps","prevState","portalSettings","isUndefined","document","title","_jsx","children","Component","connect","serviceModuleSelectors","DropDownMenu","className","id","sticky","visible","map","moduleList","index","Link","to","pathname","onClick","e","menu","reset","style","cursor","LOGIN_SUCESSFUL","PASSWORD_CHANGED","EMAIL_CHANGED","LOGGED_OUT","PASSWORD_RESET_REQUEST_SENT_SUCCESS","PASWORD_REQUEST_VERIFY_SUCCESS","PASWORD_REQUEST_VERIFY_FAIL","PASSWORD_RESET_SUCCESSFULL","LOGIN_FAIL","CONCIERGE_AUTHORIZED_SUCCESSFULL","CONCIERGE_AUTHORIZED_FAIL","TOKEN_KEY","PROFILE_KEY","accountEmail","accountPassword","companyId","reqBody","email","setProfile","_getCompanyId","startsWith","encodedToken","decode","date_expires","Date","LOGIN_COMPLETED","FETCH_COMPANY_ID_COMPLETED","login","userName","_ref","loginData","_loginData","loginService","isLoggedIn","fetchConciergeDetails","bbAuthToken","console","log","getCompanyId","details","getConciergeDetails","detail","logout","_ref3","bbugLoginService","moduleService","clearServiceModule","_x6","setEmail","_ref4","_x7","_x8","setPassword","_ref7","_callee7","_context7","_x13","_x14","ResetPasswordEmail","success","_ref8","_callee8","resetPass","_context8","isforgotpassword","requestResetPass","validRequest","_x15","_x16","StickyStatus","HeaderNavigation","isMenuOn","lastscrollTop","isStuck","hambugerStatus","addEventListener","handleScroll","removeEventListener","handleScrol","preventDefault","setState","path","composedPath","page_window_offsetY","pageYOffset","page_document_scrollTop","scrollingElement","scrollTop","currenScrollTop","val","setModule","authActions","_this2","_this$props","logo","header_style","backgroundImage","backgroundSize","_jsxs","handleReturnHome","handleClick","handleLogout","handleReset","withRouter","FooterNavigation","InputComponent","render","icon_change","autoBind","parselyToReactSelect","parsley","refs","select","setAttribute","removeAttribute","handleChange","disabled","_this3","label","name","placeHolder","options","maxLength","handleTimeChange","defaultValue","dateValue","defaultSelect","handleDateChange","defaultMin","autoSuggestProps","uneditable","htmlFor","icon","valueBind","Select","ref","placeholder","searchable","clearable","find","option","onChange","label_","target","onClose","onOpen","TimePicker","_objectSpread","showSecond","disabledMinutes","disabledHours","allowEmpty","hideDisabledOptions","DatePicker","selected","minDate","dateFormat","moment","blurBind","onBlur","spellCheck","onPaste","onKeyPress","handleKeyPress","autoComplete","Button","text","size","otherClass","load","isDisabled","fontSize","LoginForm","processing","loginFormValidation","loginFormUsed","addValidation","$","validate","classHandler","el","$element","closest","fromSubmit","force","valid","isValid","loginFormValid","handleSubmit","buttonText","mode","onSubmit","actionSuccess","handleEmailChange","handlePasswordChange","passwordReset","loginSuccess","concierge","reducer","getIsLoggedIn","auth","getEmail","getPassword","emailVerifyStatus","getLoginSuccess","CONCIERGE_SETTINGS_LOAD_SUCCESS","ConciergSettingService","_getGlobalSettings","_getpaymentGatewaySettings","statusText","_getpaymentSignature","amount","currency","cartid","_getPaymentSignatureCrypt","gatewayType","getGlobalSetting","settingServices","getGlobalSettings","settingsReducer","loadGlobalSetting","LoginScreen","loginSuccessfull","settingActions","getModules","moduleActions","success_","mainBackgroundImage","color","overlayColor","handleLogin","authSelectors","settingSelector","timeOutInMinutes","userTimeOutInMinutes","AuthArea","idleTimer","event","body_style","IdleTimer","timeout","onActive","handleOnActive","onIdle","handleOnIdle","onAction","handleOnAction","debounce","ownProps","moduleSelectors","Logout","sub_menu_styles","menu_container","display","alignItems","justifyContent","flexDirection","marginTop","width","height","menu_item","textAlign","border","flex","non_landed_item","backgroundColor","ModuleMenu","isHover","portalType","item","i","_toConsumableArray","onMouseOver","onMouseOut","assign","hoveredStyle","imageOverlayTextColour","selectedModule","handleModuleMenuSelected","GridMenu","PropTypes","require","FeatureArea","moduleImage","l","toUpperCase","currentModule","o","imageUrl","activeModule","scrollTo","pageHeader","areaTitle","areaTagline","imageBG","landing","activeMenu","bgStyle","backgroundRepeat","backgroundPosition","borderBottomColor","src","alt","toLowerCase","propType","string","bool","PARCEL_RECORD_LOADED_SUCCESS","PARCELS_LOADED_SUCCESS","PARCELS_LOADED_SUCCESS_MANAGE","PARCEL_LOCATIONS_LOADED_SUCCESS","PARCEL_STATUS_REASONS_LOADED_SUCCESS","PARCEL_ADD_TO_CHECKIN_QUEUE","PARCEL_REMOVE_FROM_CHECKIN_QUEUE","PARCEL_EDIT_IN_CHECKIN_QUEUE","PARCELS_ADDED_SUCCESS","PARCELS_STATUS_CODES_SUCCESS","PARCEL_RETURN_REASON_CODES_LOAD_SUCCESS","PARCEL_SET_CHECKOUT_QUEUE","PARCELS_CHECKOUT_SUCCESS","PARCEL_CHECKOUT_SUCCESS","NOTIFY_PARCELS_CHECKED_IN_SUCCESS","NOTIFY_PARCELS_COLLECTED_SUCCESS","PARCELS_EXPECTED_ARRIVED_BY_DATE_LOADED_SUCCESSFULL","REGISTER_EXPECTED_PARCEL_LIST_SUCCESSFULL","PARCEL_SETTINGS_LOAD_SUCCESSFULL","PARCEL_DUE_LOADED_SUCCESSFULLY","PARCEL_EXPECTED_LOAD_SUCCESSFULLY","PARCEL_RECORD_UPDATED_SUCCESSFULLY","ParcelServices","_getParcel","_getLocations","_getStatusReasons","_getParcels","_getStatusCodes","_getReturnReasonCodes","_callee6","_context6","_addParcels","parcelData","_returnParcel","statusReasonId","_checkoutParcels","_callee9","_context9","_checkoutParcel","_callee10","_context10","_notifyCheckin","_callee11","_context11","_notifyCollected","_callee12","_context12","_notifyCheckinParcels","_callee13","parcelsData","_context13","_notifyCollectedParcels","_callee14","_context14","_x9","_getExpectedArrivedByDateInterval","_callee15","dateFrom","dateTo","_context15","_x10","_x11","_registerExpectedParcelsList","_callee16","parcelList","_context16","_x12","_getParcelSettings","_callee17","_context17","_getPacrcelsByStatus","_callee18","_context18","_updateParcelRecord","_callee19","record","_context19","_notifyByStatus","_callee20","_context20","parcel","parcels","ManageParcels","parcelDue","parcelsExpected","newParcelQueue","checkOutQueue","registeredParcels","registeredParcelsQueue","locations","returnStatusReasons","returnReasonCodes","parcelsCheckedIn","checkinNotified","checkoutNotified","parcelSettings","parcelReducer","reasons","filter","Object","addParcelResponse","statusCodesResponse","reasonCodesResponse","list","filteredParcelList","list_","addCheckoutResponse","parcel_","data_","getStatusCodes","getReturnResonCodes","getParcels","getManageParcels","getCheckedInParcels","getCheckedOutParcels","statusObject","code","statusId","getDueParcels","getReturnedParcels","getCheckInQueue","getParcel","getParcelLocations","getParcelSettings","getParcelDue","getParcelExpected","getRegisteredParcels","PortalTypes","VisitorStatuses","ParcelStatuses","CheckedIn","Due","Collected","Returned","Expected","Discarded","ParcelReasons","Damaged","ForwardedToNewAddress","RecipientMovedOut","Uncollected","Other","ServicesUnit","getAllLocations","getLocations","_ref6","getReturnReasonCodes","notifyCheckinParcels","_ref14","_x27","_x28","notifyParcels","_ref16","notifyByStatus","_x31","_x32","getParcelsByStatus","_ref18","getPacrcelsByStatus","_x35","_x36","getParcelSettigs","_ref19","_x37","_x38","updateParcel","_ref24","_callee24","_context24","updateParcelRecord","_x47","_x48","RESIDENTS_LOADED_SUCCESS","RESIDENTS_GROUPS_LOADED_SUCCESS","SEARCH_RESIDENTS_LOAD_SUCCESS","CREATE_RESIDENT_SUCCESS","CREATE_RESIDENT_FAIL","UPDATE_RESIDENT_SUCCESS","UPDATE_RESIDENT_FAIL","UPDATE_RESIDENT_APPROVAL_SUCCESS","UPDATE_RESIDENT_APPROVAL_FAIL","SEND_REGISTRATION_ACTIVATION_SUCCESS","ResidentService","_GetResidents","_GetConciergeGroups","_SearchResidentsBy","_CreateNewResident","_UpdateResident","_UpdateApprovalResident","_sendRegisterationActivation","ADDRESSES_LOAD_SUCCESS","addresses","addressReducer","getAddresses","resident","residents","residentsSearchQueue","newResident","residentCreated","residentUpdated","residentGroups","registerNotificationSent","residentRecord","residentsResponse","msg","residentApprovalUpdated","getResidents","GetConciergeGroups","getSearchedResidents","getNewResident","residentCreatedStatus","residentUpdatedStatus","residentUpdatedApprovalStatus","residentError","getAllResidents","ResidentServices","GetResidents","groups","createNewResident","_ref5","addressList","currentAddress","residentExist","newResi","residentSelector","addressLookupSelector","addr","addressId","res","firstName","lastName","mobileNumber","phone","addressLine1","addr1FlatNumber","addressLine2","addr2BuildingName","postCode","addressLookupId","conciergeGroup","groupName","CreateNewResident","updateResident","UpdateResident","DetailList","listsConfig","headings","fields","iconClass","link","s","a","split","n","k","listType","pageClass","headingsAlone","row","rowIndex","accessObjectByString","actionClick","colSpan","emptyMessage","CompactCard","highlighted","startHighlighted","nextProps","passInstanceToList","z","Array","join","str","substr","tenant","booking","highlight","locationType","location","locationName","formatString","resourceName","dateArrived","format","startDate","barcode","timeFrom","timeTo","ResidentAddrAutoSuggest","onSuggestionsFetchRequested","suggestions","getSuggestions","onSuggestionsClearRequested","newValue","handleTenantChange","setTimeout","autosuggest","input","checkMatch","defaultState","otherText","residentActions","emptyResponse","memberId","address","selectedTenantFromDefault","defaultTenantId","isNumber","startTenant","Number","handleTenantSelected","suggestion","obj","nameSearch","addrSearch","includes","defaultText","ten","setValue","stateChanges","onSelected","currentValue","matchedTenant","parts","trim","clearableIfValid","_this$state","inputProps","inputClick","Autosuggest","getSuggestionValue","onSuggestionSelected","renderSuggestion","theme","container","suggestionsList","renderInputComponent","iconProp","labelText","handlePasteChange","allSuggestions","forwardRef","CheckInOutScreen","searchFormUsed","maxReturnsToShow","maxLastCheckedInToShow","maxLastCheckedOutToShow","searchFormValidation","parcelsAction","destroy","field","_defineProperty","addParcelFormValid","searchValue","matchingParcel","matchingTenant","isEmpty","b","msA","valueOf","msB","fullName","displayedCheckedInParcels","checkedInParcels","asMutable","deep","sort","sortByLatest","slice","addFullName","displayedCheckedOutParcels","checkedOutParcels","displayDueParcels","dueParcels","dataVal","returnFormUsed","parcelsSelector","returnedParcels","searchOption","ResidentScreen","search","residentColor","searchType","validSearch","firstname","lastname","SearchResidentsBy","residentId","searchResidentsQueue","searchQueue","handleSearchOption","fname","lname","DataList","handleViewClick","residentSelectors","KEYS_LOG_LOADED_SUCCESS","KEYS_STATUSES_LOADED_SUCCESS","KEYS_LOADED_SUCCESS","ASSIGN_KEY_SUCCESS","ASSIGN_KEY_FAIL","RETURN_KEY_SUCCESS","OVERDUE_KEY_LOG_LOAD_SUCCESS","KEY_LOG_LIST_LOAD_SUCCESS","SET_KEY_SUCCESS","KEY_STATUS_UPDATE_SUCCESS","KEY_STATUS_UPDATE_FAIL","RESET_ACTION_STATUS","NOTIFY_KEY_ASSIGNED_SUCCESS","KeyServices","_getKeys","_getKeyStatuses","_logKey","_getKeylogKeyStatus","keyData","_getDueKeyLogByKeyId","_returnKey","_getKyLogsbyKeyIds","_getKeyLogList","lastrecord","keyid","_updateKey","_notifyKeyassigned","_notifyKeyReturned","getAllKeys","keys","getKeys","getKeyStatuses","statuses","assignKey","logKey","getKeyLogByKeyStatus","getKeylogKeyStatus","keysLog","loadKeyLogList","lastRecord","keyId","loglist","getKeyLogList","keyActionStatus","overdueKeyLog","logList","selectedKey","notificationSent","keyReducer","logs","loadAllKeys","loadkeyStatuses","loadKeysLog","assignedKey","getKeyActionStatus","getOverdueKeyLog","getNotificationSentsuccess","AddressLookUpServices","_getAddresses","loadAddresses","DetailList5Column","Address","KeyCode","KeysScreen","keyList","keyLogList","currentKeyList","expectedReturnDate","recip","tenantId","keysActions","addressLookupActions","overdue","loadOverdueKeyLog","getKyLogsbyKeyIds","addressLookup","addr_data","key_collection","addr3StreetNumber","address_list","keyObj","keyAddrVal","lookupAddressId","formatAddress","addr4Town","key_add","startCase","camelCase","Resident","residentskeyLog","x","recipientType","visitorskeyLog","visitors","visitorkeyList","residentkeyList","handleKeyLogList","selectKey","keyStatus","addresslookupId","selectedDate","assignKeyValidation","assignKeyFormValid","assignKeyFormUsed","formReset","handleAssign","selectedTenant","indexOf","_this$state2","expectedDateReturn","selectedVisitor","memberType","visitorId","keyStyle","_this$props2","overduekeysLog","keyVal","recipient","newOverdueList","keyItem","keydata","isNil","visitor","surname","d","handleKeyPressSearch","DataListMulti","add1","add2","add3","add4","keySelectors","addressLookupSelectors","MEETING_RECORD_LOADED_SUCCESS","MEETING_RECORD_LOADED_FAIL","NEW_MEETING_CREATED_SUCCESS","NEW_MEETING_CREATED_FAIL","NEW_METTING_ADD_TO_QUEUE","NEW_METTING_REMOVE_FROM_QUEUE","MEETINGS_LOADED_SCCESS","MEETINGS_LOADED_FAIL","UPDATE_MEETING_SUCCESS","MEETING_UPDATED","FILTER_CHECKED_IN","FILTER_CHECKED_OUT","ADD_TO_FILTER_CHECKED_IN","ADD_TO_FILTER_CHECKED_OUT","MEETING_SELECTED","MEETINGS_FILTER_LOADED_SUCCESSFULLY","ADD_TO_CHECKED_IN_SELECT_QUEUE","REMOVE_FROM_CHECKED_IN_SELECT_QUEUE","ADD_TO_CHECKED_OUT_SELECT_QUEUE","REMOVE_FROM_CHECKED_OUT_SELECT_QUEUE","ADD_TO_UNCOLLECTED_SELECT_QUEUE","REMOVE_FROM_UNCOLLECTED_SELECT_QUEUE","ADD_TO_COLLECTED_SELECT_QUEUE","REMOVE_FROM_COLLECTED_SELECT_QUEUE","MEETINGS_LOG_FETCHED","SET_MEETINGS_QUEUE","SPECIAL_INSTRUCTIONS_APPENDED_SUCCESS","SEND_CHECKIN_NOTIFICATION_SUCCESS","CLEAR_MEETINGS","meeting","meetings","newMeetingQueue","filterCheckedIn","filterCheckedOut","checkedInSelectQueue","checkedOutSelectQueue","uncollectedSelectQueue","collectedSelectQueue","meetingsLog","logType","notifyCheckin","specialInstruction","meetingsFilter","meetingReducer","meetingQueue","tenantName","tenantCompany","companyName","dueDate","endDate","notifyResponse","getMeeting","getMeetingsQueue","getMeetings","getSpecialInstruction","getMeetingsFilter","VISITOR_RECORD_LOADED_SUCCESS","VISITOR_SELECTED","VISITOR_MEETING_LOADED_SUCCESS","VISITOR_SELF_CHECKIN_SUCCESS","UPDATE_CHECKOUT_STATUS_SUCCESS","VISITORS_RECORDS_LOADED_SUCCESS","VISITOR_RECORD_LOADED_FAIL","VISITOR_SEARCH_DATA","VISITOR_EVENT","CANCEL_MEETING_LOAD","VISITOR_CAR_REG_UPDATED","VISITOR_CAR_REG_SET","VISITOR_SPECIAL_INSTRUCTIONS","VISITOR_SEARCH_STORED_SUCCESSFULLY","VISITOR_SEARCH_FROM_REDIRECT","VISITOR_CHECKEDIN_RESET_SUCCESSFULLY","VisitorServices","_getVisitorsExpectedByDate","date","_searchVisitorByEmail","_searchVisitorByName","_searchByVisitor","_getAllVisitors","_checkinVisitorById","_checkOutVisitorById","_addCarRegNumber","_searchVisitorById","MeetingServices","_getMeetingById","_getMeetingsById","_updateVisitorStatus","_getTenants","_checkinVisitor","_checkOutVisitor","_createMeeting","_createMeetings","_getMeetingsByDate","_updateMeetingRecord","_resourceBookingNotification","_passCollectedById","collected","_args12","passCollected","_notifiCheckedIn","_args13","_resourceBookingCancelledNotification","_resourceBookingUpdatedNotification","_tenantResourceBookingNotification","_houseManagerResourceBookingNotification","_financeManagerResourceBookingNotification","_x17","PAGE_EVENT","PageEvent","visitorCheckedIn","visitorSearchInput","visitorCheckedOut","visitorEvent","carReg","specialInstructions","searchResult","searchFromRedirect","visitorReducer","getVisitors","getCarReg","getSearchResult","getSearchFromRedirect","searchVisitor","element","visitorData","meetingsId","part","searchByVisitor","selectVisitor","Id","meetingId","getMeetingsById","checkinVisitor","_ref9","_x18","getVisitorSearchInput","_ref10","_x19","_x20","cancelMeetingLoad","addParkingDetails","addCarRegNumber","getVisitorById","searchVisitorById","getVisitorStauses","storeVisitorSearch","search_data","visitorSearchRedirected","resetVisitorCheckedIn","getMeetingById","createNewMeetings","createMeetings","addMeetingToQueue","meetingList","removeMeetingFromQueue","setMettingsQueue","meetingsList","clearMeetings","clear","getMeetingsByDate","getFilterMeetingsByDate","notifyCheckedIn","notifiCheckedIn","VisitorAutoSuggestComponent","inputVal","dataMatch","matchfound","fieldManualCleared","fieldCleared","handleVisitorChange","handleInputValue","selectedVisitorFromDefault","defaultVisitorId","startVisitor","handleVisitorSelected","nextState","inputParts","match","suggestionValue","suggestionIndex","sectionIndex","vis","matchedVisitor","focusInputOnSuggestionClick","handleSuggestionSelected","listDefault","handleClear","configHelper","VisitorSearchResult","btnStatus","btnText","more","extra","moreBtnText","checked","checkInTimeText","gotoProfile","company","timeExpected","tenantAddress","statusLabel","hasMargin","textcolor","handleNo","handleView","view","sender","deliveryDate","parcelDetail","ResponseMessage","VisitorsExpected","dayPeriodName","numberVisitors","timePeriod","linkValue","handleLinkSelected","moduleColor","href","PastVisitors","expectedVisitors","checkedinVisitors","notshowvisitors","textDataColor","TimeLogHelper","CheckinVisitorScreen","visitorName","visitorCompany","rows","formSubmitted","now","visitorActions","found","morningLog","noonLog","afterNoonLog","isPastVisitorEnable","addVisitorValidation","visitorsAction","meetingActions","meetingsActions","residentAction","selectedMeeting","selectedMeetingUpdated","visitorMeetingOptions","visMeetingsUpdated","newObj","setMeetingLog","visitorFound","addVisitorFormValid","addVisitorFormUsed","selecetMeetingId","activeElement","blur","Key","start","getUTCHours","getUTCMinutes","mins","toDate","_this4","m","tempLog","sortBy","searchMeetings","cleanMeetingsList","expectedVisitorsMorning","expectedVisitorsNoon","expectedVisitorsAfterNoon","checkinVisitorsMorning","checkinVisitorsNoon","checkinVisitorsAfterNoon","VisitorAutoSuggest","handleSelectedVisitor","orderBy","dateExpected","handleSumbit","getAddress","utc","today","formatStatusString","checkedOutDate","GotoProfile","handleBookVisitorsClick","Datepicker","locale","fixedHeight","NavigateToVisitorManagement","meetingSelector","ListItem","active","newState","eventIDs","event_ids","event_id","ServiceListMulti","_React$Component","showList","selectedOption","eventName","eventId","showDownList","handleItemClick","bind","CurruntContext","showUparrow","showSpinner","evntid","handleSelectionChange","services","eventid","_handleItemClick","_event_ids","node","onMouseUp","toggleList","renderValue","React","CustomDayWrapper","ToggleButton","DotNav","items","currentItem","tag","TENANT_LOADED_SUCCESS","TENANTS_LOADED_SUCCESS","TENANT_SELECTED","TenantServices","tenants","tenantReducer","getAllTenants","getSelectedTenant","getTenants","tenantSelectors","TenantCompanyAutoSuggest","tenantActions","companySearch","bookingBugMemberId","address1","tenantSelector","SERVICES_FETCHED","RESOURCES_QUERY","SERVICES_SLOTS_FETCHED","SLOTS_FETCHED","SERVICE_DETAIL_FETCHED","SLOT_SELECTED","SLOT_DESELECTED","ADD_TO_BASKET_QUEUE","REMOVE_FROM_BASKET_QUEUE","SERVICE_ID_SELECTED","EVENT_DATE_SELECTED","SELECTED_SERVICE_SLOT","CLEAR_BASKET_QUEUE","RESOURCE_BOOKINGS_FETCHED","ADD_TO_BOOKINGS_SELECTION_QUEUE","CANCEL_BOOKINGS_REASONS","BOOKINGS_CANCELED_SUCCESS","BLOCK_SLOT_SELECTED","BLOCK_SLOT_DESELECTED","RESOURCE_TIME_AVAILABLE_FETCHED","UPDATE_BOOKING_SUCCESS","BOOKING_ERRORS_LOAD_SUCCESS","BOOKING_DETAIL_LOAD_SUCCESS","BOOKING_CANCELLED_NOTIFY_SUCCESS","EVENTS_SLOTS_FETCHED","BOOKED_EVENT_SLOT_IS_SELECTED","BOOKING_QUESTIONS_LOAD_SUCCESS","BOOKING_QUESTIONS_LOAD_FAIL","RESOURCE_BLOCKED_SUCCESS","RESOURCE_EVENT_SET","RESOURCE_BOOKED_SUCCESS","RESOURCE_EVENTS_CLEARED","SERVICE_UNIT_CHANGED","RESOURCE_EVENT_SELECTED","SELECTED_TENANT_SET_SUCCESS","ACTION_REDIRCECT_SUCCESS","PAYMENT_ACTION_SUCCESS","SET_BBOOKING_SUCCESS","CALENDAR_SETTINGS_SET","PROCESSING_RESOURCE_REQUEST","BASKET_QUEUE_UPDATED_SUCCESSFULLY","resources","query","servicesSlots","selectedServiceSlot","service","basketQueue","selectedSlots","serviceId","eventDate","selectedSlot","bookings","bookingsSelectionQueue","cancelReasons","bookingsCancelled","blockSlotSelected","timeAvailable","bookingUpdated","bookingErrors","selectedBookingDetail","notify","selectedEventsSlots","selectedEventResources","bookedEventSelected","bookingQuestions","resourceBlocked","bookingCreated","serviceUnit","resourceEvents","actionRedirect","paymentAction","calendarSettings","processingResourceRequest","itemQueue","slotsData","slots","slot","isAvailable","inBasket","end","price","start_min","end_min","duration","stlot","current_block","new_block","compact","selectedEventsSlot","blk_start_min","blk_end_min","slot_deselected","curr_basket","basket","blockItem","timesAvail","bookingStatus","errors","events","selected_event","temp_slot","findLast","booked","new_slots","questions","resource","unit","paymentStatus","getServices","getResourceQuery","getServicesSlots","getSelectedServiceSlot","getService","getBasketQueue","getEventId","getServiceId","getBookings","getBookingsCancelled","getBlockSlotSelected","getBookingErrors","getTimeAvailable","getSelectedBookingDetail","getBookingUpdated","getSelectedEventsSlots","getSelectedEventResources","getBookingQuestions","getResourceBlocked","getBookingCreated","getServiceUnit","getResourceEvents","getActionRedirect","getPaymentAction","getSetBooking","getCalendarSettings","getResourceProcessingStatus","getItemQueue","ResourceService","_getServices","_getResourceServices","_getBookings","start_date","end_date","_getBookingCancelReasons","_cancelBooking","reason","cancel_reason","_updateBooking","time","_updateBookingResource","_timeAvailability","_getBookingErrors","_getBookingDetails","bookingId","_getBookingQuestions","groupId","_blockResource","resourceId","_x21","ServicesService","EngageBookingServices","bbauthService","_getResources","page","perpage","_getServiceDayData","service_id","_getResourceDayData","group_id","_getBlockedBookings","resourcesIds","_getBookedBookings","_x22","_x23","_x24","_getResourceBookings","_x25","_x26","_x29","_getResourceTimeData","_x30","_x33","_x34","_x39","CheckoutService","_addToBasket","_addToBasketGroup","bookingData","_checkout","_getBasket","_removeFromBasket","itemBasketId","INITIAL_STATE","ITEM_ADDED_TO_BASKET","BASKET_LOADED_FROM_CACHE","ITEM_REMOVED_FROM_BASKET","BOOKING_COMPLETED","NOTIFICATION_SENT_SUCCESS","NOTIFICATION_SENT_FAIL","ITEM_SELECTED","CHARGE_TYPE_SET","ACTION_SUCCESS","ACTION_TYPE","ACTION_MESSAGE_SET","HM_NOTIFICATION_SENT_SUCCESS","FM_NOTIFICATION_SENT_SUCCESS","PAGE_EVENT_CHANGED","pageEventReducer","getPageEvent","MONTHLY_SERVICES_SLOTS_FETCHED","MONTHLY_RESOURCE_BOOKINGS_FETCHED","RESOURCES_FETCHED_SUCCESSFULLY","SERVICE_DAYDATA_FETCHED_SCCESSFULLY","RESOURCE_DAYDATA_FETCH_SUCCESS","monthServicesSlots","serviceDayData","resourceDayData","resourcesMonthlyReducer","dayData","resourcesMonthly","getResources","getServiceDayData","engageBookingServices","setServiceUnit","fetchServiceDetail","selectedService","resourcesSelectors","fetchServicesSlots","getResourceTimeData","fetchBookingQuestions","booking_questions","setResourceEventsSelected","dateRange","resourceIds","resourceObj","bookedBookings","blockedBookings","card","booked_taged","bookingList","slotData","meetingsSelector","checkoutService","getBasket","getDatesRange","eventData","resourceData","resource_id","getResourceBookings","serviceBooking","resource_name","blockedResourceBooking","time_step","booking_time_step","serviceSlot","slotService","daySlot","times","dteRange","datetime","getDate","setHours","getHours","getFullYear","getMonth","setMinutes","getMinutes","lastEntryId","avail","availSlot","unavailSlot","blocked","blockedDate","blockedEndDate","end_datetime","blockedDate_start_min","blockedDate_end_min","today_min","blockedAvailSlot","desc","full_describe","past","blocked_card","duration_unit","bookedDate","bookedEndDate","bookedDate_start_min","bookedDate_end_min","member","client_email","slotDetail","bookedAvailSlot","answers","answers_summary","service_name","union","client_name","setSelectedSlot","addToBasketQueue","deSelectSlot","block_item","blockSelected","updateBasketQueue","clearBasketQueue","getServiceBookings_range","bookingsList","bookings_range","booking_item","getBookingsCancelReasons","resourcesService","getBookingCancelReasons","getServiceAvailability","_ref21","_callee21","timesAvailable","resource_availability","times_avail","resource_time","_context21","timeAvailability","available","_x41","_x42","_ref25","_callee25","_context25","_x49","_x50","nofifyCancelBooking","_ref27","_callee27","resource_type","cancelation_period","date2","cancel_time_exceded","current_diff","diff_min","_context27","eventsSelector","cancellation_period","isBefore","diff","asMinutes","toFixed","parseFloat","cancelTimeExceeded","meetingServices","resourceBookingCancelledNotification","_x53","_x54","notifyEditBooking","_ref28","_callee28","booking_prev","booking_curr","prevBooking","updatedBooking","prevDate","prevDateTo","_context28","prevTimeFrom","prevTimeTo","resourceBookingUpdatedNotification","_x55","_x56","setBookingCreated","_ref30","_callee30","_context30","_x59","_x60","currentDate","setDate","emptyServicesSlots","_ref33","_callee33","empty","_context33","_x65","_x66","setActionRedirect","setPaymentAction","resourceProcessingStatus","resourcesMonthlySelectors","days","spaces","getServiceBookings","fetchResources","fetchServiceDayData","groupBy","fetchResourceDayData","getResourceDayData","resourcesTypes","bookingCompleted","bookingDetails","sendNotification","itemSelected","chargeType","financeManagerNotification","houseManagerNotification","actionStatus","actionType","actionMessage","reduce","chargetype","transType","message","checkout","getChargeType","getActionType","getActionStatus","getActionMessage","addItemToBasket","queue","member_id","units","addToBasketGroup","removeItemFromBasket","currentBasket","selectedItem","checkoutSelectors","removeFromBasket","loadBasketFromCache","setChargeType","completeCheckout","checkoutData","pageEvent","vist","block_selection","visitorDetails","temp_booking","resourceBooked","hm_notify","fm_notify","resourcesActions","pageEventSelectors","visitorSelectors","regNumber","parking","stime","etime","serviceType","resourceLink","bookedItem","selection","difference","slotsTime","tmp","meetingService","tenantResourceBookingNotification","houseManagerResourceBookingNotification","financeManagerResourceBookingNotification","t1","t2","t3","SetActionStatus","SetActionMessage","calendarViews","ModalScreenType","activeScreens","pages","TriggerTypes","BookingQuestionFieldType","EditFieldStatus","EditButtonText","PaymentOptions","ActionMessages","EventModal","switchActive","addTenantFormUsed","specialInstruction_chk","special_instructions","event_description","modalScreen","selecteSlotTimes","timeStep","selectedEventId","allow_edit","slotDataRefreshed","triggerAction","booking_action_valid","field_active","edit_status","edit_button_text","cancel_button_text","currentSetBasketSlot","activeScreen","screenItem","payment_option_selected","payment_type","bookingDataUpdated","addTenantValidation","que","special_instr_field","q","field_name","event_descr_field","event_descr_answer","question_id","descr_answer","answer","special_instruct_answer","spec_answer","errorMessage","reloadBookingQuestionsFields","handleTimeSelectionChanged","handleBlockedResource","checkoutActions","modalFormValid","checkAvailability","getWrappedInstance","resourceActions","startOf","_d","endOf","request_fail","date_","y","startDay","endDay","subtract","add","max_day_bookings","resourceMonthlyActions","slot_questions","slot_answers","other_field","check_que","isSpecialInstructionField","isEventDescriptionField","_ref23","_callee23","from_min","to_min","updated","_context23","updateBookingResource","hours","minutes","_x45","_x46","modalActionCompleted","_this5","_this$props3","selectedSlotTimes","slotAvailable","time_from","time_to","timeFrom_min","timeTo_min","range","t","totalPrice","slotUpadted","newBasketData","selectedResoucreisAvailable","_this$props4","availableCounter","eventSlots","selectedSlotDays","daySlots","_this6","step","_this7","_this8","_this$props5","answer_val","input_field_name","_this$props6","selected_booking","quest","que_field","que_answer","_this9","_this$props7","start_time","end_time","tmin","smin","emin","resourceSlots","checkSlots","checktimeMinValid","slotsEmpty","_ref32","_callee32","unit_type","_context32","resourceMonthlySelectors","blockResource","_x63","_x64","_this$props8","cancellationPeriod","_this10","cancelSingleBooking","cancelled","cancelBooking","is_cancelled","cancelReason","_this11","_this$state3","_this$props9","checkoutSuccess","_this12","_this$state4","_this$props10","calculateTotalPrice","slot_data","handleCreateBooking","handleCreateBookingWithPayment","_this$state5","_this13","_this$state6","_this$props11","_this$state7","totalprice","slots_data","s_date","check_availaible","compare_selected_times","time_val","all_valid","_this14","_this$props12","handleCloseClick","_this$state8","resource_options","handleSelectChange","Flatpickr","defaultDate","defaultHour","hour","defaultMinute","enableTime","noCalendar","placement","focusOnOpen","minuteIncrement","static","handleTimeFromChange","handleTimeToChange","convertToDecimal","TenantAutoSuggest","handleSelectedTenant","loadEventSlots","_this15","loadQuestionsTextField","pay_option","pay_label","_this16","_this$props13","handlePaymentSelection","updateBasketBookingQuestions","_this17","_this$props14","loadQuestionsEditTextField","_this18","_this$props15","isAfter","handleEditBooking","_this19","_this$props16","cancellationValid","handleCancelBooking","_this$props17","getApplicationNode","focus","AriaModal","titleText","onExit","underlayStyle","underlayClickExits","escapeExits","focusDialog","showCreateModalView","showBookingQuestionsView","showCheckoutView","showSuccessView","showErrorView","showEditModalView","showEditBookingQuestionsView","showWarningView","resourceSelectors","basketItems","bookingSlot","custom_card_colours","custom_cards","borderPast","ServiceUnitType","CustomEventWrapper","open","card_color","current_card","Popover","isOpen","position","onClickOutside","padding","disableReposition","content","dayNameDisplayHelper","dateDisplayHelper","WorldPayComponent","isScriptLoaded","isScriptLoadSucceed","initEditor","onError","handlePaymentLoad","scriptLoader","encryptAES","Crypto","enc","Utf8","iv","AES","encrypt","keySize","CBC","pad","Pkcs7","decryptAES","cypherText","decrypted","decrypt","decryptedData","dayWrapperClicked","BigCalendar","setLocalizer","momentLocalizer","myCustomDayWrapper","eventPropsGetter","isSelected","borderRadius","zIndex","borderBottom","borderTop","borderLeft","borderRight","opacity","CustomEventCell","EventCell","eventWrapperComponent","MyWeek","_Week","_MyWeek$range","TimeGrid","eventOffset","Week","culture","firstOfWeek","localizer","startOfWeek","getDay","dates","BookingCalendarCustom","getElementById","timeSlot","modal","selectedBookedSlot","min_cancel_time","cancelledBooking","type2","current_nav_view","slotSelected","eventsResourceSelected","selectedSartDate","selectedEndDate","basketQue","modalActive","fromRedirect","modalActionEvent","actionTriggered","crypted","CyptoHelper","itemQue","selectedEvents","selectedResource","carlendarView","current_view","serviceBookings","status_screen","showModal","modalScreenType","min_cancellation_time","slotInfo","selectedStartDate","slot_obj","slot_time","slot_min","getBookedBooking","serviceDetail","activateModal","deactivateModal","booking_start_time","booking_start_mins","booking_end_time","booking_end_min","current_overlaps","getOverlappingSlot","selected_slot","serviceid","current_slots","dayType","toolbar","toolbarDate","monthNames","weekDays","currentMonth","currentDay","currentYear","ws","dayCount","isCurrentMonth","viewSwitcher","switchTypeHandler","marginBottom","paddingRight","paddingLeft","switchDayPrevious","onNavigate","fontWeight","servicesOptions","requestStatus","paymentLoad","showPaymentView","navigate","handleNavigation","minCalTime","maxCalTime","wpscriptLoaded","eventsSlotStatus","formats","dayFormat","timeGutterFormat","defaultView","timeslots","views","onView","selectable","onSelectEvent","eventSelected","onSelectSlot","elementProps","max","components","dayWrapper","getCustomToolbar","eventPropGetter","renderLoading","resourceSelector","carlendarSetting","setPageEvent","pg_event","RoomsScreen","vision_type","selected_event_resources","_ref13","pageEventActions","bookingTimeStep","detailGroupId","loadBookingQuestions","durationUnit","detail_group_id","selectedServiceSlots","selected_event_resource","curre_event","navigationController","pushView","ServicesListMulti","service_options","roomsServiceHrId","modalActionTrigered","loadServicesOption","checkoutSelector","eventSelectionprocessing","ServiceListPager","currentPage","dataList","currentList","dataItem","Math","floor","toArray","optionList","indx","ReactPaginate","pageCount","marginPagesDisplayed","pageRangeDisplayed","onPageChange","handlePagerChanged","CURRENT_DATE","customDayPropGetter","max_bookings","startAccessor","endAccessor","getTime","showMultiDayTimes","month","header","dayPropGetter","ResourcePager","MonthScreen","eventsData","eventItem","dateChanged","date_val","yr","mth","startDay_val","endDay_val","firstDay","lastDay","eventslot_processing","allDay","ccAddress","sendCcNotification","DailyScreen","_isMounted","BookingsScreen","unitType","resourceOptions","resourceProcessing","selectedResourceId","paymentSetDate","paymentEventSetDate","event_date","_ref34","_callee34","_context34","_x67","_x68","setSelectedService","setServiceDetail","servicesDayData","mincal","maxcal","minTime","time_convert","maxTime","detailGrpId","monthlyServicesSlots","selectedResourcesId","current_events","uniqBy","defaultEvents","conciergeMember","home_development","dateVal","startDay_","endDay_","serv","max_booking","_ref12","fetchMonthlyServicesSlots","properties","sericeUnit","trigerdDateChanged","showBlank","num","services_options","handleServiceSelected","ServicesListPager","handleResourceChange","showView","formatStringList","substringsize","substring","ParcelAutoSuggest","handleParcelChange","textInput","parcelId","defaultparcelId","startParcel","handleParcelSelected","keyCode","ctrlKey","v1","v2","formatDataText","formatText","parcels_","searchData","trimEnd","trimStart","isHighlighted","stringHelper","addressLine3","addressLine4","addressLine5","addressLine6","matchedParcel","suggestionsContainer","autoFocus","ParcelResultComponent","parcelResultComponentHeight","toggleHideParcelResult","toggleHideParcelResultOverlay","parcelElement","offsetHeight","parcelOverlayElement","barcodeId","parcelReceivedDate","showoverlay","handleYesButtonClick","handleNoButtonClick","tenantAddressLine1","CustomMessages","ParcelsExpected","taskTitle","numberOfParcels","parcelMessage","linkMessage","timeFrame","ParcelStatus","ParcelScreen","selectedParcelId","relatedParcels","portalSettingsActions","parcelActions","_ref20","_x40","selectedParcel","selectedParcelUpdated","parcelOptions","selectedParcelUpdated_","parcelOptionsUpdated","parcelOption","parcelsDue","parcelsRelated","prtalSettings","parcelsRelated_","parcelsObj","expectedDate","idList","checkoutParcels","filterData","FilterValue","updateData","locationId","rel","complete","collectByDays","searchPlaceHolder","currentParcels","relatedParcelsList","_portalType","ParcelAutosuggest","resetParcelSelection","parcelFound","handleParcelItemSelected","getParcelCount","selectedFilterOption","parcelSelectors","portalSettingsSelectors","LandingScreen","fullGrid","numOfModules","moduleSelected","showModule","selectedImgBG","fromRedirectSet","selectedModuleObj","renderDefault","VisitorScreen","renderParcelCheckinout","renderResidentsView","renderVisitorsView","renderKeysView","renderRoomsView","renderBookingsView","renderBlank","moduleMenu","ButtonGroup","leftClick","rightClick","icon_l","icon_r","leftText","rightText","leftDisabled","rightDisabled","iconLeft","iconRight","sizes","rightStyle","CheckInScreen","locationFullName","addParcelValidation","addParcelFormUsed","handleInputChange","queuedParcels","removeFromQueue","AddrLookUpAutoSuggest","handleAddressChange","addrLookupActions","selectedAddressFromDefault","pervState","defaultAddressId","startAddress","handleAddressSelected","v","addr5County","matchedAddress","highlightedSuggestion","addrLookupSelectors","AddResidentScreen","addressValid","msgError","addResidentValidation","conciergeDetails","roles","residentCreatedstatus","resi","sendRegisterationActivation","messageSent","addResidentFormValid","addResidentFormUsed","groupObj","residentData","returnToNewProfile","sendRegistrationActivation","addressDefault","locationValidationStatus","handleGroupChange","conciergeSelectors","ResidentProfile","isApproved","avatarUrl","residentApprovalUpdatedStatus","avatarStyle","ProfileCard","txtColor","picture","profileStyle","marginLeft","ResidentArchive","UpdateApprovalResident","returnToProfile","ResidentEditProfilePage","AddressLookUp","ForgotPassword","emailFormSuccesssfull","emailSuccessfull","emailVerify","closed","password2","PassRecoverySent","bgImage","backgroundRepeatY","handleResend","PasswordRecoveryNewPassword","guid","resetFormSuccesssfull","tokenid","verifyResetRequest","cryptoUtil","changePassword","TermsAndConditions","ResidentVisitorAutoSuggest","lookupMembers","getVisitorsExpectedByDate","lookupVisitor","lookupArray","lookupMember","suggestionsAvailable","keysTestScreen","keLogList","phoneNumber","currentTime","overdueKeyList","key_data","k_val","r","logLst","KeyId","ovKeyList","KeyAssignScreen","currentKey","notifyData","dateAssigned","_ref11","notifyKeyassigned","ResidentVisitorAutoSelect","notifyStatus","KeyProfileScreen","keyBarcode","dateReturned","timeAssigned","selectedKeyLog","topLink","archive","updateKeyValidation","trackCurrentKey","currentKeyLog","keyRecipient","dateTimeReceived","onStartTop","updateCurrentKey","keyLogId","updateKeyFormValid","updateKeyFormUsed","handleUpdate","updateKey","keyHistory","relatedKeys","keyHistoryList","take","logItem","keyAddr","validateReturn","handleHistoryView","validateStatus","keyLog","KeyReturnScreen","returnKeyValidation","returnKeyFormValid","returnKeyFormUsed","handleReturn","returnKey","notifyKeyReturned","TenantAddrTypeAutoSuggest","reject","data_l","arrowHide","InputNewComponent","isDateDisabled","persist","DetailListWithOverlay","idx","selectedRow","IsDeletePopoverOpen","activeRow","selectDetailReset","selectedDetail","resetForm","DeleteBtn","DeleteWhiteBtn","h","min_arr","curr_min","excludedOptions","arr","generateOptions","serviceModulesActions","StatusMessages","VisitorBooking","tenantType","visitorEmail","commercial","isSucessfull","IsAddMutipleEnable","isCheckboxChecked","isMeetindAdded","meetingAction","instruction","addSingleMeeting","isVistorSave","meetingsAdded","selectedStatus","resetAutoSelect","timeFromExpected","timeToExpected","dueDT","toDT","setMeetings","addMeetingToStore","toTime","maxEnd","TenantCompanyTypeAutoSuggest","MultipleVisitors","resetValidation","handleEdit","handleCancel","visitorSelector","DetailListNew","isPopoverOpen","handleClickInstrunction","classAppend","visitorStyle","visitor_style","textTransform","limit","defaultLimit","dataReloaded","searchRedirected","searchText","search_date","meetingUpdated","dataReLoaded","handleVisitorSearch","selectedData","serach_data","postLength","currentLimit","loadButton","scrollIntoView","orderdMeetingsByTime","CSSTransitionGroup","transitionName","transitionEnterTimeout","transitionLeaveTimeout","loadMoreMeetings","ActionButtonText","VisitorProfile","checkedInDate","checkedInTime","checkedOutTime","visitorStatus","visitorActionText","IsFormEditable","IsOverlayAppear","actionText","configHelpers","MapDataToControls","searResult","checkOutVisitor","visitorFirstName","visitorSurName","updateMeetingRecord","updatedResults","updateMeeting","EditButton_style_checkout","EditButton_style_others","handleCheckin","handleVisitorAction","handleNoClick","handleEditInfoClick","handleCancelClick","meetingSelectors","ManagementScreen","PAYMENT_GATEWAY_SETTINGS_LOAD_SUCCESS","PAYMENT_SIGNATURE_LOAD_SUCCESS","PAYMENT_GATEWAY_SETTINGS_LOAD_FAIL","PAYMENT_SIGNATURE_LOAD_FAIL","signature","paymentGatewayReducer","getGatewaySettings","paymentGateway","getGatewayErrors","getPaymentSignature","getPaymentCryptSignature","paymentType","conciergeServices","getPaymentSignatureCrypt","bbIsLoggedIn","bbauthreduce","getAuthToken","bbauth","queryString","PaymentGateWayProvider","PaymentResponse","PaymentStage","ORDER_KEY","Payments","trans","order","selectedResources","calendarView","orderset","searchQuery","paymentGatewaySettings","showStatus","queryData","prefetch_calendar_state_enabled","bbauthToken","featureBg","paymentResponseMsg","getpaymentGatewaySettings","paymentGatewayActions","pageActions","bb_authService","order_crypt","getOrderToken","dataObj","bbid","statusMsg","transStatus","removerOrderToken","decodeURI","orderSet","basketCache","basketItem","amountFormat","total_price","trunc","sdate","edate","request","paymenttype","cryptdata","encodeURIComponent","formbasket_","createElement","appendChild","formBasket","description","memberid","vendortxtcode","outerHTML","handlePaymentReturn","dataForCrypto","formurl","instanceid","country","callbackurl","quantity","unitNetAmount","unitTaxAmount","unitGrossAmount","totalGrossAmount","qubetransactionid","newItem","descriptionEL","quantityEl","netAmountEl","taxAMountEl","grossAmountEl","totalAmountEl","innerHTML","vpsprotocol","transactiontype","vendorname","basketData","initializeWorldPay","initializeSagePay","initializeDefault","replacement","orderList","SetGateWay","orderItem","pamentGatewaySelectors","bookingbugAuthSelector","tenantSeSelectors","conciergeSettings","conciergeSetting","Suggestion","MemberAutoSuggest","scrollBar","suggestionsContainerOpen","validation","TextAreaInput","Textarea","ParcelCancelModal","handleContinueClick","handleStayOnPageClick","confirmationMessage","paddingTop","mounted","RegisterScreen","modalCancelShow","count","enabled","parcelQueue","isOnlyOneLocationAvailable","parcelLocations","settingsActions","sendRegitrationNotification","memberValidationStatus","memberValidationMessage","validationError","locatinValidationMessage","newParcel","splitTenant","updatedQueue","resetTenantAddress","unshift","parcelsRegistertionProcess","isDataAddedFromFields","objFromField","addParcels","residentsList","tenantsList","defaultTenantIdProperty","showRecordsField","handleLocationChange","handleAddClick","handleRightClick","CustomInput","resetField","MultiSelectComponent","from","Set","currentIdList","currentValueList","navigator","onLine","isOnline","ParcelManagementScreen","parcelsList","loadMoreLimit","filterOptionsSelected","selectedOptions","handleFilerUptions","parcelStatus","parcelStatusList","updateSearchList","parcelslength","search_","lists","statusItem","parcelItem","statusSortOrder","getstatus","options_status","searchPH","CustomInputComponent","handleSearchPress","resetParcelList","getFilterOptions","handlePacrelClick","handleLoadMore","ParcelsListComponent","IsParcelSelected","disabledItem","expectedParcelsIndexInState","isParcelExpectedSearched","selectedParcels","setParcelSearched","isParcelListChanged","setParcelsUpdated","expectedCount","expectedParcel","expecteDate","selectedList","setSelectedParcel","noParcelFoundMsg","helpers","ParcelScreens","ParcelModal","currentIndex","buttontextNext","buttontextBack","isLocationEmpty","locationSelect","isParcelRegistered","buttonFinish","screen","statusFailure","registerParcelValidation","tempArrayForOptions","tempArray","tempItem","tempItemForOptions","sendParcelArrivedNotification","currentOption","currentArray","listData","registerExpectedParcelsList","senderName","totalParcels","location_option","selectedLocation","curruntLocation","handleBarcodeChange","showRegiterScreen","showResultScreen","handleBackClick","handleNextClick","resetParcelsList","ParcelExpectedScreen","todayFilterSelected","maxFilterSelected","minFilterSelected","dayFilter","showFilterOptions","modalShow","IsAnyParcelSelected","IsParcelSearched","IsParcelsUpdated","filterOptions","filterSettings","listItemSelected","registeredParcelsList","min_sel","today_sel","max_sel","handleFilterSelected","defaultParcels","maxDate","filterList","expectedToday","expectedTodayList","minSelected","maxSelected","todaySelected","parcelListAll","filteredSelectedParcelList","handleFilterOptionsClick","ParcelStatusModal","reasonId","additionalInfo","isAdditionalInformationFieldVisible","isReasonFieldVisible","reasonObj","parcelReturnReason","statusObj","checkoutParcel","updateData_","comment","status_options","curruntStatus","charAt","reasons_options","curruntReason","handleStatusChange","handleReasonChange","ParcelInfoScreen","parcelEmail","IsEditable","updateRecord","resetEditableDefaults","resetDefaults","selectedLocationById","statusReason","dateCollected","dateDiscarded","handleAmend","ErrorScreen401","reload","ErrorScreen404","ErrorScreen403","ErrorScreen500","currentHostname","hostname","isLocalhost","restrictRoutesTo","onRouteChanges","setClass","previousRoute","nextRoute","bodyClass","classList","checkForRedirect","firstSubPath","chunk","swap","origin","composeEnhancers","Route","component","onInit","Switch","exact","ParcelRegisterScreen","ResidentViewProfile","ResidentProfileScreen","ResidentProfileEditScreen","ResidentArchiveProfile","KeysTestScreen","PaymentsScreen","Visitor","VisitorManagement","LogoutWrapper","PasswordRecoverySent","PassRecoveryNewPassword","Parsley","addValidator","validateString","countWords","nbWords","addMessage","arrayRange","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","combineReducers","reducers","applyMiddleware","thunk","ReactDOM","Provider","BrowserRouter","routes","base","extended","extend","exports","env","process","err","loadEnvironmentConfig","pushLater","_len","args","_key","setImmediate","portalDomain"],"mappings":"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","file":"static/js/main.4d639b5b.chunk.js","sourcesContent":["export const MODULES_LOADED_SUCCESSFULLY = \"MODULES_LOADED_SUCCESSFULLY\";\r\nexport const MODULES_LOAD_FAIL = \"MODULES_LOAD_FAIL\";\r\nexport const PORTAL_SETTINGS_LOAD_SUCCESSFULLY =\r\n \"PORTAL_SETTINGS_LOAD_SUCCESSFULLY\";\r\nexport const PORTAL_SETTINGS_LOAD_FAIL = \"PORTAL_SETTINGS_LOAD_FAIL\";\r\n","//API\r\nimport { createBrowserHistory } from 'history';\r\nimport Config from '../config';\r\nvar apiDomain = Config.apiDomain;\r\nvar bookingBugApi = Config.bookingbugApi;\r\nvar bookingBugPwd = Config.bookingbugPwd;\r\n//const currentHostname = document.location.hostname;\r\n// if (!process.env.NODE_ENV || process.env.NODE_ENV === \"development\") {\r\n// apiDomain = \"http://demo.engage.local\";\r\n\r\n// if (currentHostname.indexOf(\"ngrok\") !== -1) {\r\n// apiDomain = \"http://ba05bae1.ngrok.io:80\"; //....\r\n// }\r\n// } else if (currentHostname.indexOf(\"ept-dev.co.uk\") !== -1) {\r\n// apiDomain = \"http://engageresi.ept-dev.co.uk\";\r\n\r\n// } else if (currentHostname.indexOf(\"ept-stage.co.uk\") !== -1) {\r\n// apiDomain = \"http://engageresi.ept-stage.co.uk/\";\r\n\r\n// } else {\r\n// apiDomain = window.location.origin;\r\n// }\r\n\r\nconst browserHistory = createBrowserHistory();\r\nexport const visitorStatuses = {\r\n\tcheckedIn: 'checkedin',\r\n\tcheckedOut: 'checkedout',\r\n\tdueForArrival: 'dueforarrival',\r\n\tnotified: 'notified'\r\n};\r\n\r\nexport const CONCIERGE_API = apiDomain + '/api';\r\nexport const BOOKING_BUG_API = bookingBugApi;\r\nexport const LOGIN_ENDPOINT = BOOKING_BUG_API + '/login';\r\nexport const BOOKINGBUG_ADMIN_ENDPOINT = BOOKING_BUG_API + '/admin';\r\n\r\n//ENDPOINTS\r\n\r\n//Auth Endpoint\r\nexport const CONCIERGE_AUTH_ENDPOINT = apiDomain + '/oauth/concierge/token';\r\nexport const PARCELS_ENDPOINT = CONCIERGE_API + '/parcels';\r\nexport const MEMBERS_ENDPOINT = CONCIERGE_API + '/members';\r\nexport const SERVICE_MODULES_ENDPOINT = CONCIERGE_API + '/conciergemodules';\r\nexport const ADDRESS_LOOKUP_ENDPOINT = CONCIERGE_API + '/addresslookup';\r\nexport const KEYS_ENDPOINT = CONCIERGE_API + '/keys';\r\nexport const VISITORS_ENDPOINT = CONCIERGE_API + '/visitors';\r\nexport const ENGAGE_BOOKINGBUG_API = CONCIERGE_API + '/bookingbug';\r\n//export const VISITORS_ENDPOINT = apiDomain + \"/api/visitors\";\r\nexport const MEETINGS_ENDPOINT = CONCIERGE_API + '/meetings';\r\n//export const MEMBERS_ENDPOINT = apiDomain + \"/api/members\";\r\nexport const CONCIERGE_SETTINGS_ENDPOINT = CONCIERGE_API + '/conciergesettings';\r\n//Parcels API\r\nexport const PARCELS_STATUS_CODES_SUCCESS_ENDPOINT = PARCELS_ENDPOINT + '/allstatus';\r\n\r\nexport const PARCEL_RETURN_REASON_CODES_ENDPOINT = PARCELS_ENDPOINT + '/returnreasons';\r\n\r\nexport const PARCEL_RECORD_ENDPOINT = PARCELS_ENDPOINT + '/record';\r\nexport const ALL_PARCELS_ENDPOINT = PARCELS_ENDPOINT + '/all';\r\nexport const PARCEL_LOCATIONS_ENDPOINT = PARCELS_ENDPOINT + '/locations';\r\nexport const PARCEL_STATUS_REASONS_ENDPOINT = PARCELS_ENDPOINT + '/statusreason';\r\nexport const PARCEL_RETURN_ENDPOINT = PARCELS_ENDPOINT + '/return';\r\n\r\nexport const PARCEL_ADD_ENDPOINT = PARCELS_ENDPOINT + '/checkin';\r\nexport const PARCEL_CHECKOUT_ENDPOINT = PARCELS_ENDPOINT + '/collected';\r\nexport const NOTIFY_PARCEL_CHECKED_IN = PARCELS_ENDPOINT + '/notifycheckin';\r\nexport const NOTIFY_PARCEL_COLLECTED = PARCELS_ENDPOINT + '/notifycollected';\r\nexport const NOTIFY_PARCELS_CHECKED_IN = PARCELS_ENDPOINT + '/notifycheckinparcels';\r\nexport const NOTIFY_PARCELS_COLLECTED = PARCELS_ENDPOINT + '/notifycollectedparcels';\r\nexport const PARCEL_EXPECTEDARRIVEDBYDATE = `${PARCELS_ENDPOINT}${'/expectedArrivedByDate'}`;\r\nexport const PARCEL_REGISTEREXPECTEDLIST = `${PARCELS_ENDPOINT}${'/registerexpectedlist'}`;\r\nexport const PARCEL_SETTINGS = `${PARCELS_ENDPOINT}${'/settings'}`;\r\nexport const PARCELS_BY_STATUS = `${PARCELS_ENDPOINT}${'/byStatus'}`;\r\nexport const UPDATE_PARCEL = `${PARCELS_ENDPOINT}${'/update'}`;\r\nexport const PARCEL_NOTIFY = `${PARCELS_ENDPOINT}${'/notify'}`;\r\n//Tenants Endpoint\r\nexport const TENANTS_ENDPOINT = MEMBERS_ENDPOINT + '/tenants';\r\nexport const RESIDENTS_ENDPOINT = MEMBERS_ENDPOINT + '/residents';\r\nexport const SEARCH_RESIDENTS_ENDPOINT = MEMBERS_ENDPOINT + '/searchby';\r\nexport const CREATE_RESIDENT_ENDPOINT = MEMBERS_ENDPOINT + '/create';\r\nexport const UPDATE_MEMBER_ENDPOINT = MEMBERS_ENDPOINT + '/update';\r\nexport const UPDATEAPPROVAL_MEMBER_ENDPOINT = MEMBERS_ENDPOINT + '/updateapproval';\r\nexport const SEND_REGISTERATION_ACTIVATION_ENDPOINT = MEMBERS_ENDPOINT + '/notifyregister';\r\nexport const RESIDENTS_GROUPS_ENDPOINT = MEMBERS_ENDPOINT + '/groups';\r\n/**AddressLookup */\r\nexport const ADDRESSES_ENDPOINT = ADDRESS_LOOKUP_ENDPOINT + '/addresses';\r\n\r\n//Member Reset EndPoint\r\nexport const REQUEST_PASSWORD_RESET_ENDPOINT = MEMBERS_ENDPOINT + '/requestresetpassword';\r\nexport const PASSWORD_RESET_ENDPOINT = MEMBERS_ENDPOINT + '/resetpassword';\r\nexport const VERIFY_REQUEST_RESET_ENDPOINT = MEMBERS_ENDPOINT + '/verifyresetrequest';\r\n\r\n//Meeting API Endpoint\r\nexport const UPDATE_MEETING_RECORD_ENDPOINT = MEETINGS_ENDPOINT + '/update';\r\nexport const MEETING_RECORD_ENDPOINT = MEETINGS_ENDPOINT + '/record';\r\nexport const VISITOR_MEETING_ENDPOINT = MEETINGS_ENDPOINT + '/visitor';\r\nexport const CHECKIN_VISITOR_ENPOINT = MEETINGS_ENDPOINT + '/checkin';\r\nexport const CHECKOUT_VISITOR_ENPOINT = MEETINGS_ENDPOINT + '/checkout';\r\nexport const CREATE_NEW_MEETING_ENDPOINT = MEETINGS_ENDPOINT + '/add';\r\nexport const CREATE_NEW_MEETINGS_ENDPOINT = MEETINGS_ENDPOINT + '/addmultiple';\r\nexport const RESOURCE_BOOKING_NOTIFY_ENDPOINT = MEETINGS_ENDPOINT + '/notify';\r\nexport const NOTIFY_CHECKING_ENPOINT = MEETINGS_ENDPOINT + '/notifyCheckin';\r\nexport const RESOURCE_BOOKING_CANCELLED_NOTIFY_ENDPOINT = MEETINGS_ENDPOINT + '/notify_resource_cancelled';\r\nexport const RESOURCE_BOOKING_UPDATED_NOTIFY_ENDPOINT = MEETINGS_ENDPOINT + '/notify_resource_amended';\r\nexport const NOTIFY_TENANT_RESOURCE_BOOKED = MEETINGS_ENDPOINT + '/notifyResourcebooked';\r\nexport const NOTIFY_HOUSE_MANAGER_RESOURCE_BOOKED = MEETINGS_ENDPOINT + '/notifyHMResourcebooked';\r\nexport const NOTIFY_RAISECHARGE_FINANCE_MANAGER_RESOURCE_BOOKED =\r\n\tMEETINGS_ENDPOINT + '/notifyRaisechargeFMResourcebooked';\r\n\r\n/**Keys Endpoint */\r\nexport const KEYS_RECORD_ENDPOINT = KEYS_ENDPOINT + '/records';\r\nexport const KEY_STATUSES_ENDPOINT = KEYS_ENDPOINT + '/statuses';\r\nexport const KEYS_LOG_ENDPOINT = KEYS_ENDPOINT + '/log';\r\nexport const KEYS_LOG_BY_KEY_STATUS = KEYS_ENDPOINT + '/keybystatus';\r\nexport const KEY_LOG_BY_KEYID = KEYS_ENDPOINT + '/overduekeylog';\r\nexport const RETURN_KEY_ENDPOINT = KEYS_ENDPOINT + '/return';\r\nexport const KEY_LOG_LIST_ENDPOINT = KEYS_ENDPOINT + '/loglist';\r\nexport const KEY_STATUS_UPDATE = KEYS_ENDPOINT + '/updatekey';\r\nexport const NOTIFY_KEY_ASSIGNED = KEYS_ENDPOINT + '/notifykeyassigned';\r\nexport const NOTIFY_KEY_RETURNED = KEYS_ENDPOINT + '/notifykeyreturned';\r\n/**Visitors Endpoint */\r\nexport const SEARCH_VISITOR_ENDPOINT = VISITORS_ENDPOINT + '/search';\r\nexport const SEARCH_VISITOR_BY_NAME_ENDPOINT = VISITORS_ENDPOINT + '/record';\r\nexport const VISITORS_EXPECTED_ENDPOINT = VISITORS_ENDPOINT + '/notifiedcheckedbydate';\r\nexport const VISITOR_CHECKIN_ENDPOINT = VISITORS_ENDPOINT + '/checkin';\r\nexport const VISITOR_CHECKOUT_ENPOINT = VISITORS_ENDPOINT + '/checkout';\r\nexport const VISITOR_CAR_REG_ENDPOINT = VISITORS_ENDPOINT + '/addreg';\r\nexport const VISITOR_PASS_COLLECTED = MEETINGS_ENDPOINT + '/pass';\r\n\r\n/**Settings Endpoint */\r\nexport const GLOBAL_SEETINGS_ENDPOINT = SERVICE_MODULES_ENDPOINT + '/globalSetting';\r\nexport const PAYMENT_GATEWAY_SETTINGS_ENDPOINT = CONCIERGE_SETTINGS_ENDPOINT + '/paymentgateway';\r\nexport const PAYMENT_SIGNATURE_ENDPOINT = CONCIERGE_SETTINGS_ENDPOINT + '/paymentmd5signature';\r\nexport const PAYMENT_CRYPT_ENDPOINT = CONCIERGE_SETTINGS_ENDPOINT + '/paymentsignature';\r\n/**Engage Bookingbug Endpoint */\r\nexport const ENGAGE__BOOKINGBUG_LOGIN_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/bbadminlogin';\r\nexport const ENGAGE_BOOKINGBUG_SERVICES_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/services';\r\nexport const ENGAGE_BOOKINGBUG_BOOKINGS_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/bookings';\r\nexport const ENGAGE_BOOKINGBUG_SERVICE_DAYDATA_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/servicedaydata';\r\nexport const ENGAGE_BOOKINGBUG_RESOURCE_DAYDATA_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/resourcedaydata';\r\nexport const ENGAGE_BOOKINGBUG_RESOURCE_TIMEDATA_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/servicetimedata';\r\n\r\nexport const ENGAGE_BOOKINGBUG_RESOURCE_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/resource';\r\nexport const ENGAGE_BOOKINGBUG_RESOURCES_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/resources';\r\nexport const ENGAGE_BOOKINGBUG_BOOKING_QUESTIONS = ENGAGE_BOOKINGBUG_API + '/bookingquestions';\r\nexport const ENGAGE_BOOKINGBUG_BOOKED_BOOKINGS_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/bookedbookings';\r\nexport const ENGAGE_BOOKINGBUG_BLOCKED_BOOKINGS_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/blockedbookings';\r\nexport const ENGAGE_BOOKINGBUG_RESOURCE_BOOKINGS_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/resourcebookings';\r\nexport const ENGAGE_BOOKINGBUG_ADD_TO_BASKET_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/additemtobasket';\r\nexport const ENGAGE_BOOKINGBUG_CHECKOUT_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/checkout';\r\nexport const ENGAGE_BOOKINGBUG_UPDATE_BOOKING_RESOURCE_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/updatebookingresource';\r\nexport const ENGAGE_BOOKINGBUG_CANCEL_BOOKING_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/cancelbookings';\r\nexport const ENGAGE_BOOKINGBUG_BASKET_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/basket';\r\nexport const ENGAGE_BOOKINGBUG_BLOCK_RESOURCE_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/blockresource';\r\nexport const ENGAGE_BOOKINGBUG_DELETE_ITEM_FROM_BASKET_ENDPOINT = ENGAGE_BOOKINGBUG_API + '/removefrombasket';\r\n/***Payment Endpoint ******/\r\n\r\nexport const WorldPayURL = 'https://secure-test.worldpay.com/wcc/purchase';\r\nexport const WorldPayInstID = '1091094';\r\n\r\nexport const errorPageRedirect = (response) => {\r\n\tif (response.status === 500) {\r\n\t\tbrowserHistory.push('/500');\r\n\t} else if (response.status === 403) {\r\n\t\tbrowserHistory.push('/403');\r\n\t}else if(response.status === 401){\r\n\t\tbrowserHistory.push('/401');\r\n\t}else if(response.status === 404){\r\n\t\tbrowserHistory.push('/404');\r\n\t}\r\n};\r\n\r\n//Modules API\r\nexport const MODULES_ENDPOINT = SERVICE_MODULES_ENDPOINT + '/modules';\r\nexport const PORTAL_ENPOINT = SERVICE_MODULES_ENDPOINT + '/portalsettings';\r\n//parcel constants\r\nexport const parcelStatuses = {\r\n\tcheckedIn: 'checked-in',\r\n\treturned: 'returned',\r\n\tcollected: 'collected'\r\n};\r\n\r\nexport const portalTypes = {\r\n\tResidential: 'residential',\r\n\tCommercial: 'commercial'\r\n};\r\n\r\n//Booking Bug Config\r\nexport const APP_KEY = 'xxxxxx';\r\n\r\nexport const APP_ID = 'xxxxxx';\r\nexport const COMPANY_ID = null;\r\nexport const ADMIN_COMPANY_ID = 'xxxxxx';\r\nexport const MEETING_ROOM_SERVICE_HR_ID = 'xxxxxx';\r\nexport const PARKING_SERVICE_HR_ID = 'xxxxxx';\r\n\r\n//logIn\r\nexport const BOOKING_BUG_USER_LOGIN = 'technical@engageproptech.com';\r\nexport const BOOKING_BUG_USER_PWD = bookingBugPwd;\r\nexport const BOOKING_BUG_USER_ID = null;\r\n\r\n//Encryption Utility\r\nexport const EngageCryptoKey = '1547896544623248';\r\nexport const EngageCryptoKeyIV = '7871564623240457';\r\n","import _ from 'lodash';\r\nimport * as config from './config';\r\n//import { browserHistory } from 'react-router';\r\nimport {createBrowserHistory} from 'history';\r\n\r\nlet history = createBrowserHistory();\r\nconst AUTH_TOKEN = 'conc_authToken';\r\nconst TOKEN_TYPE = 'conc_tokenType';\r\nconst TOKEN_EXPIRE = 'conc_tokenExpireIn';\r\n\r\nclass LoginService {\r\n\tasync login(username, password) {\r\n\t\tconst auth_url = `${config.CONCIERGE_AUTH_ENDPOINT}`;\r\n\r\n\t\tvar headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\r\n\t\t//headers.append('Access-Control-Allow-Origin', '*');\r\n\t\tconst response = await fetch(auth_url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tbody: `grant_type=password&password=${password}&username=${username}`.toString(),\r\n\t\t\theaders: headers\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`Authentication Error, status ${response.status}`);\r\n\t\t}\r\n\t\tconst result = await response.json();\r\n\t\tthis.setToken(_.get(result, 'access_token'));\r\n\t\tthis.setTokenType(_.get(result, 'token_type'));\r\n\t\tthis.setTokenExpire(_.get(result, 'expires_in'));\r\n\r\n\t\treturn {\r\n\t\t\tauthToken: _.get(result, 'access_token')\r\n\t\t};\r\n\t}\r\n\r\n\tasync requestResetPass(resetData) {\r\n\t\tconst url = `${config.REQUEST_PASSWORD_RESET_ENDPOINT}`;\r\n\t\t// const param = \"?email=\" + resetData.email + \"&type=\" + resetData.type;\r\n\t\tvar reqHeaders = new Headers();\r\n\t\treqHeaders.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: reqHeaders,\r\n\t\t\tbody: JSON.stringify(resetData)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`LoginService requestResetPass failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst data = await response.json();\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tasync verifyResetRequest(requestData) {\r\n\t\tconst url = `${config.VERIFY_REQUEST_RESET_ENDPOINT}`;\r\n\r\n\t\tvar reqHeaders = new Headers();\r\n\t\treqHeaders.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: reqHeaders,\r\n\t\t\tbody: JSON.stringify(requestData)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`LoginService verifyResetRequest failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst data = await response.json();\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tasync changePassword(requestData) {\r\n\t\tconst url = `${config.PASSWORD_RESET_ENDPOINT}`;\r\n\r\n\t\tvar reqHeaders = new Headers();\r\n\t\treqHeaders.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: reqHeaders,\r\n\t\t\tbody: JSON.stringify(requestData)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow new Error(`LoginService changePassword failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst data = await response.json();\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tasync getConciergeDetails() {\r\n\t\tconst url = `${config.MEMBERS_ENDPOINT}${'/conciergedetails'}`;\r\n\r\n\t\tconst authToken = this.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', `${'Bearer '}${authToken}`);\r\n\t\trequestHeader.append('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\r\n\t\trequestHeader.append(\"Cache-Control\", \"no-cache\");\r\n\t\t// reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n\t\t// reqHeaders.append(\"App-Id\", config.APP_ID);\r\n\t\t// reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`LoginService getConciergeDetails failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst data = await response.json();\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tsetToken(token) {\r\n\t\tlocalStorage.setItem(AUTH_TOKEN, token);\r\n\t}\r\n\r\n\tgetToken() {\r\n\t\treturn localStorage.getItem(AUTH_TOKEN);\r\n\t}\r\n\r\n\tsetTokenType(type) {\r\n\t\tlocalStorage.setItem(TOKEN_TYPE, type);\r\n\t}\r\n\r\n\tgetTokenType() {\r\n\t\treturn localStorage.getItem(TOKEN_TYPE);\r\n\t}\r\n\r\n\tsetTokenExpire(min) {\r\n\t\tlocalStorage.setItem(TOKEN_EXPIRE, min);\r\n\t}\r\n\r\n\tgetTokenExpire() {\r\n\t\treturn localStorage.getItem(TOKEN_EXPIRE);\r\n\t}\r\n\r\n\tlogout() {\r\n\t\t\r\n\t\twindow.localStorage.removeItem(AUTH_TOKEN);\r\n\t\twindow.localStorage.removeItem(TOKEN_EXPIRE);\r\n\t\thistory.replace('/');\r\n\t}\r\n}\r\n\r\nexport default new LoginService();\r\n","import * as config from \"./config\";\r\nimport authService from \"./loginService\";\r\nimport _ from \"lodash\";\r\n\r\nconst CONC_MODULE = \"conc_module\";\r\nclass ServiceModules {\r\n async getModules() {\r\n const url = `${config.MODULES_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n throw new Error(\r\n `get modules service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n this.setServiceModules(_.get(result, \"modules\"));\r\n\r\n return {\r\n modules: _.get(result, \"modules\")\r\n };\r\n }\r\n\r\n async getPortalSettings() {\r\n const url = `${config.PORTAL_ENPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n throw new Error(\r\n `get modules service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n setServiceModules(module) {\r\n localStorage.setItem(CONC_MODULE, JSON.stringify(module));\r\n }\r\n\r\n getServiceModules() {\r\n return localStorage.getItem(CONC_MODULE);\r\n }\r\n\r\n clearServiceModule() {\r\n localStorage.removeItem(CONC_MODULE);\r\n }\r\n}\r\n\r\nexport default new ServiceModules();\r\n","import * as types from \"./actionTypes\";\r\nimport _ from \"lodash\";\r\nimport moduleServices from \"../../services/ModulesServices\";\r\nimport * as config from \"../../services/config\";\r\n\r\nexport function getModules(callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const modules = await moduleServices.getModules();\r\n\r\n dispatch({\r\n type: types.MODULES_LOADED_SUCCESSFULLY,\r\n modules: _.get(modules, \"modules\")\r\n });\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n\r\n dispatch({ type: types.MODULES_LOAD_FAIL, error });\r\n //console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function loadModules(callback = () => { }) {\r\n return (dispatch, getState) => {\r\n try {\r\n const mod = moduleServices.getServiceModules();\r\n\r\n dispatch({\r\n type: types.MODULES_LOADED_SUCCESSFULLY,\r\n modules: JSON.parse(mod)\r\n });\r\n } catch (error) {\r\n callback(false);\r\n }\r\n };\r\n}\r\n\r\nexport function getPortalSetting(callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const setting = await moduleServices.getPortalSettings();\r\n dispatch({\r\n type: types.PORTAL_SETTINGS_LOAD_SUCCESSFULLY,\r\n settings: setting\r\n });\r\n\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n\r\n dispatch({ type: types.PORTAL_SETTINGS_LOAD_FAIL, error });\r\n //console.error(error);\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function getPortalTypes() {\r\n return config.portalTypes;\r\n}","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\nconst initialState = Immutable({\r\n modules: [],\r\n statusCodes: [],\r\n portal: undefined\r\n});\r\n\r\nexport default function serviceModuleReducer(\r\n state = initialState,\r\n action = {}\r\n) {\r\n switch (action.type) {\r\n case types.MODULES_LOADED_SUCCESSFULLY:\r\n return state.merge({\r\n modules: action.modules\r\n });\r\n case types.PORTAL_SETTINGS_LOAD_SUCCESSFULLY:\r\n return state.merge({\r\n portal: action.settings\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function loadModules(state) {\r\n return state.serviceModules.modules;\r\n}\r\n\r\nexport function loadPortalSttings(state) {\r\n return state.serviceModules.portal;\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autobind from \"react-autobind\";\r\nimport _ from \"lodash\";\r\nimport * as serviceModuleActions from \"./store/ServiceModules/actions\";\r\nimport * as serviceModuleSelectors from \"./store/ServiceModules/reducer\";\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.props.dispatch(serviceModuleActions.getPortalSetting());\r\n autobind(this);\r\n }\r\n componentDidUpdate(prevProps, prevState){\r\n if (\r\n prevProps.portalSettings !== this.props.portalSettings &&\r\n !_.isUndefined(this.props.portalSettings)\r\n ) {\r\n document.title = this.props.portalSettings.title;\r\n }\r\n }\r\n \r\n\r\n // moduleMenu() {\r\n // const { modules } = this.state;\r\n\r\n // return (\r\n // this.handleModuleMenuSelected(e)}\r\n // />\r\n // );\r\n // }\r\n\r\n render() {\r\n \r\n return (
{this.props.children}
);\r\n }\r\n}\r\nfunction mapStateToProps(state) {\r\n return {\r\n portalSettings: serviceModuleSelectors.loadPortalSttings(state)\r\n };\r\n}\r\nexport default connect(mapStateToProps)(App);\r\n","import React from \"react\";\r\n//import { Link } from \"react-router\";\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport _ from \"lodash\";\r\nimport { createBrowserHistory } from 'history';\r\nimport \"../../sass/components/HeaderNavigation/HeaderNavigation.css\";\r\n\r\nlet history = createBrowserHistory();\r\nfunction DropDownMenu(props) {\r\n /**Preload module locations, this would be loaded as a store/config component */\r\n // const menuLocations = [\r\n // { title: \"Parcels\", url: \"/concierge/parcel/checkin\" },\r\n // { title: \"Keys\", url: \"\" },\r\n // { title: \"Residents\", url: \"/concierge/residents/addnew\" },\r\n // { title: \"Visitors\", url: \"\" }\r\n // ];\r\n\r\n function menuClick(menu) {\r\n props.reset(true);\r\n \r\n history.push({\r\n pathname: \"/\",\r\n state: { module: menu }\r\n });\r\n }\r\n\r\n function menuTo(menu){\r\n props.reset(true);\r\n\r\n return{\r\n pathname : \"/\",\r\n state : {module : menu}\r\n \r\n };\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default DropDownMenu;\r\n","export const LOGIN_SUCESSFUL = \"LOGIN_SUCESSFULL\";\r\nexport const PASSWORD_CHANGED = \"PASSWORD_CHANGED\";\r\nexport const EMAIL_CHANGED = \"EMAIL_CHANGED\";\r\nexport const LOGGED_OUT = \"LOGGED_OUT\";\r\nexport const PASSWORD_RESET_REQUEST_SENT_SUCCESS =\r\n \"PASSWORD_RESET_REQUEST_SENT_SUCCESS\";\r\nexport const PASSWORD_RESET_FAIL = \"PASSWORD_RESET_FAIL\";\r\nexport const PASWORD_REQUEST_VERIFY_SUCCESS = \" PASWORD_REQUEST_VERIFY_SUCCESS\";\r\nexport const PASWORD_REQUEST_VERIFY_FAIL = \" PASWORD_REQUEST_VERIFY_FAIL\";\r\nexport const PASSWORD_RESET_SUCCESSFULL = \"PASSWORD_RESET_SUCCESSFULL\";\r\nexport const LOGIN_FAIL = \"LOGIN_FAIL\";\r\nexport const CONCIERGE_AUTHORIZED_SUCCESSFULL = \"CONCIERGE_AUTHORIZED_SUCCESSFULL\";\r\nexport const CONCIERGE_AUTHORIZED_FAIL = \"CONCIERGE_AUTHORIZED_FAIL\";\r\n","import _ from \"lodash\";\r\nimport * as config from \"../config\";\r\nimport decode from \"jwt-decode\";\r\n//import { browserHistory } from \"react-router\";\r\nconst TOKEN_KEY = \"bbug_authToken\";\r\nconst PROFILE_KEY = \"profile\";\r\n\r\nclass LoginService {\r\n async login(accountEmail, accountPassword, companyId) {\r\n const url = `${config.LOGIN_ENDPOINT}`;\r\n\r\n const reqBody = {\r\n email: accountEmail,\r\n password: accountPassword,\r\n id: companyId\r\n };\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: reqHeaders,\r\n body: JSON.stringify(reqBody)\r\n });\r\n\r\n if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n throw new Error(\r\n `LoginService login failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n this.setToken(_.get(data, \"auth_token\"));\r\n this.setProfile(PROFILE_KEY, companyId);\r\n return {\r\n authToken: _.get(data, \"auth_token\")\r\n };\r\n }\r\n\r\n async getCompanyId() {\r\n // const url = config.COMPANY_ID_ENDPOINT;\r\n\r\n // const response = await fetch(url, {\r\n // method: \"GET\"\r\n // });\r\n\r\n // if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `LoginService getStoreId failed, HTTP status ${response.status}`\r\n // );\r\n // }\r\n\r\n //const data = await response.json();\r\n this.setProfile(PROFILE_KEY, config.COMPANY_ID);\r\n return config.COMPANY_ID;\r\n }\r\n\r\n _validateUrl(url = \"\") {\r\n return url.startsWith(\"http\") ? url : undefined;\r\n }\r\n\r\n setToken(token) {\r\n localStorage.setItem(TOKEN_KEY, token);\r\n }\r\n\r\n getToken() {\r\n return localStorage.getItem(TOKEN_KEY);\r\n }\r\n\r\n getProfile() {\r\n return localStorage.getItem(PROFILE_KEY);\r\n }\r\n\r\n setProfile(key, data) {\r\n localStorage.setItem(key, data);\r\n }\r\n\r\n getTokenExpirationDate(encodedToken) {\r\n const token = decode(encodedToken);\r\n\r\n if (!token.date_expires) {\r\n return null;\r\n }\r\n const date = new Date(Date.parse(token.date_expires));\r\n\r\n return date;\r\n }\r\n\r\n logout() {\r\n localStorage.removeItem(TOKEN_KEY);\r\n }\r\n}\r\n\r\nexport default new LoginService();\r\n","export const LOGIN_COMPLETED = \"LOGIN_COMPLETED\";\r\nexport const FETCH_COMPANY_ID_COMPLETED = \"FETCH_COMPANY_ID_COMPLETED\";\r\n","import _ from \"lodash\";\r\nimport * as config from \"../config\";\r\nimport decode from \"jwt-decode\";\r\n//import { browserHistory } from \"react-router\";\r\nconst TOKEN_KEY = \"bbug_authToken\";\r\nconst PROFILE_KEY = \"profile\";\r\n\r\nclass LoginService {\r\n\r\n async login(accountEmail, accountPassword, companyId) {\r\n const url = `${config.ENGAGE__BOOKINGBUG_LOGIN_ENDPOINT}`;\r\n\r\n const reqBody = {\r\n email: accountEmail,\r\n password: accountPassword,\r\n id: companyId\r\n };\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n // reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n // reqHeaders.append(\"App-Id\", config.APP_ID);\r\n // reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: reqHeaders,\r\n body: JSON.stringify(reqBody)\r\n });\r\n\r\n if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n throw new Error(\r\n `LoginService login failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n this.setToken(_.get(data, \"auth_token\"));\r\n this.setProfile(PROFILE_KEY, companyId);\r\n return {\r\n authToken: _.get(data, \"auth_token\")\r\n };\r\n }\r\n\r\n async getCompanyId() {\r\n // const url = config.COMPANY_ID_ENDPOINT;\r\n\r\n // const response = await fetch(url, {\r\n // method: \"GET\"\r\n // });\r\n\r\n // if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `LoginService getStoreId failed, HTTP status ${response.status}`\r\n // );\r\n // }\r\n\r\n //const data = await response.json();\r\n this.setProfile(PROFILE_KEY, config.COMPANY_ID);\r\n return config.COMPANY_ID;\r\n }\r\n\r\n\r\n _validateUrl(url = \"\") {\r\n return url.startsWith(\"http\") ? url : undefined;\r\n }\r\n\r\n setToken(token) {\r\n localStorage.setItem(TOKEN_KEY, token);\r\n }\r\n\r\n getToken() {\r\n return localStorage.getItem(TOKEN_KEY);\r\n }\r\n\r\n getProfile() {\r\n return localStorage.getItem(PROFILE_KEY);\r\n }\r\n\r\n setProfile(key, data) {\r\n localStorage.setItem(key, data);\r\n }\r\n\r\n getTokenExpirationDate(encodedToken) {\r\n const token = decode(encodedToken);\r\n\r\n if (!token.date_expires) {\r\n return null;\r\n }\r\n const date = new Date(Date.parse(token.date_expires));\r\n\r\n return date;\r\n }\r\n\r\n logout() {\r\n localStorage.removeItem(TOKEN_KEY);\r\n }\r\n}\r\n\r\nexport default new LoginService();\r\n","import * as types from \"./actionTypes\";\r\nimport loginService from \"../../services/loginService\";\r\nimport bbugLoginService from \"../../services/BookingBugServices/LoginService\";\r\n//import engaebbugLoginServices from \"../../services/EngageBookingBugServices/LoginService\";\r\nimport * as bookingAuthActions from \"../BookingAuth/actions\";\r\n\r\nimport moduleService from \"../../services/ModulesServices\";\r\n\r\nexport function login(userName, password, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n let authToken = loginService.getToken();\r\n\r\n if (authToken) {\r\n const loginData = {\r\n authToken: loginService.getToken(),\r\n isLoggedIn: true\r\n };\r\n //console.log(\"token still valid, user is logged in\");\r\n dispatch({ type: types.LOGIN_SUCESSFUL, loginData });\r\n // dispatch(bookingAuthActions.login());\r\n dispatch(fetchConciergeDetails());\r\n\r\n } else {\r\n const loginData = await loginService.login(userName, password);\r\n dispatch({ type: types.LOGIN_SUCESSFUL, loginData });\r\n\r\n dispatch(bookingAuthActions.login());\r\n dispatch(fetchConciergeDetails());\r\n }\r\n callback(true);\r\n } catch (error) {\r\n callback && callback(false);\r\n dispatch({ type: types.LOGIN_FAIL, response: false });\r\n //console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function fetchConciergeDetails(callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n\r\n let details = await loginService.getConciergeDetails();\r\n dispatch({ type: types.CONCIERGE_AUTHORIZED_SUCCESSFULL, detail: details });\r\n\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n dispatch({ type: types.CONCIERGE_AUTHORIZED_FAIL, status: false });\r\n\r\n }\r\n }\r\n}\r\nexport function logout(callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n loginService.logout();\r\n bbugLoginService.logout();\r\n moduleService.clearServiceModule();\r\n const loginData = {\r\n isLoggedIn: false\r\n };\r\n console.log(\"logging out....\");\r\n dispatch({ type: types.LOGGED_OUT, loginData });\r\n console.log(\"logged out....\");\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\nexport function setEmail(value) {\r\n return async (dispatch, getState) => {\r\n try {\r\n dispatch({ type: types.EMAIL_CHANGED, value });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function verifyRequest(value, success = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const valid = await loginService.verifyResetRequest(value);\r\n if (valid)\r\n dispatch({\r\n type: types.PASWORD_REQUEST_VERIFY_SUCCESS,\r\n validRequest: valid\r\n });\r\n else if (!valid)\r\n dispatch({\r\n type: types.PASWORD_REQUEST_VERIFY_FAIL,\r\n validRequest: false\r\n });\r\n\r\n success(true);\r\n } catch (error) {\r\n success(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function resetpassword(data, success = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const result = await loginService.changePassword(data);\r\n dispatch({\r\n type: types.PASSWORD_RESET_SUCCESSFULL,\r\n passwordReset: result\r\n });\r\n success(true);\r\n } catch (error) {\r\n success(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function setPassword(value) {\r\n return async (dispatch, getState) => {\r\n try {\r\n dispatch({ type: types.PASSWORD_CHANGED, value });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function ResetPasswordEmail(value, success = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const data = {\r\n email: value,\r\n type: \"password-reset\",\r\n isforgotpassword: true\r\n };\r\n const resetPass = await loginService.requestResetPass(data);\r\n\r\n if (resetPass)\r\n dispatch({\r\n type: types.PASSWORD_RESET_REQUEST_SENT_SUCCESS,\r\n resetPass\r\n });\r\n else\r\n dispatch({\r\n type: types.PASWORD_REQUEST_VERIFY_SUCCESS,\r\n validRequest: false\r\n });\r\n\r\n success(true);\r\n } catch (error) {\r\n success(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function setRequestStatus(valid) {\r\n return { type: types.PASWORD_REQUEST_VERIFY_FAIL, validRequest: valid };\r\n}\r\n","//import _ from \"lodash\";\r\nimport * as types from \"./actionTypes\";\r\n//import conc_loginService from \"../../services/loginService\";\r\n//import loginService from \"../../services/BookingBugServices/LoginService\";\r\nimport loginService from \"../../services/EngageBookingBugServices/LoginService\";\r\nimport * as config from \"../../services/config\";\r\n\r\nexport function login() {\r\n return async (dispatch, getState) => {\r\n try {\r\n let authToken = loginService.getToken();\r\n let companyId = config.COMPANY_ID; //loginService.getProfile();\r\n\r\n\r\n if (authToken && companyId) {\r\n\r\n const loginData = {\r\n bbAuthToken: loginService.getToken(),\r\n isLoggedIn: true\r\n };\r\n\r\n console.log(\"user is was already lgoged in\");\r\n dispatch({ type: types.LOGIN_COMPLETED, loginData });\r\n } else {\r\n companyId = await loginService.getCompanyId();\r\n\r\n dispatch({ type: types.FETCH_COMPANY_ID_COMPLETED, companyId });\r\n\r\n const loginData = await loginService.login(\r\n config.BOOKING_BUG_USER_LOGIN,\r\n config.BOOKING_BUG_USER_PWD,\r\n config.BOOKING_BUG_USER_ID\r\n );\r\n\r\n dispatch({ type: types.LOGIN_COMPLETED, loginData });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport DropDownMenu from './DropDownMenu';\r\nimport { connect } from 'react-redux';\r\nimport { createBrowserHistory } from 'history';\r\nimport * as authActions from \"../../store/auth/actions\";\r\n\r\nimport autobind from 'react-autobind';\r\nimport {withRouter} from 'react-router-dom';\r\nimport '../../sass/components/HeaderNavigation/HeaderNavigation.css';\r\n\r\nconst StickyStatus = {\r\n\tStuck: 'stuck',\r\n\tUnStuck: 'unstuck'\r\n};\r\n\r\nlet history = createBrowserHistory();\r\n/**\r\n * The header component for the pages. It comes in two flavours, closed: which just shows the logo linking to home, and full which is the full display of links\r\n */\r\nclass HeaderNavigation extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tisMenuOn: true,\r\n\t\t\tlastscrollTop: 0,\r\n\t\t\tisStuck: false,\r\n\t\t\thambugerStatus: 'close'\r\n\t\t};\r\n\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tif (this.props.isLoggedIn === true) {\r\n\t\t\twindow.addEventListener('scroll', this.handleScroll);\r\n\t\t} else {\r\n\t\t\twindow.removeEventListener('scroll', this.handleScrol);\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\twindow.removeEventListener('scroll', this.handleScroll);\r\n\t}\r\n\r\n\thandleClick(e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tif (this.state.hambugerStatus === 'open') {\r\n\t\t\tthis.setState({\r\n\t\t\t\thambugerStatus: 'close'\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\thambugerStatus: 'open'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thandleScroll(e) {\r\n\t\tvar path = e.path || (e.composedPath && e.composedPath());\r\n\t\tlet page_window_offsetY = path && path[1].pageYOffset;\r\n\t\tlet page_document_scrollTop = path && path[0].scrollingElement.scrollTop;\r\n\t\tlet currenScrollTop = page_window_offsetY || page_document_scrollTop;\r\n\t\tthis.setState({\r\n\t\t\tlastscrollTop: currenScrollTop,\r\n\t\t\tisStuck: currenScrollTop > this.state.lastscrollTop ? true : false\r\n\t\t});\r\n\t}\r\n\r\n\thandleReset(val) {\r\n\t\tif (val) {\r\n\t\t\tthis.setState({\r\n\t\t\t\thambugerStatus: 'close'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thandleReturnHome() {\r\n\t\tconst { modules } = this.props;\r\n\t\t\t\r\n\t\tif (modules && modules.length > 0) {\r\n\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/',\r\n\t\t\t\tstate: { setModule: modules[0].title }\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.props.history.push('/');\r\n\t\t}\r\n\t}\r\n\r\n\thandleLogout(){\r\n\t\tthis.props.dispatch(authActions.logout());\r\n\t\thistory.push('/');\r\n\t}\r\n\trender() {\r\n\t\tconst { modules, isLoggedIn, setting } = this.props;\r\n\r\n\t\tconst logo = setting && setting.logo;\r\n\r\n\t\tconst header_style = {\r\n\t\t\tbackgroundImage: logo ? \"url('\" + logo + \"') \" : '',\r\n\t\t\tbackgroundSize: '70px'\r\n\t\t};\r\n\t\t//'this.mainBackgroundImage = \"url('\" + this.setting.mainBackgroundImage + \"')\";\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{isLoggedIn === false ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tLogout\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t this.handleReset(val)}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nHeaderNavigation.propTypes = {\r\n\t/** The module items for navigatin */\r\n\tmodules: PropTypes.array,\r\n\r\n\t/** User login status */\r\n\tisLoggedIn: PropTypes.bool.isRequired,\r\n\r\n\t/** The concierge settings object */\r\n\tsetting: PropTypes.object\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {};\r\n }\r\n \r\nexport default withRouter(connect(mapStateToProps)(HeaderNavigation));\r\n","import React, { Component } from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport \"../../sass/components/FooterNavigation/FooterNavigation.css\";\r\n\r\n/**\r\n * This is the footer component initially designed for use on the concierge desktop.\r\n * Eventually it'd be nice to have the links for this brought in through an array. The links are hardcoded for now\r\n * \r\n * \r\n * \r\n */\r\nclass FooterNavigation extends Component {\r\n render() {\r\n return (\r\n
    \r\n
    \r\n Privacy\r\n Terms & Conditions\r\n Cookies\r\n Feedback

    \r\n Designed and licensed by MRI Software\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default FooterNavigation;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n// eslint-disable-next-line\r\nimport Parsley from 'parsleyjs';\r\nimport Select from 'react-select';\r\nimport TimePicker from 'rc-time-picker';\r\nimport DatePicker from 'react-datepicker';\r\nimport moment from 'moment';\r\nimport _ from 'lodash';\r\n// eslint-disable-next-line\r\nimport * as $ from 'jquery';\r\nimport '../../sass/components/Input/react-select.css';\r\nimport '../../sass/components/Input/index.css';\r\nimport autoBind from \"react-autobind\";\r\n/**\r\n * Renders a input text element or select form element with standardised label format\r\n * value will be bound internally to state by default or optionally to something passed in from the parent component\r\n * accepts autoSuggestProps when this component is rendered inside of react-autosuggest renderInputComponent method\r\n */\r\n\r\nclass InputComponent extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\trender: true,\r\n\t\t\tvalue: _.isUndefined(this.props.value) ? '' : this.props.value,\r\n\t\t\ticon_change: 'ion-chevron-down'\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.parselyToReactSelect();\r\n\t}\r\n\r\n\tparselyToReactSelect() {\r\n\t\t// For react-select, parsely properties need adding manually to the source of truth\r\n\t\t// {\r\n\t\t\t\t\tthis.setState({ render: true }, () => {\r\n\t\t\t\t\t\tthis.parselyToReactSelect();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\thandlePaste(e){\r\n\t\tthis.props.handleChange(e);\r\n\t}\r\n\trender() {\r\n\t\tconst {\r\n\t\t\tlabel,\r\n\t\t\tname,\r\n\t\t\tplaceHolder,\r\n\t\t\t//value,\r\n\t\t\thandleChange,\r\n\t\t\ttype,\r\n\t\t\toptions,\r\n\t\t\tmaxLength,\r\n\t\t\thandleTimeChange,\r\n\t\t\tdefaultValue,\r\n\t\t\tdateValue,\r\n\t\t\tdefaultSelect,\r\n\t\t\thandleDateChange,\r\n\t\t\tdefaultMin\r\n\t\t} = this.props;\r\n\r\n\t\tlet { autoSuggestProps } = this.props;\r\n\r\n\t\tlet disabled;\r\n\r\n\t\tif (_.isUndefined(autoSuggestProps)) {\r\n\t\t\tautoSuggestProps = {};\r\n\t\t}\r\n\r\n\t\tif (this.state.render === true) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{((type) => {\r\n\t\t\t\t\t\t\t// Bind the value if it is present\r\n\t\t\t\t\t\t\tconst valueBind = !_.isUndefined(this.props.value) ? { value: this.props.value } : {};\r\n\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase 'select':\r\n\t\t\t\t\t\t\t\t\tdisabled =\r\n\t\t\t\t\t\t\t\t\t\t_.isUndefined(this.props.disabled) || this.props.disabled === false\r\n\t\t\t\t\t\t\t\t\t\t\t? false\r\n\t\t\t\t\t\t\t\t\t\t\t: true;\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn option.value.toString() === this.props.value.toString();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t\t) ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.value\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state.value\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({ value: value.value }, () => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst label_ = _.find(options, (option) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn option.value === value.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst label = _.isUndefined(label_) ? undefined : label_.label;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleChange({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget: { name: name, value: value.value, label: label }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tonClose={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon_change: 'ion-chevron-down'\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tonOpen={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon_change: 'ion-chevron-up'\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\t\tcase 'timePicker':\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\t\tcase 'datePicker':\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\t\tcase 'password':\r\n\t\t\t\t\t\t\t\tcase 'email':\r\n\t\t\t\t\t\t\t\tcase 'text':\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\tconst blurBind = _.isUndefined(this.props.onBlur)\r\n\t\t\t\t\t\t\t\t\t\t? {}\r\n\t\t\t\t\t\t\t\t\t\t: { onBlur: this.props.onBlur };\r\n\r\n\t\t\t\t\t\t\t\t\tdisabled =\r\n\t\t\t\t\t\t\t\t\t\t_.isUndefined(this.props.disabled) || this.props.disabled === false\r\n\t\t\t\t\t\t\t\t\t\t\t? false\r\n\t\t\t\t\t\t\t\t\t\t\t: 'disabled';\r\n\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.props.handleKeyPress) this.props.handleKeyPress(e);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\r\n\t\t\t\t\t\t\t\t\t\t\tmaxLength={maxLength}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\t\t\t\t\t\t{...this.props.parsley}\r\n\t\t\t\t\t\t\t\t\t\t\t{...valueBind}\r\n\t\t\t\t\t\t\t\t\t\t\t{...autoSuggestProps}\r\n\t\t\t\t\t\t\t\t\t\t\t{...blurBind}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={placeHolder} // has priority over one added in autoSuggestProps so comes after\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})(type)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t}\r\n}\r\nInputComponent.propTypes = {\r\n\t/* Optional function to run on blur of the input field */\r\n\tonBlur: PropTypes.func,\r\n\t/** If the input is disabled */\r\n\tdisabled: PropTypes.bool,\r\n\t/** If the input is uneditable and for display only */\r\n\tuneditable: PropTypes.bool,\r\n\t/** Optional value so the input can be bound to an item in the parents state */\r\n\tvalue: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\r\n\t/** Optional autosuggest properties when this component is rendered inside of react-autosuggest renderInputComponent method */\r\n\tautoSuggestProps: PropTypes.object,\r\n\t/** Label displayed above input

    \r\n\t\t\t\t{text} {(load && !_.isUndefined(load)? : '')}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nButton.propTypes = {\r\n\t/** The size of the button, small medium or large*/\r\n\tsize: PropTypes.string,\r\n\t/** Click function specification of the button */\r\n\thandleClick: PropTypes.func,\r\n\t/** For exceptions to the rule */\r\n\totherClass: PropTypes.string,\r\n\t/** Text displayed on the button*/\r\n\ttext: PropTypes.string,\r\n\t/** Any icons displayed on the button*/\r\n\ticon: PropTypes.string,\r\n\t/** Links the button connects to*/\r\n\tlink: PropTypes.string,\r\n\t/** If the button is disabled */\r\n\tisDisabled: PropTypes.bool,\r\n\t/** If the button needs an id */\r\n\tid: PropTypes.string\r\n};\r\n\r\nexport default Button;\r\n","import React, { Component } from \"react\";\r\nimport InputComponent from \"../../components/Input/Input\";\r\nimport Button from \"../../components/Button/Button\";\r\n//import { browserHistory, Link } from \"react-router\";\r\nimport { createBrowserHistory } from 'history';\r\nimport { Link } from 'react-router-dom';\r\nimport * as $ from \"jquery\";\r\nimport autoBind from \"react-autobind\";\r\nimport _ from \"lodash\";\r\n\r\nimport \"../../sass/components/LoginForm/index.css\";\r\n\r\n// import Button from \"../Button/Button\";\r\nlet history = createBrowserHistory();\r\nclass LoginForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n processing : undefined\r\n };\r\n\r\n\r\n this.loginFormValidation = null;\r\n this.loginFormUsed = null;\r\n\r\n this.state = {};\r\n\r\n autoBind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.addValidation();\r\n }\r\n\r\n // componentWillUnmount() {\r\n // // this.loginFormValidation.destroy();\r\n // }\r\n\r\n addValidation() {\r\n this.loginFormValidation = $(this.refs.validate).parsley({\r\n classHandler: function(el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n validate(fromSubmit = false, e = null) {\r\n this.loginFormValidation.validate({ force: true });\r\n\r\n const valid = this.loginFormValidation.isValid();\r\n\r\n this.setState({\r\n loginFormValid: valid,\r\n loginFormUsed: true\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.props.handleSubmit && this.props.handleSubmit(e);\r\n\r\n this.setState({\r\n loginFormUsed: false\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState){\r\n if(this.props.processing !== prevProps.processing){\r\n this.setState({\r\n processing : this.props.processing\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n document.body.style = 'background: #fff;';\r\n // Body override colour to be diff from other pages when login\r\n let buttonText = \"\";\r\n\r\n switch (this.props.mode) {\r\n case \"login\":\r\n buttonText = \"Login\";\r\n\r\n break;\r\n case \"newPwd\":\r\n buttonText = \"Save New Password\";\r\n\r\n break;\r\n case \"email\":\r\n buttonText = \"Reset Password\";\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n \r\n return (\r\n
    \r\n {\r\n e.key === \"Enter\" && this.validate(true, e);\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n onSubmit={e => {\r\n e.preventDefault();\r\n }}\r\n >\r\n \r\n {this.props.mode === \"login\" && (\r\n this.props.handleEmailChange(e)}\r\n parsley={{\r\n \"data-parsley-minlength\": \"2\",\r\n //\"data-parsley-maxlength\": \"100\",\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\": \"Enter a valid user name\"\r\n }}\r\n />\r\n )}\r\n\r\n {this.props.mode === \"email\" && (\r\n this.props.handleEmailChange(e)}\r\n parsley={{\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\": \"Enter your email\",\r\n \"data-parsley-type\": \"email\"\r\n }}\r\n />\r\n )}\r\n\r\n {this.props.mode !== \"email\" && (\r\n this.props.handlePasswordChange(e)}\r\n parsley={{\r\n \"data-parsley-minlength\": \"2\",\r\n \"data-parsley-maxlength\": \"15\",\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\": \"\"\r\n }}\r\n />\r\n )}\r\n {this.props.mode === \"newPwd\" && (\r\n
    \r\n {\r\n \r\n }\r\n
    \r\n )}\r\n
    \r\n\r\n \r\n
    \r\n {/*this.props.actionSuccess === null && this.state.loginFormUsed ? (\r\n

    \r\n Oops, wrong username or password\r\n

    \r\n ) : (\r\n \"\"\r\n )*/}\r\n\r\n {this.props.mode === \"login\" &&\r\n (_.isUndefined(this.props.actionSuccess) === false &&\r\n this.props.actionSuccess === false) && (\r\n

    \r\n Oops, wrong username or password\r\n

    \r\n )}\r\n\r\n {/* {this.props.mode === \"login\" &&\r\n (_.isUndefined(this.props.actionSuccess) === true &&\r\n this.props.actionSuccess === true) && (\r\n

    \r\n Login successful. Loading homepage…\r\n

    \r\n )} */}\r\n\r\n {this.props.mode === \"login\" &&\r\n (!_.isUndefined(this.props.actionSuccess) === false &&\r\n this.props.actionSuccess === true) && (\r\n

    \r\n Login successful. Loading homepage…\r\n

    \r\n )}\r\n\r\n {this.props.mode === \"email\" &&\r\n (!_.isUndefined(this.props.actionSuccess) === true &&\r\n this.props.actionSuccess === true) && (\r\n

    \r\n Please check your inbox\r\n

    \r\n )}\r\n\r\n {this.props.mode === \"email\" &&\r\n (!_.isUndefined(this.props.actionSuccess) &&\r\n this.props.actionSuccess === false) && (\r\n

    \r\n An email will be dispatched providing it is registered on\r\n our system\r\n

    \r\n )}\r\n
    \r\n \r\n
    \r\n this.validate(true, e)}\r\n text={buttonText}\r\n size=\"medium\"\r\n isDisabled={this.state.processing === true ? true : false}\r\n load={!_.isUndefined(this.state.processing) ? \"spinner\" : '' }\r\n />\r\n

    \r\n {\r\n history.push(\"/forgotpassword\");\r\n }}\r\n >\r\n Forgot password?\r\n \r\n

    \r\n
    \r\n {\r\n //
    \r\n // \r\n // this.props.handleEmailChange(e)}\r\n // />\r\n //
    \r\n //
    \r\n // \r\n // this.props.handlePasswordChange(e)}\r\n // />\r\n // {this.props.invalidPassword ? (\r\n // Invalid password\r\n // ) : null}\r\n //
    \r\n //
    \r\n // \r\n // LOGIN\r\n // \r\n //
    \r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LoginForm;\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\nconst initialState = Immutable({\r\n authToken: undefined,\r\n isLoggedIn: false,\r\n email: \"\",\r\n password: \"\",\r\n resetPass: \"\",\r\n validRequest: false,\r\n passwordReset: false,\r\n loginSuccess: null,\r\n concierge: \"\"\r\n});\r\n\r\nexport default function reducer(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.LOGIN_SUCESSFUL:\r\n return state.merge({\r\n authToken: action.loginData.authToken,\r\n isLoggedIn: true,\r\n loginSuccess: action.loginData.authToken ? true : false\r\n });\r\n case types.EMAIL_CHANGED:\r\n return state.merge({\r\n email: action.value\r\n });\r\n case types.PASSWORD_CHANGED:\r\n return state.merge({\r\n password: action.value\r\n });\r\n case types.LOGGED_OUT:\r\n return state.merge({\r\n isLoggedIn: false,\r\n loginSuccess: null\r\n });\r\n case types.PASSWORD_RESET_REQUEST_SENT_SUCCESS:\r\n return state.merge({\r\n resetPass: action.resetPass\r\n });\r\n case types.PASWORD_REQUEST_VERIFY_SUCCESS:\r\n return state.merge({\r\n validRequest: action.validRequest\r\n });\r\n case types.PASSWORD_RESET_SUCCESSFULL:\r\n return state.merge({\r\n passwordReset: action.passwordReset\r\n });\r\n case types.LOGIN_FAIL:\r\n return state.merge({\r\n loginSuccess: action.response\r\n });\r\n case types.CONCIERGE_AUTHORIZED_SUCCESSFULL:\r\n return state.merge({\r\n concierge: action.detail\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getAuthToken(state) {\r\n return state.auth.authToken;\r\n}\r\n\r\nexport function getIsLoggedIn(state) {\r\n return state.auth.isLoggedIn;\r\n}\r\n\r\nexport function getEmail(state) {\r\n return state.auth.email;\r\n}\r\n\r\nexport function getPassword(state) {\r\n return state.auth.password;\r\n}\r\n\r\nexport function passwordReset(state) {\r\n return state.auth.passwordReset;\r\n}\r\n\r\nexport function emailVerifyStatus(state) {\r\n return state.auth.validRequest;\r\n}\r\n\r\nexport function getLoginSuccess(state) {\r\n return state.auth.loginSuccess;\r\n}\r\n\r\nexport function getConciergeDetails(state) {\r\n return state.auth.concierge;\r\n}","export const CONCIERGE_SETTINGS_LOAD_SUCCESS = \"CONCIERGE_SETTINGS_LOAD_SUCCESS\";\r\nexport const CONCIERGE_SETTINGS_LOAD_FAIL = \"CONCIERGE_SETTINGS_LOAD_FAIL\";","import * as config from './config';\r\nimport authService from './loginService';\r\n\r\nclass ConciergSettingService {\r\n\tasync getGlobalSettings() {\r\n\t\tconst url = `${config.GLOBAL_SEETINGS_ENDPOINT}`;\r\n\t\t//const authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\t// requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getGlobalSettings service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getpaymentGatewaySettings() {\r\n\t\tconst url = config.PAYMENT_GATEWAY_SETTINGS_ENDPOINT;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`PaymentGatewaySettings service failed, ${response.statusText}, HTTP status ${response.status}`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getpaymentSignature(amount, currency, cartid) {\r\n\t\tconst url = config.PAYMENT_SIGNATURE_ENDPOINT;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\r\n\t\tconst response = await fetch(url + '?amount=' + amount + '¤cy=' + currency + '&cartid=' + cartid, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\r\n\t\t\tthrow new Error(`PaymentSignature service failed, ${response.statusText}, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getPaymentSignatureCrypt(gatewayType, data) {\r\n\t\tconst url = `${config.PAYMENT_CRYPT_ENDPOINT}${'?paymentGatewayType='}${gatewayType}`;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(data)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\r\n\t\t\tthrow new Error(\r\n\t\t\t\t`getPaymentSignatureCrypt service failed, ${response.statusText}, HTTP status ${response.status}`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport default new ConciergSettingService();\r\n","import * as types from \"./actionTypes\";\r\nimport settingServices from \"../../services/ConciergeSettingService\";\r\n\r\nexport function getGlobalSetting(callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const response = await settingServices.getGlobalSettings();\r\n dispatch({ type: types.CONCIERGE_SETTINGS_LOAD_SUCCESS, response });\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n };\r\n} ","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\n\r\nconst initialState = Immutable({\r\n setting: undefined,\r\n settings: []\r\n});\r\n\r\n\r\nexport default function settingsReducer(state = initialState, action = {}) {\r\n\r\n switch (action.type) {\r\n case types.CONCIERGE_SETTINGS_LOAD_SUCCESS:\r\n return state.merge({\r\n setting: action.response\r\n })\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n\r\n\r\nexport function loadGlobalSetting(state) {\r\n return state.settings.setting;\r\n}","import React, { Component } from \"react\";\r\nimport HeaderNavigation from \"../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../components/FooterNavigation/FooterNavigation\";\r\nimport LoginForm from \"../components/LoginForm/LoginForm\";\r\nimport { connect } from \"react-redux\";\r\nimport * as authActions from \"../store/auth/actions\";\r\nimport * as authSelectors from \"../store/auth/reducer\";\r\nimport * as moduleActions from \"../store/ServiceModules/actions\";\r\nimport * as settingActions from \"../store/ConciergeSetting/actions\";\r\nimport * as settingSelector from \"../store/ConciergeSetting/reducer\";\r\nimport autoBind from \"react-autobind\";\r\n\r\nimport {createBrowserHistory} from 'history';\r\nimport \"../sass/static/logout.css\";\r\n\r\nlet history = createBrowserHistory();\r\nclass LoginScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n error: false,\r\n loginSuccessfull: null,\r\n processing : undefined\r\n };\r\n autoBind(this);\r\n this.props.dispatch(settingActions.getGlobalSetting());\r\n\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.isLoggedIn === true) {\r\n history.push(\"/\");\r\n }\r\n }\r\n\r\n handleEmailChange(e) {\r\n this.props.dispatch(authActions.setEmail(e.target.value));\r\n }\r\n\r\n handlePasswordChange(e) {\r\n e.target.value.length < 8\r\n ? this.setState({ error: true })\r\n : this.setState({ error: false });\r\n\r\n this.props.dispatch(authActions.setPassword(e.target.value));\r\n }\r\n\r\n handleLogin(e) {\r\n e.preventDefault();\r\n this.setState({\r\n processing : true\r\n });\r\n this.props.dispatch(\r\n authActions.login(this.props.email, this.props.password, success => { \r\n if (success === true) { \r\n this.props.dispatch(moduleActions.getModules());\r\n this.props.dispatch(authActions.fetchConciergeDetails(success_ => {\r\n if (success_ === true) {\r\n \r\n }\r\n }));\r\n\r\n this.setState({\r\n processing : undefined\r\n });\r\n }else{\r\n \r\n this.setState({\r\n loginSuccessfull: success,\r\n processing : undefined\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n const { isLoggedIn, setting } = this.props;\r\n const mainBackground = setting && setting.mainBackgroundImage;\r\n \r\n\r\n const body_style = {\r\n backgroundImage: \"url('\" + mainBackground + \"')\",\r\n backgroundRepeatY: \"no-repeat\",\r\n backgroundSize: \"cover\"\r\n };\r\n\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n

    Concierge System

    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isLoggedIn: authSelectors.getIsLoggedIn(state),\r\n email: authSelectors.getEmail(state),\r\n password: authSelectors.getPassword(state),\r\n loginSuccess: authSelectors.getLoginSuccess(state),\r\n setting: settingSelector.loadGlobalSetting(state)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(LoginScreen);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport _ from \"lodash\";\r\nimport LoginScreen from \"../LoginScreen\";\r\nimport HeaderNavigation from \"../../components/HeaderNavigation/HeaderNavigation\";\r\nimport * as authSelectors from \"../../store/auth/reducer\";\r\nimport * as authActions from \"../../store/auth/actions\";\r\nimport { withRouter} from 'react-router-dom';\r\nimport { createBrowserHistory } from 'history';\r\nimport Config from '../../config';\r\n//Test loading modules, this would be moved to when use signs in\r\nimport * as moduleActions from \"../../store/ServiceModules/actions\";\r\nimport * as moduleSelectors from \"../../store/ServiceModules/reducer\";\r\nimport * as settingActions from \"../../store/ConciergeSetting/actions\";\r\nimport * as settingSelector from \"../../store/ConciergeSetting/reducer\";\r\nimport autoBind from \"react-autobind\";\r\nimport IdleTimer from 'react-idle-timer';\r\n\r\nvar PropTypes = require('prop-types');\r\nlet history = createBrowserHistory();\r\nconst timeOutInMinutes = !_.isUndefined(Config.userTimeOutInMinutes) ? Config.userTimeOutInMinutes : 20;\r\nclass AuthArea extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modules: [],\r\n settings: []\r\n };\r\n this.props.dispatch(settingActions.getGlobalSetting());\r\n this.props.dispatch(moduleActions.loadModules());\r\n\r\n this.idleTimer = null\r\n autoBind(this);\r\n }\r\n componentDidMount() {\r\n this.props.dispatch(authActions.login());\r\n this.props.dispatch(authActions.fetchConciergeDetails());\r\n }\r\n\r\n handlelogout() {\r\n this.props.dispatch(authActions.logout());\r\n }\r\n\r\n handleOnAction (event) {\r\n // console.log('user did something', event)\r\n }\r\n\r\n handleOnActive (event) {\r\n // console.log('user is active', event)\r\n // console.log('time remaining', this.idleTimer.getRemainingTime())\r\n }\r\n\r\n handleOnIdle (event) {\r\n //console.log('user is idle triger')\r\n this.props.dispatch(authActions.logout());\r\n\t\thistory.push('/');\r\n\r\n //console.log('last active', this.idleTimer.getLastActiveTime())\r\n }\r\n componentDidUpdate(prevProps, prevState){\r\n if (\r\n prevProps.modules !== this.props.modules &&\r\n !_.isUndefined(this.props.modules) && this.props.modules !== null\r\n ) {\r\n if (prevProps.modules && this.props.modules.length > 0)\r\n this.setState({\r\n modules: this.props.modules\r\n });\r\n }\r\n if (\r\n prevProps.setting !== this.props.setting &&\r\n !_.isUndefined(this.props.setting)\r\n ) {\r\n if (prevProps.setting && this.props.setting.length > 0)\r\n this.setState({\r\n settings: this.props.setting\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { modules, setting } = this.props;\r\n const mainBackground = setting && setting.mainBackgroundImage;\r\n const body_style = {\r\n backgroundImage: \"url('\" + mainBackground + \"')\",\r\n \"backgroundRepeatY\": \"no-repeat\",\r\n \"backgroundSize\": \"cover\"\r\n }\r\n\r\n \r\n if (this.props.isLoggedIn==true && modules !== null){\r\n //console.log(\"in here Auth area\", this.props);\r\n return (\r\n
    \r\n \r\n
    \r\n
    {this.props.children}
    \r\n
    \r\n { this.idleTimer = ref }}\r\n timeout={1000 * 60 * timeOutInMinutes}\r\n onActive={this.handleOnActive}\r\n onIdle={this.handleOnIdle}\r\n onAction={this.handleOnAction}\r\n debounce={250}\r\n />\r\n
    \r\n );\r\n }else{\r\n return \r\n }\r\n }\r\n}\r\n\r\nAuthArea.propTypes = {\r\n children: PropTypes.object.isRequired\r\n};\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n isLoggedIn: authSelectors.getIsLoggedIn(state),\r\n modules: moduleSelectors.loadModules(state),\r\n setting: settingSelector.loadGlobalSetting(state)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(AuthArea);\r\n","import { Component } from \"react\";\r\nimport * as authActions from \"../store/auth/actions\";\r\nimport { connect } from \"react-redux\";\r\n\r\nclass Logout extends Component {\r\nconstructor(props){\r\n super(props);\r\n\r\n this.props.dispatch(authActions.logout());\r\n}\r\n\r\n\r\n\r\n render() {\r\n \r\n return null;\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps)(Logout);\r\n","import React, { Component } from \"react\";\r\n\r\nimport autobind from \"react-autobind\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport _ from \"lodash\";\r\nimport \"../../sass/components/disabledModule/disabledModule.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\nconst sub_menu_styles = {\r\n menu_container: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flexDirection: \"row\",\r\n marginTop: 5 + \"px\",\r\n width: 100 + \"%\",\r\n height: 100 + \"px\"\r\n },\r\n menu_item: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: 100 + \"%\",\r\n height: 64 + \"px\",\r\n textAlign: \"center\",\r\n border: \"1px solid #abadb0\",\r\n flex: 1\r\n },\r\n non_landed_item: {\r\n backgroundColor: \"#ffffff\"\r\n }\r\n};\r\n\r\nclass ModuleMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isHover: [],\r\n portalType: \"\"\r\n };\r\n\r\n autobind(this);\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState){\r\n if (\r\n prevProps.modules !== this.props.modules &&\r\n !_.isUndefined(this.props.modules)\r\n ) {\r\n this.setState({\r\n isHover: _.map(this.props.modules, item => {\r\n return false;\r\n })\r\n });\r\n }\r\n }\r\n \r\n\r\n hoveredStyle(color, i) {\r\n if (this.state.isHover[i] === true) {\r\n return {\r\n backgroundColor: color,\r\n color: \"#ffffff\"\r\n };\r\n } else {\r\n return { backgroundColor: \"#ffffff\" };\r\n }\r\n }\r\n onMouseOver(i) {\r\n return () => {\r\n if (this.state.isHover[i] === true) {\r\n return this.state;\r\n }\r\n let isHover = [...this.state.isHover];\r\n isHover[i] = true;\r\n this.setState({ ...this.state, isHover });\r\n };\r\n }\r\n onMouseOut(i) {\r\n if (this.state.isHover[i] === false) {\r\n return this.state;\r\n }\r\n let isHover = [...this.state.isHover];\r\n isHover[i] = false;\r\n this.setState({ ...this.state, isHover: isHover });\r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n\r\n {\r\n _.map(this.props.modules, (item, index) => {\r\n return (\r\n this.onMouseOut(index)}\r\n style={_.assign(\r\n this.hoveredStyle(item.imageOverlayTextColour, index),\r\n this.props.selectedModule === item.title\r\n ? _.assign(\r\n { backgroundColor: item.imageOverlayTextColour },\r\n sub_menu_styles.menu_item\r\n )\r\n : sub_menu_styles.menu_item\r\n )}\r\n className={item.title + \"-button\"}\r\n onClick={e => this.props.handleModuleMenuSelected(item.title)}\r\n >\r\n {item.title}\r\n
    \r\n );\r\n })\r\n\r\n\r\n }\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nModuleMenu.propTypes = {\r\n modules: PropTypes.array.isRequired,\r\n handleModuleMenuSelected: PropTypes.func.isRequired,\r\n selectedModule: PropTypes.string\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n return {};\r\n}\r\nexport default connect(mapStateToProps)(ModuleMenu);\r\n","import React from \"react\";\r\n//var PropTypes = require('prop-types');\r\n\r\nfunction GridMenu(props) {\r\n return
    Grid menu boxes
    ;\r\n}\r\n\r\nexport default GridMenu;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport autobind from \"react-autobind\";\r\nimport { createBrowserHistory } from 'history';\r\n//import PageIcon from \"../../images/icon-parcel.png\";\r\nimport * as moduleSelectors from \"../../store/ServiceModules/reducer\";\r\nimport ModuleMenu from \"../ModuleMenu/ModuleMenu\";\r\nimport _ from \"lodash\";\r\nimport \"../../sass/components/FeatureArea/index.css\";\r\nimport history from '../../history';\r\nvar PropTypes = require('prop-types');\r\n\r\nconst browserHistory = createBrowserHistory();\r\nclass FeatureArea extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n let type = (this.props.type).replace(/\\b\\w/g, function (l) { return l.toUpperCase() })\r\n let overlayColor;\r\n let moduleImage;\r\n\r\n let currentModule = _.find(this.props.modules, o => o.title === type);\r\n moduleImage = currentModule && currentModule.imageUrl;\r\n\r\n this.state = {\r\n overlayColor: overlayColor,\r\n moduleImage: moduleImage,\r\n activeModule: currentModule\r\n };\r\n autobind(this);\r\n\r\n }\r\n\r\n // UNSAFE_componentWillMount() {\r\n // let type = (this.props.type).replace(/\\b\\w/g, function (l) { return l.toUpperCase() })\r\n // let overlayColor;\r\n // let moduleImage;\r\n\r\n // let currentModule = _.find(this.props.modules, o => o.title === type);\r\n // moduleImage = currentModule && currentModule.imageUrl;\r\n\r\n // this.setState({\r\n // overlayColor: overlayColor,\r\n // moduleImage: moduleImage,\r\n // activeModule: currentModule\r\n // });\r\n // }\r\n handleModuleMenuSelected(module) {\r\n\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: module }\r\n });\r\n \r\n window.scrollTo(0, 0)\r\n \r\n }\r\n render() {\r\n\r\n const {\r\n pageHeader,\r\n areaTitle,\r\n areaTagline,\r\n type,\r\n imageBG,\r\n overlayColor,\r\n landing,\r\n activeMenu,\r\n modules\r\n } = this.props;\r\n\r\n const { activeModule } = this.state;\r\n\r\n let currentModule = _.find(this.props.modules, o => o.title === type);\r\n let moduleImage = currentModule && currentModule.imageUrl;\r\n \r\n let bgStyle = {\r\n /* backgroundImage: `${\"url(\"} ${!imageBG ? this.state.moduleImage : imageBG} ${\")\"}`,*/\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center bottom\",\r\n /*backgroundColor: overlayColor,*/\r\n borderBottomColor : overlayColor\r\n };\r\n\r\n const landing_exception = {};\r\n \r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {areaTitle}

    \r\n
    \"\"
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {areaTagline}

    \r\n
    \r\n
    \r\n {activeMenu && activeMenu === true ?\r\n\r\n this.handleModuleMenuSelected(e)}\r\n selectedModule={activeModule && activeModule.title}\r\n />\r\n\r\n :\r\n \r\n {this.props.modules &&\r\n _.map(this.props.modules, (module, index) => {\r\n \r\n return (\r\n \r\n {module.title}\r\n
    \r\n );\r\n })}\r\n \r\n }\r\n\r\n
    \r\n {landing !== true ?\r\n
    \r\n

    {pageHeader}

    \r\n
    \r\n : \"\"}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nFeatureArea.propType = {\r\n\r\n type: PropTypes.string,\r\n areaTitle: PropTypes.string,\r\n areaTagline: PropTypes.string,\r\n pageHeader: PropTypes.string,\r\n imageBG: PropTypes.string,\r\n overlayColor: PropTypes.string,\r\n landing: PropTypes.bool\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n modules: moduleSelectors.loadModules(state)\r\n };\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps)(FeatureArea));\r\n","export const PARCEL_RECORD_LOADED_SUCCESS = 'PARCEL_RECORD_LOADED_SUCCESS';\r\nexport const PARCELS_LOADED_SUCCESS = 'PARCELS_LOADED_SUCCESS';\r\nexport const PARCELS_LOADED_SUCCESS_MANAGE = 'PARCELS_LOADED_SUCCESS_MANAGE';\r\nexport const PARCEL_LOCATIONS_LOADED_SUCCESS = 'PARCEL_LOCATIONS_LOADED_SUCCESS';\r\nexport const PARCEL_STATUS_REASONS_LOADED_SUCCESS = 'PARCEL_STATUS_REASONS_LOADED_SUCCESS';\r\n\r\nexport const PARCEL_ADD_TO_CHECKIN_QUEUE = 'PARCEL_ADD_TO_CHECKIN_QUEUE';\r\nexport const PARCEL_REMOVE_FROM_CHECKIN_QUEUE = 'PARCEL_REMOVE_FROM_CHECKIN_QUEUE';\r\nexport const PARCEL_EDIT_IN_CHECKIN_QUEUE = 'PARCEL_EDIT_IN_CHECKIN_QUEUE';\r\nexport const PARCELS_ADDED_SUCCESS = 'PARCELS_ADDED_SUCCESS';\r\nexport const PARCELS_RETURNED_SUCCESS = 'PARCELS_RETURNED_SUCCESS';\r\n\r\nexport const PARCELS_STATUS_CODES_SUCCESS = 'PARCELS_STATUS_CODES_SUCCESS';\r\nexport const PARCEL_RETURN_REASON_CODES_LOAD_SUCCESS = 'PARCEL_RETURN_REASON_CODES_LOAD_SUCCESS';\r\n\r\nexport const PARCEL_SET_CHECKOUT_QUEUE = 'PARCEL_SET_CHECKOUT_QUEUE';\r\nexport const PARCELS_CHECKOUT_SUCCESS = 'PARCELS_CHECKOUT_SUCCESS';\r\nexport const PARCEL_CHECKOUT_SUCCESS = 'PARCEL_CHECKOUT_SUCCESS';\r\nexport const NOTIFY_PARCEL_CHECKED_IN_SUCCESS = 'NOTIFY_PARCEL_CHECKED_IN_SUCCESS';\r\nexport const NOTIFY_PARCEL_CHECKED_IN_FAIL = 'NOTIFY_PARCEL_CHECKED_IN_FAIL';\r\nexport const NOTIFY_PARCEL_COLLECTED_SUCCESS = 'NOTIFY_PARCEL_COLLECTED_SUCCESS';\r\nexport const NOTIFY_PARCEL_COLLECTED_FAIL = 'NOTIFY_PARCEL_COLLECTED_FAIL';\r\nexport const NOTIFY_PARCELS_CHECKED_IN_SUCCESS = 'NOTIFY_PARCELS_CHECKED_IN_SUCCESS';\r\nexport const NOTIFY_PARCELS_CHECKED_IN_FAIL = 'NOTIFY_PARCELS_CHECKED_IN_FAIL';\r\nexport const NOTIFY_PARCELS_COLLECTED_SUCCESS = 'NOTIFY_PARCELS_COLLECTED_SUCCESS';\r\nexport const NOTIFY_PARCELS_COLLECTED_FAIL = 'NOTIFY_PARCELS_COLLECTED_FAIL';\r\nexport const PARCELS_EXPECTED_ARRIVED_BY_DATE_LOADED_SUCCESSFULL =\r\n\t'PARCELS_EXPECTED_ARRIVED_BY_DATE_LOADED_SUCCESSFULL';\r\nexport const PARCELS_EXPECTED_ARRIVED_BY_DATE_LOADED_FAIL = 'PARCELS_EXPECTED_ARRIVED_BY_DATE_LOADED_FAIL';\r\nexport const REGISTER_EXPECTED_PARCEL_LIST_SUCCESSFULL = 'REGISTER_EXPECTED_PARCEL_LIST_SUCCESSFULL';\r\nexport const REGISTER_EXPECTED_PARCEL_LIST_FAIL = 'REGISTER_EXPECTED_PARCEL_LIST_FAIL';\r\nexport const PARCEL_SETTINGS_LOAD_SUCCESSFULL = 'PARCEL_SETTINGS_LOAD_SUCCESSFULL';\r\nexport const PARCEL_SETTINGS_LOAD_FAIL = 'PARCEL_SETTINGS_LOAD_FAIL';\r\nexport const PARCEL_DUE_LOADED_SUCCESSFULLY = 'PARCEL_DUE_LOADED_SUCCESSFULLY';\r\nexport const PARCEL_EXPECTED_LOAD_SUCCESSFULLY = 'PARCEL_EXPECTED_LOAD_SUCCESSFULLY';\r\nexport const REGISTER_PARCEL_QUEUE_SUCCESSFULLY = 'REGISTER_PARCEL_QUEUE_SUCCESSFULLY';\r\nexport const PARCEL_RECORD_UPDATED_SUCCESSFULLY = 'PARCEL_RECORD_UPDATED_SUCCESSFULLY';\r\nexport const PARCEL_RECORD_UPDATED_FAIL = 'PARCEL_RECORD_UPDATED_FAIL';\r\n","import * as config from './config';\r\nimport authService from './loginService';\r\n\r\nclass ParcelServices {\r\n\tasync getParcel(id) {\r\n\t\tconst url = `${config.PARCEL_RECORD_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\r\n\t\tconst response = await fetch(url + '?id=' + id, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getMeetingById service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\tasync getLocations() {\r\n\t\tconst url = `${config.PARCEL_LOCATIONS_ENDPOINT}`;\r\n\t\t//const authToken = authService.getToken();\r\n\t\t//console.log(authToken);\r\n\t\tvar requestHeader = new Headers();\r\n\t\t//requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\r\n\t\t\tthrow new Error(`getParcel service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\tasync getStatusReasons() {\r\n\t\t// Uncomment when reasons endpoint ready\r\n\r\n\t\t/*const url = `${config.PARCEL_STATUS_REASONS_ENDPOINT}`;\r\n //const authToken = authService.getToken();\r\n //console.log(authToken);\r\n var requestHeader = new Headers();\r\n //requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) { \r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getParcel service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();*/\r\n\r\n\t\tconst result = [\r\n\t\t\t{ value: 1, label: 'Dont want' },\r\n\t\t\t{ value: 2, label: 'Wrong Item' },\r\n\t\t\t{ value: 3, label: 'Wrong Address' }\r\n\t\t];\r\n\r\n\t\treturn result;\r\n\t}\r\n\tasync getParcels() {\r\n\t\tconst url = `${config.ALL_PARCELS_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\t\t//console.log(authToken);\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getParcel service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getStatusCodes() {\r\n\t\tconst url = `${config.PARCELS_STATUS_CODES_SUCCESS_ENDPOINT}`;\r\n\t\t//const authToken = authService.getToken();\r\n\t\t//console.log(authToken);\r\n\t\tvar requestHeader = new Headers();\r\n\t\t//requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getParcel service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getReturnReasonCodes() {\r\n\t\tconst url = `${config.PARCEL_RETURN_REASON_CODES_ENDPOINT}`;\r\n\t\t//const authToken = authService.getToken();\r\n\t\t//console.log(authToken);\r\n\t\tvar requestHeader = new Headers();\r\n\t\t//requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getParcel service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync addParcels(parcelData) {\r\n\t\tconst url = `${config.PARCEL_ADD_ENDPOINT}`;\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelData)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`addParcels service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync returnParcel(parcelData) {\r\n\t\tconst url = `${config.PARCEL_RETURN_ENDPOINT}`;\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url + '?id=' + parcelData.id + '&statusReasonId=' + parcelData.statusReasonId, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelData)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`return service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync checkoutParcels(parcelData) {\r\n\t\tconst url = `${config.PARCEL_CHECKOUT_ENDPOINT}`;\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelData)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`checkoutParcels service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync checkoutParcel(parcelData) {\r\n\t\tconst url = `${config.PARCEL_CHECKOUT_ENDPOINT}`;\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'PUT',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelData)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`checkoutParcel service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\t//send notification on parcel checked in by concierge\r\n\tasync notifyCheckin(parcelData) {\r\n\t\tconst url = `${config.NOTIFY_PARCEL_CHECKED_IN}`;\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelData)\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`notifyCheckin service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t//send notification on parcel collected by resident\r\n\tasync notifyCollected(parcelData) {\r\n\t\tconst url = `${config.NOTIFY_PARCEL_COLLECTED}`;\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelData)\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`checkoutParcels service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync notifyCheckinParcels(parcelsData) {\r\n\t\tconst url = `${config.NOTIFY_PARCELS_CHECKED_IN}`;\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelsData)\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`notifyCheckinParcels service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync notifyCollectedParcels(parcelsData) {\r\n\t\tconst url = `${config.NOTIFY_PARCELS_COLLECTED}`;\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelsData)\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`notifyCollectedParcels service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getExpectedArrivedByDateInterval(dateFrom, dateTo) {\r\n\t\tconst url = `${config.PARCEL_EXPECTEDARRIVEDBYDATE}`;\r\n\r\n\t\t// var requestHeader = new Headers();\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET'\r\n\t\t\t//headers: requestHeader,\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getExpectedArrivedByDateInterval service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync registerExpectedParcelsList(parcelList) {\r\n\t\tconst url = `${config.PARCEL_REGISTEREXPECTEDLIST}`;\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelList)\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`registerExpectedParcelsList service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getParcelSettings() {\r\n\t\tconst url = `${config.PARCEL_SETTINGS}`;\r\n\r\n\t\t// var requestHeader = new Headers();\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET'\r\n\t\t\t// headers: requestHeader,\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getParcelSettings service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync getPacrcelsByStatus(status) {\r\n\t\tconst url = `${config.PARCELS_BY_STATUS}${'?status='}${status}`;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getPacrcelsByStatus service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync updateParcelRecord(record) {\r\n\t\tconst url = `${config.UPDATE_PARCEL}`;\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'PUT',\r\n\t\t\tbody: JSON.stringify(record),\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`updateParcelRecord service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync notifyByStatus(parcelList) {\r\n\t\tconst url = `${config.PARCEL_NOTIFY}`;\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(parcelList)\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t//config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`notifyByStatus service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport default new ParcelServices();\r\n","import * as types from './actionTypes';\r\nimport Immutable from 'seamless-immutable';\r\nimport _ from 'lodash';\r\n\r\nconst initialState = Immutable({\r\n\tparcel: undefined,\r\n\tparcels: [],\r\n\tManageParcels: [],\r\n\tparcelDue: [],\r\n\tparcelsExpected: [],\r\n\tnewParcelQueue: [],\r\n\tcheckOutQueue: [],\r\n\tregisteredParcels: [],\r\n\tregisteredParcelsQueue: [],\r\n\tlocations: [],\r\n\treturnStatusReasons: [],\r\n\tstatusCodes: [],\r\n\treturnReasonCodes: [],\r\n\tparcelsCheckedIn: [],\r\n\tcheckinNotified: false,\r\n\tcheckoutNotified: false,\r\n\tparcelSettings: undefined\r\n});\r\n\r\nexport default function parcelReducer(state = initialState, action = {}) {\r\n\tswitch (action.type) {\r\n\t\tcase types.PARCELS_LOADED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcels: action.parcels\r\n\t\t\t});\r\n\t\tcase types.PARCELS_LOADED_SUCCESS_MANAGE:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tManageParcels: action.parcels\r\n\t\t\t});\r\n\t\tcase types.PARCEL_LOCATIONS_LOADED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tlocations: action.locations\r\n\t\t\t});\r\n\t\tcase types.PARCEL_STATUS_REASONS_LOADED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\treturnStatusReasons: action.reasons\r\n\t\t\t});\r\n\t\tcase types.PARCEL_RECORD_LOADED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcel: action.parcel\r\n\t\t\t});\r\n\r\n\t\tcase types.PARCEL_ADD_TO_CHECKIN_QUEUE:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tnewParcelQueue: [ ...state.newParcelQueue, ...action.parcels ]\r\n\t\t\t});\r\n\r\n\t\tcase types.PARCEL_SET_CHECKOUT_QUEUE:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tcheckOutQueue: action.parcels\r\n\t\t\t});\r\n\r\n\t\tcase types.PARCEL_REMOVE_FROM_CHECKIN_QUEUE:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tnewParcelQueue: state.newParcelQueue.filter((parcel) => {\r\n\t\t\t\t\treturn action.index === '*' ? false : parcel.index !== action.index;\r\n\t\t\t\t})\r\n\t\t\t});\r\n\r\n\t\tcase types.PARCEL_EDIT_IN_CHECKIN_QUEUE:\r\n\t\t\t// https://stackoverflow.com/questions/43792457/\r\n\t\t\treturn state.merge({\r\n\t\t\t\tnewParcelQueue: state.newParcelQueue.map((parcel) => {\r\n\t\t\t\t\tif (parcel.index === action.parcel.index) {\r\n\t\t\t\t\t\t// Create new parcel\r\n\t\t\t\t\t\treturn Object.assign({}, parcel, action.parcel);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn parcel;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t});\r\n\r\n\t\tcase types.PARCELS_ADDED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcels: [ ...state.parcels, ...action.addParcelResponse ],\r\n\t\t\t\tparcelsCheckedIn: action.addParcelResponse\r\n\t\t\t});\r\n\r\n\t\tcase types.PARCELS_STATUS_CODES_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tstatusCodes: action.statusCodesResponse\r\n\t\t\t});\r\n\r\n\t\tcase types.PARCEL_RETURN_REASON_CODES_LOAD_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\treturnReasonCodes: action.reasonCodesResponse\r\n\t\t\t});\r\n\r\n\t\tcase types.NOTIFY_PARCELS_CHECKED_IN_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tcheckinNotified: action.notified\r\n\t\t\t});\r\n\t\tcase types.NOTIFY_PARCELS_COLLECTED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tcheckoutNotified: action.notified\r\n\t\t\t});\r\n\t\tcase types.PARCELS_EXPECTED_ARRIVED_BY_DATE_LOADED_SUCCESSFULL:\r\n\t\t\tlet parcelList = _.map(state.parcels, (item) => {\r\n\t\t\t\tlet parcel = _.find(action.list, { id: item.id });\r\n\t\t\t\treturn !_.isUndefined(parcel) && parcel.id === item.id ? parcel : item;\r\n\t\t\t});\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcels: parcelList,\r\n\t\t\t\tparcelsCheckedIn: action.list\r\n\t\t\t});\r\n\t\tcase types.PARCEL_SETTINGS_LOAD_SUCCESSFULL:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcelSettings: action.settings\r\n\t\t\t});\r\n\t\tcase types.PARCEL_DUE_LOADED_SUCCESSFULLY:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcelDue: action.data\r\n\t\t\t});\r\n\t\tcase types.PARCEL_EXPECTED_LOAD_SUCCESSFULLY:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcelsExpected: action.data\r\n\t\t\t});\r\n\t\tcase types.REGISTER_EXPECTED_PARCEL_LIST_SUCCESSFULL:\r\n\t\t\tlet filteredParcelList = _.filter(\r\n\t\t\t\t_.map(state.parcels, (item) => {\r\n\t\t\t\t\tlet parcel = _.find(action.parcels, { id: item.id });\r\n\t\t\t\t\tif (!_.isUndefined(parcel)) {\r\n\t\t\t\t\t\treturn undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}),\r\n\t\t\t\t(o) => !_.isUndefined(o)\r\n\t\t\t);\r\n\t\t\treturn state.merge({\r\n\t\t\t\tregisteredParcels: action.parcels,\r\n\t\t\t\tparcels: filteredParcelList\r\n\t\t\t});\r\n\t\tcase types.PARCEL_RECORD_UPDATED_SUCCESSFULLY:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcel: action.data\r\n\t\t\t});\r\n\t\tcase types.PARCEL_CHECKOUT_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcel: action.response\r\n\t\t\t});\r\n\t\tcase types.PARCELS_CHECKOUT_SUCCESS:\r\n\t\t\tlet list_ = _.filter(\r\n\t\t\t\t_.map(state.parcelDue, (item) => {\r\n\t\t\t\t\tlet parcel = _.find(action.addCheckoutResponse, { id: item.id });\r\n\t\t\t\t\treturn _.isUndefined(parcel) ? item : undefined;\r\n\t\t\t\t}),\r\n\t\t\t\t(data) => !_.isUndefined(data)\r\n\t\t\t);\r\n\r\n\t\t\tlet list = _.filter(\r\n\t\t\t\t_.map(state.parcels, (item) => {\r\n\t\t\t\t\tlet parcel_ = _.find(action.addCheckoutResponse, { id: item.id });\r\n\t\t\t\t\treturn _.isUndefined(parcel_) ? item : undefined;\r\n\t\t\t\t}),\r\n\t\t\t\t(data_) => !_.isUndefined(data_)\r\n\t\t\t);\r\n\r\n\t\t\treturn state.merge({\r\n\t\t\t\tparcelDue: list_,\r\n\t\t\t\tparcels: list\r\n\t\t\t});\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n\r\nexport function getStatusCodes(state) {\r\n\treturn state.parcels.statusCodes;\r\n}\r\n\r\nexport function getReturnResonCodes(state) {\r\n\treturn state.parcels.returnReasonCodes;\r\n}\r\n\r\nexport function getParcels(state, status = '*') {\r\n\t// if (status === \"*\") {\r\n\t// return state.parcels.parcels;\r\n\t// } else {\r\n\t// const statusObject = state.parcels.statusCodes.find(code => {\r\n\t// return code.status === status;\r\n\t// });\r\n\r\n\t// if (_.isUndefined(statusObject)) {\r\n\t// return state.parcels.parcels;\r\n\t// } else {\r\n\t// return state.parcels.parcels.filter(parcel => {\r\n\t// return parcel.statusId === statusObject.id;\r\n\t// });\r\n\t// }\r\n\t// }\r\n\r\n\treturn state.parcels.parcels;\r\n}\r\n\r\nexport function getManageParcels(state, status = '*') {\r\n\treturn state.parcels.ManageParcels;\r\n}\r\n\r\nexport function getCheckedInParcels(state) {\r\n\t// const statusObject = state.parcels.statusCodes.find(code => {\r\n\t// return code.status === \"checkedin\";\r\n\r\n\t// });\r\n\r\n\t// const statusObject = _.find(state.parcels.statusCodes, (code) => {\r\n\t// \treturn code.status === 'checkedin';\r\n\t// });\r\n\r\n\t// const statusObject_due = _.find(state.parcels.statusCodes, (o) => {\r\n\t// \treturn o.status === 'due';\r\n\t// });\r\n\r\n\t// if (_.isUndefined(statusObject) || _.isUndefined(statusObject_due)) {\r\n\t// \treturn state.parcels.parcels;\r\n\t// }\r\n\r\n\t// return state.parcels.parcels.filter((parcel) => {\r\n\t// \treturn parcel.statusId === statusObject.id || parcel.statusId === statusObject_due.id;\r\n\t// });\r\n\r\n\treturn state.parcels.parcelsCheckedIn;\r\n}\r\n\r\nexport function getCheckedOutParcels(state) {\r\n\t// const statusObject = state.parcels.statusCodes.find(code => {\r\n\t// return code.status === \"collected\";\r\n\t// });\r\n\tconst statusObject = _.find(state.parcels.statusCodes, (code) => {\r\n\t\treturn code.status === 'collected';\r\n\t});\r\n\tif (_.isUndefined(statusObject)) {\r\n\t\treturn state.parcels.parcels;\r\n\t}\r\n\r\n\treturn state.parcels.parcels.filter((parcel) => {\r\n\t\treturn parcel.statusId === statusObject.id;\r\n\t});\r\n}\r\n\r\nexport function getDueParcels(state) {\r\n\t// const statusObject = state.parcels.statusCodes.find(code => {\r\n\t// return code.status === \"due\";\r\n\t// });\r\n\tconst statusObject = _.find(state.parcels.statusCodes, (code) => {\r\n\t\treturn code.status === 'due';\r\n\t});\r\n\tif (_.isUndefined(statusObject)) {\r\n\t\treturn state.parcels.parcels;\r\n\t}\r\n\r\n\treturn state.parcels.parcels.filter((parcel) => {\r\n\t\treturn parcel.statusId === statusObject.id;\r\n\t});\r\n}\r\n\r\nexport function getReturnedParcels(state) {\r\n\t// const statusObject = state.parcels.statusCodes.find(code => {\r\n\t// return code.status === \"returned\";\r\n\t// });\r\n\tconst statusObject = _.find(state.parcels.statusCodes, (code) => {\r\n\t\treturn code.status === 'returned';\r\n\t});\r\n\tif (_.isUndefined(statusObject)) {\r\n\t\treturn state.parcels.parcels;\r\n\t}\r\n\r\n\treturn state.parcels.parcels.filter((parcel) => {\r\n\t\treturn parcel.statusId === statusObject.id;\r\n\t});\r\n}\r\n\r\nexport function getCheckInQueue(state) {\r\n\treturn state.parcels.newParcelQueue;\r\n}\r\n\r\nexport function getCheckoutQueue(state) {\r\n\treturn state.parcels.checkOutQueue;\r\n}\r\n\r\nexport function getParcel(state) {\r\n\treturn state.parcels.parcel;\r\n}\r\nexport function getParcelLocations(state) {\r\n\treturn state.parcels.locations;\r\n}\r\nexport function getReturnStatusReasons(state) {\r\n\treturn state.parcels.returnStatusReasons;\r\n}\r\n\r\nexport function getParcelsCheckedIn(state) {\r\n\treturn state.parcels.parcelsCheckedIn;\r\n}\r\n\r\nexport function getParcelCheckinNotified(state) {\r\n\treturn state.parcels.checkinNotified;\r\n}\r\nexport function getParcelCheckoutNotified(state) {\r\n\treturn state.parcels.checkoutNotified;\r\n}\r\nexport function getParcelSettings(state) {\r\n\treturn state.parcels.parcelSettings;\r\n}\r\nexport function getParcelDue(state) {\r\n\treturn state.parcels.parcelDue;\r\n}\r\n\r\nexport function getParcelExpected(state) {\r\n\treturn state.parcels.parcelsExpected;\r\n}\r\nexport function getRegisteredParcels(state) {\r\n\treturn state.parcels.registeredParcels;\r\n}\r\n","import * as config from '../services/config';\r\n\r\nexport const PortalTypes = config.portalTypes;\r\n\r\n//visitor system status types\r\nexport const VisitorStatuses = {\r\n\tCheckedIn: 'checkedin',\r\n\tCheckedOut: 'checkedout',\r\n\tNotified: 'notified'\r\n};\r\n\r\n//parcel system status types\r\nexport const ParcelStatuses = {\r\n\tCheckedIn: 'checkedin',\r\n\tDue: 'due',\r\n\tCollected: 'collected',\r\n\tReturned: 'returned',\r\n\tExpected: 'expected',\r\n\tDiscarded: 'discarded'\r\n};\r\n\r\n//parcel system reason types\r\nexport const ParcelReasons = {\r\n\tDamaged: 'Damaged',\r\n\tForwardedToNewAddress: 'Forwarded to new address',\r\n\tRecipientMovedOut: 'Recipient moved out',\r\n\tUncollected: 'Uncollected',\r\n\tOther: 'Other'\r\n};\r\n\r\n//Bookings System config\r\nexport const ServicesUnit = {\r\n\tMinute: 'minute',\r\n\tDay: 'day'\r\n};\r\n\r\n//Component Auto suggest config\r\nexport const SelectionMethod = {\r\n\tDown: 'down',\r\n\tUp: 'up',\r\n\tEscape: 'escape',\r\n\tClick: 'click',\r\n\tType: 'type'\r\n};\r\n","import * as types from './actionTypes';\r\nimport ParcelServices from '../../services/ParcelServices';\r\nimport * as parcelSelector from './reducer';\r\nimport * as configHelper from '../../helpers/configHelper';\r\nimport _ from 'lodash';\r\nexport function getAllParcels(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst parcels = await ParcelServices.getParcels();\r\n\r\n\t\t\tdispatch({ type: types.PARCELS_LOADED_SUCCESS, parcels });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\t//console.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getAllParcelsonManage(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst parcels = await ParcelServices.getParcels();\r\n\r\n\t\t\tdispatch({ type: types.PARCELS_LOADED_SUCCESS_MANAGE, parcels });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\t//console.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getParcelRecord(id) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst parcel = await ParcelServices.getParcel(id);\r\n\t\t\tdispatch({ type: types.PARCEL_RECORD_LOADED_SUCCESS, parcel });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getAllLocations() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst locations = await ParcelServices.getLocations();\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCEL_LOCATIONS_LOADED_SUCCESS,\r\n\t\t\t\tlocations\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getAllStatusReasons() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst reasons = await ParcelServices.getStatusReasons();\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCEL_STATUS_REASONS_LOADED_SUCCESS,\r\n\t\t\t\treasons\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function addParcelsToQueue(parcelList) {\r\n\treturn {\r\n\t\ttype: types.PARCEL_ADD_TO_CHECKIN_QUEUE,\r\n\t\tparcels: parcelList\r\n\t};\r\n}\r\n\r\nexport function setParcelsCheckoutQueue(parcelList) {\r\n\treturn {\r\n\t\ttype: types.PARCEL_SET_CHECKOUT_QUEUE,\r\n\t\tparcels: parcelList\r\n\t};\r\n}\r\n\r\nexport function removeParcelFromQueue(index) {\r\n\treturn {\r\n\t\ttype: types.PARCEL_REMOVE_FROM_CHECKIN_QUEUE,\r\n\t\tindex: index\r\n\t};\r\n}\r\n\r\nexport function editParcelInQueue(parcel) {\r\n\treturn {\r\n\t\ttype: types.PARCEL_EDIT_IN_CHECKIN_QUEUE,\r\n\t\tparcel: parcel\r\n\t};\r\n}\r\n\r\nexport function getStatusCodes(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst statusCodesResponse = await ParcelServices.getStatusCodes();\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCELS_STATUS_CODES_SUCCESS,\r\n\t\t\t\tstatusCodesResponse\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getReturnReasonCodes(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst reasonCodesResponse = await ParcelServices.getReturnReasonCodes();\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCEL_RETURN_REASON_CODES_LOAD_SUCCESS,\r\n\t\t\t\treasonCodesResponse\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function addParcels(parcelsData, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst addParcelResponse = await ParcelServices.addParcels(parcelsData);\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCELS_ADDED_SUCCESS,\r\n\t\t\t\taddParcelResponse: addParcelResponse\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function returnParcel(parcelData, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst returnParcelResponse = await ParcelServices.returnParcel(parcelData);\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCELS_RETURNED_SUCCESS,\r\n\t\t\t\treturnParcelResponse\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function addParcelsToCheckout(idList, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst addCheckoutResponse = await ParcelServices.checkoutParcels(idList);\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCELS_CHECKOUT_SUCCESS,\r\n\t\t\t\taddCheckoutResponse\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\nexport function checkoutParcel(parcel, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst result = await ParcelServices.checkoutParcel(parcel);\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.PARCEL_CHECKOUT_SUCCESS,\r\n\t\t\t\tresponse: result\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function notifyCheckin() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst parcelData = parcelSelector.getParcelsCheckedIn(getState());\r\n\r\n\t\t\tif (!_.isUndefined(parcelData)) {\r\n\t\t\t\tfor (let i = 0; i < parcelData.length; i++) {\r\n\t\t\t\t\tconst response = await ParcelServices.notifyCheckin(parcelData[i]);\r\n\t\t\t\t\tdispatch({ type: types.NOTIFY_PARCEL_CHECKED_IN_SUCCESS, response });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tdispatch({ type: types.NOTIFY_PARCEL_CHECKED_IN_FAIL, error });\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function notifyCollected() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst parcelData = parcelSelector.getCheckoutQueue(getState());\r\n\r\n\t\t\tif (!_.isUndefined(parcelData)) {\r\n\t\t\t\tfor (let i = 0; i < parcelData.length; i++) {\r\n\t\t\t\t\tconst response = await ParcelServices.notifyCollected(parcelData[i]);\r\n\t\t\t\t\tdispatch({ type: types.NOTIFY_PARCEL_COLLECTED_SUCCESS, response });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tdispatch({ type: types.NOTIFY_PARCEL_COLLECTED_FAIL, error });\r\n\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function notifyCheckinParcels(parcels, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst response = await ParcelServices.notifyCheckinParcels(parcels);\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.NOTIFY_PARCELS_CHECKED_IN_SUCCESS,\r\n\t\t\t\tnotified: response\r\n\t\t\t});\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tdispatch({ type: types.NOTIFY_PARCELS_CHECKED_IN_FAIL, error });\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function notifyCollectedParcels(parcelData, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst response = await ParcelServices.notifyCollectedParcels(parcelData);\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.NOTIFY_PARCELS_COLLECTED_SUCCESS,\r\n\t\t\t\tnotified: response\r\n\t\t\t});\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tdispatch({ type: types.NOTIFY_PARCEL_COLLECTED_FAIL, error });\r\n\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function notifyParcels(parcelData, status, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar response = await ParcelServices.notifyByStatus(parcelData, status);\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\nexport function getParcelExpectedArrivedByDate(dateFrom, dateTo, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar parcels = await ParcelServices.getExpectedArrivedByDateInterval(dateFrom, dateTo);\r\n\r\n\t\t\tdispatch({ type: types.PARCELS_EXPECTED_ARRIVED_BY_DATE_LOADED_SUCCESSFULL, list: parcels });\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getParcelsByStatus(status, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar parcels = await ParcelServices.getPacrcelsByStatus(status);\r\n\r\n\t\t\tdispatch({ type: types.PARCELS_LOADED_SUCCESS, parcels });\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getParcelSettigs(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar settings = await ParcelServices.getParcelSettings();\r\n\t\t\tdispatch({ type: types.PARCEL_SETTINGS_LOAD_SUCCESSFULL, settings });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getParcelsDue(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar parcels = await ParcelServices.getPacrcelsByStatus(configHelper.ParcelStatuses.Due);\r\n\t\t\tdispatch({ type: types.PARCEL_DUE_LOADED_SUCCESSFULLY, data: parcels });\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getParcelsExpected(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar parcels = await ParcelServices.getPacrcelsByStatus(configHelper.ParcelStatuses.Expected);\r\n\t\t\tdispatch({ type: types.PARCEL_EXPECTED_LOAD_SUCCESSFULLY, data: parcels });\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function clearParcel() {\r\n\treturn (dispatch) => {\r\n\t\tlet parcels = [];\r\n\t\tdispatch({ type: types.PARCELS_LOADED_SUCCESS, parcels });\r\n\t};\r\n}\r\n\r\nexport function registerParcelQueue(list, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t} catch (error) {}\r\n\t};\r\n}\r\nexport function registerExpected(listData, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst data = await ParcelServices.registerExpectedParcelsList(listData);\r\n\t\t\tdispatch({ type: types.REGISTER_EXPECTED_PARCEL_LIST_SUCCESSFULL, parcels: data });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\n/**update parcel record action */\r\nexport function updateParcel(record, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst result = await ParcelServices.updateParcelRecord(record);\r\n\t\t\tdispatch({ type: types.PARCEL_RECORD_UPDATED_SUCCESSFULLY, data: result });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function updateParcelStatus(id, status, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\nexport function getParcelsTestData() {\r\n\tconst parcelData = [\r\n\t\t{\r\n\t\t\tid: 30,\r\n\t\t\tbarcode: '464646456',\r\n\t\t\tdateArrived: '2018-01-30T10:33:57.207Z',\r\n\t\t\tlocationId: 3,\r\n\t\t\tnumberOfParcel: 1,\r\n\t\t\trecipientId: 30,\r\n\t\t\tresidentStatus: null,\r\n\t\t\tstatusId: 1,\r\n\t\t\tdateCollected: '0001-01-01T00:00:00',\r\n\t\t\tsignatureTaken: false,\r\n\t\t\tsignatureId: 0,\r\n\t\t\tcollectByDate: '2018-02-06T10:33:57.207Z',\r\n\t\t\tcollectByDateExtension: '0001-01-01T00:00:00',\r\n\t\t\tdateReturned: '0001-01-01T00:00:00',\r\n\t\t\tcomment: null,\r\n\t\t\tstatusReasonId: 0,\r\n\t\t\tmemberId: 1261,\r\n\t\t\tresident: {\r\n\t\t\t\tid: 1261,\r\n\t\t\t\tfirstName: 'Edward',\r\n\t\t\t\tlastName: 'Gage',\r\n\t\t\t\temail: 'resident@engageproptech.com',\r\n\t\t\t\taddressLine1: 'Flat 6,',\r\n\t\t\t\taddressLine2: '224 Iverson Road',\r\n\t\t\t\tpostCode: 'NW6 2HL',\r\n\t\t\t\tstatus: ''\r\n\t\t\t},\r\n\t\t\tlocation: {\r\n\t\t\t\tid: 3,\r\n\t\t\t\tlocationName: 'Storage Area B'\r\n\t\t\t},\r\n\t\t\tstatus: {\r\n\t\t\t\tid: 1,\r\n\t\t\t\tstatus: 'checkedin'\r\n\t\t\t},\r\n\t\t\trecipient: {\r\n\t\t\t\trecipientId: 30,\r\n\t\t\t\tmemberId: 1261,\r\n\t\t\t\tfirstName: null,\r\n\t\t\t\tlastName: null,\r\n\t\t\t\trecipientType: null,\r\n\t\t\t\tserviceType: 'Parcels',\r\n\t\t\t\tserviceId: 30\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 29,\r\n\t\t\tbarcode: '435435435',\r\n\t\t\tdateArrived: '2018-01-30T10:14:25.427Z',\r\n\t\t\tlocationId: 2,\r\n\t\t\tnumberOfParcel: 1,\r\n\t\t\trecipientId: 29,\r\n\t\t\tresidentStatus: null,\r\n\t\t\tstatusId: 1,\r\n\t\t\tdateCollected: '0001-01-01T00:00:00',\r\n\t\t\tsignatureTaken: false,\r\n\t\t\tsignatureId: 0,\r\n\t\t\tcollectByDate: '2018-02-06T10:14:25.427Z',\r\n\t\t\tcollectByDateExtension: '0001-01-01T00:00:00',\r\n\t\t\tdateReturned: '0001-01-01T00:00:00',\r\n\t\t\tcomment: null,\r\n\t\t\tstatusReasonId: 0,\r\n\t\t\tmemberId: 1606,\r\n\t\t\tresident: {\r\n\t\t\t\tid: 1606,\r\n\t\t\t\tfirstName: 'Dave',\r\n\t\t\t\tlastName: 'Pearce',\r\n\t\t\t\temail: 'dave.pearce@mearsgroup.co.uk',\r\n\t\t\t\taddressLine1: '1390 Montpellier Court',\r\n\t\t\t\taddressLine2: 'Gloucester Business Park',\r\n\t\t\t\tpostCode: 'GL3 4AH',\r\n\t\t\t\tstatus: ''\r\n\t\t\t},\r\n\t\t\tlocation: {\r\n\t\t\t\tid: 2,\r\n\t\t\t\tlocationName: 'Storage Area Large'\r\n\t\t\t},\r\n\t\t\tstatus: {\r\n\t\t\t\tid: 1,\r\n\t\t\t\tstatus: 'checkedin'\r\n\t\t\t},\r\n\t\t\trecipient: {\r\n\t\t\t\trecipientId: 29,\r\n\t\t\t\tmemberId: 1606,\r\n\t\t\t\tfirstName: null,\r\n\t\t\t\tlastName: null,\r\n\t\t\t\trecipientType: null,\r\n\t\t\t\tserviceType: 'Parcels',\r\n\t\t\t\tserviceId: 29\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 28,\r\n\t\t\tbarcode: 'gdrhgfdhjfghfhfh',\r\n\t\t\tdateArrived: '2018-01-30T10:13:29.49Z',\r\n\t\t\tlocationId: 2,\r\n\t\t\tnumberOfParcel: 1,\r\n\t\t\trecipientId: 28,\r\n\t\t\tresidentStatus: null,\r\n\t\t\tstatusId: 1,\r\n\t\t\tdateCollected: '0001-01-01T00:00:00',\r\n\t\t\tsignatureTaken: false,\r\n\t\t\tsignatureId: 0,\r\n\t\t\tcollectByDate: '2018-02-06T10:13:29.49Z',\r\n\t\t\tcollectByDateExtension: '0001-01-01T00:00:00',\r\n\t\t\tdateReturned: '0001-01-01T00:00:00',\r\n\t\t\tcomment: null,\r\n\t\t\tstatusReasonId: 0,\r\n\t\t\tmemberId: 1606,\r\n\t\t\tresident: {\r\n\t\t\t\tid: 1606,\r\n\t\t\t\tfirstName: 'Dave',\r\n\t\t\t\tlastName: 'Pearce',\r\n\t\t\t\temail: 'dave.pearce@mearsgroup.co.uk',\r\n\t\t\t\taddressLine1: '1390 Montpellier Court',\r\n\t\t\t\taddressLine2: 'Gloucester Business Park',\r\n\t\t\t\tpostCode: 'GL3 4AH',\r\n\t\t\t\tstatus: ''\r\n\t\t\t},\r\n\t\t\tlocation: {\r\n\t\t\t\tid: 2,\r\n\t\t\t\tlocationName: 'Storage Area Large'\r\n\t\t\t},\r\n\t\t\tstatus: {\r\n\t\t\t\tid: 1,\r\n\t\t\t\tstatus: 'checkedin'\r\n\t\t\t},\r\n\t\t\trecipient: {\r\n\t\t\t\trecipientId: 28,\r\n\t\t\t\tmemberId: 1606,\r\n\t\t\t\tfirstName: null,\r\n\t\t\t\tlastName: null,\r\n\t\t\t\trecipientType: null,\r\n\t\t\t\tserviceType: 'Parcels',\r\n\t\t\t\tserviceId: 28\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 27,\r\n\t\t\tbarcode: 'fsdfsfs',\r\n\t\t\tdateArrived: '2018-01-30T10:13:12.307Z',\r\n\t\t\tlocationId: 2,\r\n\t\t\tnumberOfParcel: 1,\r\n\t\t\trecipientId: 27,\r\n\t\t\tresidentStatus: null,\r\n\t\t\tstatusId: 1,\r\n\t\t\tdateCollected: '0001-01-01T00:00:00',\r\n\t\t\tsignatureTaken: false,\r\n\t\t\tsignatureId: 0,\r\n\t\t\tcollectByDate: '2018-02-06T10:13:12.307Z',\r\n\t\t\tcollectByDateExtension: '0001-01-01T00:00:00',\r\n\t\t\tdateReturned: '0001-01-01T00:00:00',\r\n\t\t\tcomment: null,\r\n\t\t\tstatusReasonId: 0,\r\n\t\t\tmemberId: 1606,\r\n\t\t\tresident: {\r\n\t\t\t\tid: 1606,\r\n\t\t\t\tfirstName: 'Dave',\r\n\t\t\t\tlastName: 'Pearce',\r\n\t\t\t\temail: 'dave.pearce@mearsgroup.co.uk',\r\n\t\t\t\taddressLine1: '1390 Montpellier Court',\r\n\t\t\t\taddressLine2: 'Gloucester Business Park',\r\n\t\t\t\tpostCode: 'GL3 4AH',\r\n\t\t\t\tstatus: ''\r\n\t\t\t},\r\n\t\t\tlocation: {\r\n\t\t\t\tid: 2,\r\n\t\t\t\tlocationName: 'Storage Area Large'\r\n\t\t\t},\r\n\t\t\tstatus: {\r\n\t\t\t\tid: 1,\r\n\t\t\t\tstatus: 'checkedin'\r\n\t\t\t},\r\n\t\t\trecipient: {\r\n\t\t\t\trecipientId: 27,\r\n\t\t\t\tmemberId: 1606,\r\n\t\t\t\tfirstName: null,\r\n\t\t\t\tlastName: null,\r\n\t\t\t\trecipientType: null,\r\n\t\t\t\tserviceType: 'Parcels',\r\n\t\t\t\tserviceId: 27\r\n\t\t\t}\r\n\t\t}\r\n\t];\r\n\r\n\treturn parcelData;\r\n}\r\n","export const RESIDENTS_LOADED_SUCCESS = \"RESIDENTS_LOADED_SUCCESS\";\r\nexport const RESIDENTS_GROUPS_LOADED_SUCCESS = \"RESIDENTS_GROUPS_LOADED_SUCCESS\";\r\nexport const SEARCH_RESIDENTS_LOAD_SUCCESS = \"SEARCH_RESIDENTS_LOAD_SUCCESS\";\r\nexport const SEARCH_RESIDENTS_LOAD_FAIL = \"SEARCH_RESIDENTS_LOAD_FAIL\";\r\nexport const CREATE_RESIDENT_SUCCESS = \"CREATE_RESIDENT_SUCCESS\";\r\nexport const CREATE_RESIDENT_FAIL = \"CREATE_RESIDENT_FAIL\";\r\nexport const UPDATE_RESIDENT_SUCCESS = \"UPDATE_RESIDENT_SUCCESS\";\r\nexport const UPDATE_RESIDENT_FAIL = \"UPDATE_RESIDENT_FAIL\";\r\nexport const UPDATE_RESIDENT_APPROVAL_SUCCESS =\r\n \"UPDATE_APPROVAL_RESIDENT_SUCCESS\";\r\nexport const UPDATE_RESIDENT_APPROVAL_FAIL = \"UPDATE_APPROVAL_RESIDENT_FAIL\";\r\nexport const SEND_REGISTRATION_ACTIVATION_SUCCESS =\r\n \"SEND_REGISTRATION_ACTIVATION_SUCCESS\";\r\nexport const SEND_REGISTRATION_ACTIVATION_FAIL =\r\n \"SEND_REGISTRATION_ACTIVATION_FAIL\";\r\n","import * as config from './config';\r\nimport authService from './loginService';\r\n\r\nclass ResidentService {\r\n\tasync GetResidents() {\r\n\t\tconst url = `${config.RESIDENTS_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getResidents service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tasync GetConciergeGroups() {\r\n\t\tconst url = `${config.RESIDENTS_GROUPS_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: requestHeader\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\tconfig.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`getConciergeGroups service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\r\n\r\n\tasync SearchResidentsBy(data) {\r\n\t\tconst url = `${config.SEARCH_RESIDENTS_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(data)\r\n\t\t});\r\n\t\tif (!response.ok) {\r\n\t\t\t //config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`Search resident by service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync CreateNewResident(data) {\r\n\t\tconst url = `${config.CREATE_RESIDENT_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(data)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`create member service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync UpdateResident(data) {\r\n\t\tconst url = `${config.UPDATE_MEMBER_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(data)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`update member service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tasync UpdateApprovalResident(data) {\r\n\t\tconst url = `${config.UPDATEAPPROVAL_MEMBER_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(data)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`update approval member service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n\tasync sendRegisterationActivation(data) {\r\n\t\tconst url = `${config.SEND_REGISTERATION_ACTIVATION_ENDPOINT}`;\r\n\t\tconst authToken = authService.getToken();\r\n\t\tvar requestHeader = new Headers();\r\n\t\trequestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\t\trequestHeader.append('Accept', 'application/json');\r\n\t\trequestHeader.append('Content-Type', 'application/json');\r\n\r\n\t\tconst response = await fetch(url, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: requestHeader,\r\n\t\t\tbody: JSON.stringify(data)\r\n\t\t});\r\n\r\n\t\tif (!response.ok) {\r\n\t\t\t config.errorPageRedirect(response);\r\n\t\t\tthrow new Error(`send registration activation service failed, HTTP status ${response.status}`);\r\n\t\t}\r\n\r\n\t\tconst result = await response.json();\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nexport default new ResidentService();\r\n","export const ADDRESSES_LOAD_SUCCESS = \"ADDRESSES_LOAD_SUCCESS\";\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\n\r\nconst initialState = Immutable({\r\n addresses: []\r\n});\r\n\r\nexport default function addressReducer(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.ADDRESSES_LOAD_SUCCESS:\r\n return state.merge({\r\n addresses: action.addresses\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getAddresses(state) {\r\n return state.addresses.addresses;\r\n}\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\nconst initialState = Immutable({\r\n resident: {},\r\n residents: [],\r\n residentsSearchQueue: [],\r\n newResident: {},\r\n residentCreated: false,\r\n residentUpdated: false,\r\n residentGroups: {},\r\n registerNotificationSent: {}\r\n});\r\n\r\nexport default function residentRecord(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.RESIDENTS_LOADED_SUCCESS:\r\n return state.merge({\r\n residents: action.residents\r\n });\r\n\r\n case types.RESIDENTS_GROUPS_LOADED_SUCCESS:\r\n return state.merge({\r\n residentGroups: action.residentGroups\r\n });\r\n\r\n case types.SEARCH_RESIDENTS_LOAD_SUCCESS:\r\n return state.merge({\r\n residentsSearchQueue: action.residentsResponse\r\n });\r\n case types.CREATE_RESIDENT_SUCCESS:\r\n return state.merge({\r\n newResident: action.resident,\r\n residentCreated: action.resident\r\n ? { status: true }\r\n : { status: false, error: \"Problems adding new member\" }\r\n });\r\n case types.CREATE_RESIDENT_FAIL:\r\n return state.merge({\r\n residentCreated: action.response, error : action.msg ? `, ${action.msg}` : \"\"\r\n });\r\n case types.UPDATE_RESIDENT_SUCCESS:\r\n return state.merge({\r\n resident: action.resident,\r\n residentUpdated: action.resident\r\n ? { status: true }\r\n : { status: false, error: \"Problems updating member\" }\r\n });\r\n case types.UPDATE_RESIDENT_FAIL:\r\n return state.merge({\r\n residentUpdated: action.response\r\n });\r\n case types.UPDATE_RESIDENT_APPROVAL_SUCCESS:\r\n return state.merge({\r\n resident: action.resident,\r\n residentApprovalUpdated: action.resident\r\n ? { status: true }\r\n : { status: false, error: \"Problems updating member\" }\r\n });\r\n case types.UPDATE_RESIDENT_APPROVAL_FAIL:\r\n return state.merge({\r\n residentApprovalUpdated: action.response\r\n });\r\n case types.SEND_REGISTRATION_ACTIVATION_SUCCESS:\r\n return state.merge({\r\n registerNotificationSent: action.result\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getResidents(state) {\r\n return state.residents.residents;\r\n}\r\n\r\nexport function GetConciergeGroups(state) {\r\n return state.residents.residentGroups;\r\n}\r\n\r\n\r\n\r\nexport function getSearchedResidents(state) {\r\n return state.residents.residentsSearchQueue;\r\n}\r\n\r\nexport function getNewResident(state) {\r\n return state.residents.newResident;\r\n}\r\n\r\nexport function residentCreatedStatus(state) {\r\n return state.residents.residentCreated;\r\n}\r\n\r\nexport function residentUpdatedStatus(state) {\r\n return state.residents.residentUpdated;\r\n}\r\n\r\nexport function residentUpdatedApprovalStatus(state) {\r\n return state.residents.residentApprovalUpdated;\r\n}\r\n\r\nexport function registerNotificationSent(state) {\r\n return state.residents.registerNotificationSent;\r\n}\r\n\r\nexport function residentError(state){\r\n return state.residents.error;\r\n}","import * as types from \"./actionTypes\";\r\nimport ResidentServices from \"../../services/ResidentServices\";\r\nimport _ from \"lodash\";\r\nimport * as addressLookupSelector from \"../AddressLookUp/reducer\";\r\nimport * as residentSelector from \"../Residents/reducer\";\r\n\r\nexport function getAllResidents() {\r\n return async function(dispatch, getState) {\r\n try {\r\n const residents = await ResidentServices.GetResidents();\r\n dispatch({ type: types.RESIDENTS_LOADED_SUCCESS, residents });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function searchResidents(data, callback = () => {}) {\r\n return async function(dispatch, getState) {\r\n try {\r\n const result = await ResidentServices.SearchResidentsBy(data);\r\n dispatch({\r\n type: types.SEARCH_RESIDENTS_LOAD_SUCCESS,\r\n residentsResponse: result\r\n });\r\n\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function GetConciergeGroups() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst groups = await ResidentServices.GetConciergeGroups();\r\n\r\n\t\t\tdispatch({type: types.RESIDENTS_GROUPS_LOADED_SUCCESS, groups});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\n\r\n\r\n\r\nexport function clearSearchQueue() {\r\n return async function(dispatch, getState) {\r\n try {\r\n let data = [];\r\n dispatch({\r\n type: types.SEARCH_RESIDENTS_LOAD_SUCCESS,\r\n residentsResponse: data\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function createNewResident(data, callback = () => {}) {\r\n return async function(dispatch, getState) {\r\n try {\r\n const residents = residentSelector.getResidents(getState());\r\n const addressList = addressLookupSelector.getAddresses(getState());\r\n let currentAddress = _.find(\r\n addressList,\r\n addr => addr.id === data.addressId\r\n );\r\n\r\n let residentExist = _.find(residents, res => res.email === data.email);\r\n\r\n if (_.isUndefined(residentExist)) {\r\n const newResi = {\r\n firstName: data.firstName,\r\n lastName: data.lastName,\r\n email: data.email,\r\n mobileNumber: data.phone,\r\n addressLine1: currentAddress.addr1FlatNumber,\r\n addressLine2: currentAddress.addr2BuildingName,\r\n postCode: currentAddress.postCode,\r\n addressLookupId: currentAddress.id,\r\n conciergeGroup : data.groupName\r\n };\r\n\r\n const resident = await ResidentServices.CreateNewResident(newResi);\r\n if (resident)\r\n dispatch({ type: types.CREATE_RESIDENT_SUCCESS, resident });\r\n callback(true);\r\n } else {\r\n callback(false);\r\n dispatch({ type: types.CREATE_RESIDENT_FAIL, response: false, msg : \"email already in use\" });\r\n }\r\n } catch (error) {\r\n callback(false);\r\n dispatch({ type: types.CREATE_RESIDENT_FAIL, response: false });\r\n //console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function updateResident(data, callback = () => {}) {\r\n return async function(dispatch, getState) {\r\n try {\r\n const resident = await ResidentServices.UpdateResident(data);\r\n if (resident) {\r\n dispatch({ type: types.UPDATE_RESIDENT_SUCCESS, resident });\r\n } else {\r\n }\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n dispatch({\r\n type: types.UPDATE_RESIDENT_FAIL,\r\n response: { status: false, error: \"Unable to update member\" }\r\n });\r\n //console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function updateApprovalResident(data, callback = () => {}) {\r\n return async function(dispatch, getState) {\r\n try {\r\n const resident = await ResidentServices.UpdateApprovalResident(data);\r\n if (resident) {\r\n dispatch({ type: types.UPDATE_RESIDENT_APPROVAL_SUCCESS, resident });\r\n callback(true);\r\n } else {\r\n callback(false);\r\n dispatch({\r\n type: types.UPDATE_RESIDENT_APPROVAL_FAIL,\r\n response: {\r\n status: false,\r\n error: \"Unable to update member approval status\"\r\n }\r\n });\r\n }\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n dispatch({\r\n type: types.UPDATE_RESIDENT_FAIL,\r\n response: { status: false, error: \"Unable to update member\" }\r\n });\r\n //console.error(error);\r\n }\r\n };\r\n}\r\nexport function sendRegistrationActivation(data, callback = () => {}) {\r\n return async function(dispatch, getState) {\r\n try {\r\n const response = await ResidentServices.sendRegisterationActivation(data);\r\n if (response === true) {\r\n let result = { status: true, message: \"activation sent\" };\r\n dispatch({ type: types.SEND_REGISTRATION_ACTIVATION_SUCCESS, result });\r\n callback(true);\r\n }\r\n } catch (error) {\r\n callback(false);\r\n }\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\n// import { connect } from \"react-redux\";\r\n\r\nimport _ from \"lodash\";\r\nimport \"../../sass/components/DetailList/index.css\";\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * Display list of up to two properties with an con in the third column. Data is passed in as an array and mapped to appropriate\r\n * column with the listsConfig.\r\n */\r\n\r\nclass DetailList extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.listsConfig = {\r\n types: [\r\n {\r\n name: \"visitor-add-meeting\",\r\n headings: [\"Visitor\", \"Company\"],\r\n fields: [\"name\", \"companyName\", \"index\"],\r\n iconClass: \"ion-close-round\"\r\n },\r\n {\r\n name: \"visitor-confirm-meeting\",\r\n headings: [\"Visitor\", \"Company\"],\r\n fields: [\"firstName\", \"companyName\", \"index\"],\r\n iconClass: \"ion-close-round\"\r\n },\r\n {\r\n name: \"parcel-check-in\",\r\n headings: [\"Parcel Barcode\", \"Location\"],\r\n fields: [\"barcode\", \"locationFullName\", \"index\"],\r\n iconClass: \"ion-close-round\"\r\n },\r\n {\r\n name: \"parcel-review\",\r\n headings: [\"Parcel Barcode\", \"Location\"],\r\n fields: [\"barcode\", \"locationFullName\", \"index\"],\r\n iconClass: \"ion-edit\"\r\n },\r\n {\r\n name: \"parcel-confirm\",\r\n headings: [\"Parcel Barcode\", \"Location\"],\r\n fields: [\"barcode\", \"location.locationName\", \"id\"],\r\n iconClass: \"ion-checkmark-round\"\r\n },\r\n {\r\n name: \"car\",\r\n headings: [\"Name\", \"Reg. Number\"],\r\n fields: [\"name\", \"reg\"],\r\n iconClass: \"ion-close-round\"\r\n },\r\n {\r\n name: \"parcel-overview-check-in\",\r\n headings: [\"Parcel Barcode\", \"Tenant\"],\r\n fields: [\"barcode\", \"fullName\"],\r\n iconClass: \"ion-arrow-up-c\"\r\n },\r\n {\r\n name: \"parcel-overview-check-out\",\r\n headings: [\"Parcel Barcode\", \"Tenant\"],\r\n fields: [\"barcode\", \"fullName\"],\r\n iconClass: \"ion-arrow-down-c\"\r\n },\r\n {\r\n name: \"visitor\",\r\n headings: [\"Visitor Name\", \"Visitor Company\"],\r\n fields: [\"fullName\", \"company\", \"id\"],\r\n iconClass: \"ion-checkmark-round\"\r\n },\r\n {\r\n name: \"tenant\",\r\n headings: [\"Tenant\", \"Company\"],\r\n fields: [\"fullName\", \"company\", \"id\"],\r\n iconClass: \"ion-checkmark-round\"\r\n },\r\n {\r\n name: \"resident-view-list\",\r\n headings: [\"Resident\", \"Address\"],\r\n fields: [\"fullName\", \"address\", \"id\"],\r\n link: \"view\"\r\n },\r\n {\r\n name: \"key-view-list\",\r\n headings: [\"Status\", \"Address\"],\r\n fields: [\"status\", \"address\", \"id\"],\r\n link: \"view\"\r\n },\r\n {\r\n name: \"related-key-list\",\r\n headings: [\"Key ID Code\", \"Key\"],\r\n fields: [\"barcode\", \"address\", \"id\"],\r\n iconClass: \"ion-forward\"\r\n }\r\n ]\r\n };\r\n }\r\n\r\n // Utility function so fields: [] options above can optionally specifiy a path to a nested value\r\n // e.g. for a parcel location.locationName\r\n // https://stackoverflow.com/questions/6491463\r\n accessObjectByString(o, s) {\r\n s = s.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n s = s.replace(/^\\./, \"\"); // strip a leading dot\r\n var a = s.split(\".\");\r\n for (var i = 0, n = a.length; i < n; ++i) {\r\n var k = a[i];\r\n if (k in o) {\r\n o = o[k];\r\n } else {\r\n return;\r\n }\r\n }\r\n return o;\r\n }\r\n\r\n render() {\r\n const { listType, data, pageClass } = this.props;\r\n\r\n let { headingsAlone } = this.props;\r\n\r\n // const config = this.listsConfig.types.find(type => {\r\n // return type.name === listType;\r\n // });\r\n const config = _.find(this.listsConfig.types, type => {\r\n return type.name === listType;\r\n });\r\n\r\n if (_.isUndefined(headingsAlone)) {\r\n headingsAlone = false;\r\n }\r\n\r\n if ((_.isUndefined(data) || data.length === 0) && headingsAlone === false) {\r\n return false;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {data.length > 0 &&\r\n data.map((row, rowIndex) => {\r\n return (\r\n \r\n \r\n \r\n {\r\n this.props.actionClick(\r\n this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[2]\r\n )\r\n );\r\n }}\r\n >\r\n {!_.isUndefined(config.iconClass) ? (\r\n \r\n ) : !_.isUndefined(config.link) ? (\r\n {config.link}\r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n {data.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n
    {config.headings[0]}{config.headings[1]}\r\n
    \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[0]\r\n )}\r\n \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[1]\r\n )}\r\n
    \r\n

    \r\n {this.props.emptyMessage}\r\n

    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nDetailList.propTypes = {\r\n /** Message to display if the table is empty */\r\n emptyMessage: PropTypes.string,\r\n /** Function that is called for clicking on the icon */\r\n actionClick: PropTypes.func,\r\n /** If list data is empty can headings be displayed on their own? */\r\n headingsAlone: PropTypes.bool,\r\n /** The configuration to use from listsConfig in the component constrctor. (specifies icon and data to column mappings) */\r\n listType: PropTypes.string,\r\n /** An array of objects, fields are variable as long as configuration is available for mappings in listsConfig */\r\n data: PropTypes.array,\r\n /**The class name for the detail list */\r\n pageClass: PropTypes.string\r\n};\r\n\r\nexport default DetailList;\r\n","import React, { Component } from \"react\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport autoBind from \"react-autobind\";\r\n\r\nimport \"../../sass/components/CompactCard/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * Display an assortment of labelled properties in a card format with two columns\r\n */\r\n\r\nclass CompactCard extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n highlighted: _.isUndefined(this.props.startHighlighted)\r\n ? false\r\n : this.props.startHighlighted\r\n };\r\n\r\n this.id = this.props.data.id ? this.props.data.id : null;\r\n\r\n autoBind(this);\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n if (_.isUndefined(nextProps.highlighted) === false) {\r\n this.setState({ highlighted: nextProps.highlighted });\r\n }\r\n }\r\n\r\n highlight(callback) {\r\n if (this.props.highlighted !== null) {\r\n this.setState({ highlighted: !this.state.highlighted }, callback);\r\n } else {\r\n callback();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // https://github.com/kriasoft/react-starter-kit/issues/909\r\n // Pass instance to parent list so it can access it\r\n this.props.passInstanceToList &&\r\n this.props.passInstanceToList(this, this.props.data.id);\r\n }\r\n\r\n componentWillUnmount() {\r\n // Removes item from list of instances in parent\r\n this.props.passInstanceToList &&\r\n this.props.passInstanceToList(undefined, this.props.data.id);\r\n }\r\n\r\n // https://stackoverflow.com/questions/10073699\r\n padNumber(n, width, z) {\r\n z = z || \"0\";\r\n n = n + \"\";\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n\r\n formatString(str) {\r\n if (str.length > 20) {\r\n return (\r\n str.substr(0, 10) + \"...\" + str.substr(str.length - 10, str.length)\r\n );\r\n }\r\n return str;\r\n }\r\n render() {\r\n const { parcel, tenant, booking } = this.props.data ? this.props.data : {};\r\n\r\n\r\n return (\r\n {\r\n this.highlight(() => {\r\n this.props.onClick && this.props.onClick(e);\r\n });\r\n }}\r\n className={\r\n \"compact-card\" +\r\n (this.state.highlighted === true ? \" highlighted\" : \"\") +\r\n (this.props.highlighted === null ? \" no-highlight\" : \"\") +\r\n \" type-\" +\r\n (_.isUndefined(this.props.type) ? \"default\" : this.props.type)\r\n }\r\n >\r\n {(() => {\r\n switch (this.props.type) {\r\n case \"parcel\":\r\n let locationType = \"Room\";\r\n\r\n\r\n if (!_.isUndefined(parcel)) {\r\n const locationName =\r\n !_.isUndefined(parcel.location) &&\r\n !_.isUndefined(parcel.location) && parcel.location !== null\r\n ? parcel.location.locationName\r\n : parcel.locationName;\r\n\r\n //Try to factor in accidental double space locationName / prefix + number\r\n // const split = locationName\r\n // .trim()\r\n // .split(\" \")\r\n // .filter(value => {\r\n // return value !== \"\";\r\n // });\r\n\r\n locationType = locationName;\r\n //locationNumber = split[1];\r\n }\r\n\r\n return (\r\n
    \r\n

    {tenant && tenant.firstName + \" \" + tenant.lastName}

    \r\n \r\n {!_.isUndefined(tenant) &&\r\n this.formatString(\r\n tenant.addressLine1 + \" \" + tenant.addressLine2\r\n )}\r\n \r\n
    \r\n \r\n
    \r\n );\r\n\r\n case \"booking\":\r\n return (\r\n
    \r\n

    {tenant && tenant.firstName + \" \" + tenant.lastName}

    \r\n

    {booking.resourceName}

    \r\n
    \r\n );\r\n\r\n default:\r\n return (\r\n
    \r\n

    N/A

    \r\n

    N/A

    \r\n

    N/A

    \r\n
    \r\n );\r\n }\r\n })()}\r\n
    \r\n {(() => {\r\n switch (this.props.type) {\r\n case \"parcel\":\r\n return (\r\n \r\n );\r\n\r\n case \"booking\":\r\n return (\r\n \r\n );\r\n\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n })()}\r\n {(() => {\r\n switch (this.props.type) {\r\n case \"parcel\":\r\n return (\r\n \r\n

    Barcode

    \r\n

    \r\n {this.formatString(parcel.barcode)}\r\n

    \r\n \r\n );\r\n\r\n\r\n case \"booking\":\r\n return (\r\n \r\n );\r\n\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n })()}\r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nCompactCard.propTypes = {\r\n /** Type is used to add a type- classes and used in the conditionals in render method on how the data HTML is printed out */\r\n type: PropTypes.string,\r\n /** Apart from ID, Data is flexible in what it can contain but every new type works with conditionals in the render method to access sub properties */\r\n data: PropTypes.object,\r\n /** Optional callback function to pass instance of self to parent array */\r\n passInstanceToList: PropTypes.func,\r\n /** Optional control the highlighted state, if null highlighting diabled */\r\n highlighted: PropTypes.bool,\r\n /** Optional set the initial highlighted state */\r\n startHighlighted: PropTypes.bool,\r\n /** Optional onClick method */\r\n onClick: PropTypes.func\r\n};\r\n\r\nexport default CompactCard;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Autosuggest from 'react-autosuggest';\r\nimport InputComponent from '../../components/Input/Input';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport * as residentActions from '../../store/Residents/actions';\r\nimport * as residentSelector from '../../store/Residents/reducer';\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nimport autoBind from 'react-autobind';\r\n\r\nclass ResidentAddrAutoSuggest extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.defaultState = {\r\n\t\t\tvalue: '',\r\n\t\t\tsuggestions: [],\r\n\t\t\tvalid: false,\r\n\t\t\totherText: ''\r\n\t\t};\r\n\r\n\t\tthis.state = this.defaultState;\r\n\r\n\t\tthis.props.dispatch(residentActions.getAllResidents());\r\n\t\tthis.emptyResponse = {\r\n\t\t\tmemberId: '',\r\n\t\t\taddress: '',\r\n\t\t\ttenant: ''\r\n\t\t};\r\n\r\n\t\tthis.selectedTenantFromDefault = false;\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tUNSAFE_componentWillReceiveProps(nextProps) {\r\n\t\t// Set the autosuggest to an initial value if it is provided\r\n\t\tif (\r\n\t\t\tnextProps.residents.length > 0 &&\r\n\t\t\t!_.isUndefined(nextProps.defaultTenantId) &&\r\n\t\t\t_.isNumber(nextProps.defaultTenantId) &&\r\n\t\t\tthis.selectedTenantFromDefault === false\r\n\t\t) {\r\n\t\t\tthis.selectedTenantFromDefault = true;\r\n\r\n\t\t\tconst startTenant = _.find(nextProps.residents, (resident) => {\r\n\t\t\t\treturn resident.id === Number(nextProps.defaultTenantId);\r\n\t\t\t});\r\n\r\n\t\t\tif (!_.isUndefined(startTenant)) {\r\n\t\t\t\tthis.handleTenantSelected(startTenant);\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tvalue: startTenant.firstName + ' ' + startTenant.lastName,\r\n\t\t\t\t\tvalid: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treset() {\r\n\t\tthis.setState(this.defaultState);\r\n\t}\r\n\t// Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n\tgetSuggestionValue(suggestion) {\r\n\t\t// const { name } = this.state;\r\n\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t\tif (suggestion) this.setState({ disabled: '' });\r\n\r\n\t\treturn `${suggestion.firstName} ${suggestion.lastName}`;\r\n\t}\r\n\r\n\tgetSuggestions(val) {\r\n\t\tconst { residents } = this.props;\r\n\t\tif (!residents) return [];\r\n\r\n\t\t//safe guard residents data return null value in some records\r\n\t\tvar data_ = _.filter(residents, (obj) => {\r\n\t\t\treturn obj.firstName !== null || obj.lastName !== null;\r\n\t\t});\r\n\r\n\t\tconst match = _.filter(data_, (o) => {\r\n\t\t\tlet nameSearch = _.startsWith(o.firstName.toLowerCase(), val.toLowerCase());\r\n\r\n\t\t\tif (nameSearch === false) {\r\n\t\t\t\tlet addrSearch = _.includes(o.addressLine1, val);\r\n\r\n\t\t\t\tif (addrSearch === true) {\r\n\t\t\t\t\treturn addrSearch;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn nameSearch;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tonSuggestionsFetchRequested = ({ value }) => {\r\n\t\tthis.setState({ suggestions: this.getSuggestions(value) });\r\n\t};\r\n\r\n\tonSuggestionsClearRequested = () => {};\r\n\thandlePasteChange(e) {\r\n\t\tthis.setState({\r\n\t\t\totherText: e.target.value,\r\n\t\t\tvalue: e.target.value\r\n\t\t});\r\n\t\tthis.props.defaultText(e.target.value);\r\n\t}\r\n\tonChange = (event, { newValue }) => {\r\n\t\tif (newValue.length === 0) this.setState({ tenant: undefined });\r\n\t\tif (newValue.length > 2) {\r\n\t\t\tthis.handleTenantChange(newValue);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tvalue: newValue\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t// Delayed because parseley not ready if user selected a suggestion\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalid: $(this.refs.autosuggest.input).parsley().isValid()\r\n\t\t\t});\r\n\t\t}, 0);\r\n\r\n\t\tthis.checkMatch(newValue);\r\n\t};\r\n\r\n\thandleTenantSelected(ten, setValue = false) {\r\n\t\tconst stateChanges = {\r\n\t\t\tmemberId: ten.id,\r\n\t\t\taddress: ten.addressLine1 + ' ' + ten.addressLine2 + ' ' + ten.postCode,\r\n\t\t\ttenant: ten.firstName + ' ' + ten.lastName,\r\n\r\n\t\t\t...(setValue ? { value: ten.firstName + ' ' + ten.lastName, valid: true } : {})\r\n\t\t};\r\n\r\n\t\tthis.setState(stateChanges);\r\n\r\n\t\tthis.props.onSelected && this.props.onSelected(stateChanges);\r\n\t}\r\n\r\n\thandleTenantChange(value) {\r\n\t\t// const { memberId } = this.state;\r\n\t\tthis.setState({\r\n\t\t\tname: value,\r\n\t\t\totherText: value\r\n\t\t});\r\n\r\n\t\t//used as a container if resident value is null\r\n\t\tthis.props.defaultText(value);\r\n\t}\r\n\r\n\trenderSuggestion(suggestion) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{suggestion.firstName} {suggestion.lastName} {' - '} {suggestion.addressLine1} {suggestion.addressLine2}{' '}\r\n\t\t\t\t{suggestion.postCode}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tcheckMatch(currentValue) {\r\n\t\tthis.setState({\r\n\t\t\totherText: currentValue\r\n\t\t});\r\n\t\tconst matchedTenant = _.find(this.props.residents, (resident) => {\r\n\t\t\tconst value = currentValue.toLowerCase();\r\n\t\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\t\treturn value !== '';\r\n\t\t\t});\r\n\r\n\t\t\tif (\r\n\t\t\t\tparts.length === 2 &&\r\n\t\t\t\tresident.firstName.toLowerCase() === parts[0].trim() &&\r\n\t\t\t\tresident.lastName.toLowerCase() === parts[1].trim()\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(matchedTenant) === false) {\r\n\t\t\tthis.handleTenantSelected(matchedTenant);\r\n\t\t} else {\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\tinputClick() {\r\n\t\tif (\r\n\t\t\tthis.state.valid === true &&\r\n\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\tthis.props.clearableIfValid === true\r\n\t\t) {\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { value, suggestions, valid } = this.state;\r\n\r\n\t\tconst disabled = _.isUndefined(this.props.disabled) || this.props.disabled === false ? false : true;\r\n\r\n\t\tconst inputProps = {\r\n\t\t\tplaceholder: 'Tenant',\r\n\t\t\tvalue,\r\n\t\t\tonChange: this.onChange,\r\n\t\t\tonClick: this.inputClick\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t {}}\r\n\t\t\t\trenderSuggestion={this.renderSuggestion}\r\n\t\t\t\tinputProps={inputProps}\r\n\t\t\t\ttheme={{\r\n\t\t\t\t\t// maybe make global for reuse at some point\r\n\t\t\t\t\tcontainer:\r\n\t\t\t\t\t\t'auto-suggest Select ' +\r\n\t\t\t\t\t\t(!_.isUndefined(this.props.clearableIfValid) && this.props.clearableIfValid === true\r\n\t\t\t\t\t\t\t? 'is-clearable'\r\n\t\t\t\t\t\t\t: ''),\r\n\t\t\t\t\tsuggestionsList: 'Select-menu-outer',\r\n\t\t\t\t\tsuggestion: 'Select-menu'\r\n\t\t\t\t}}\r\n\t\t\t\trenderInputComponent={(inputProps) => {\r\n\t\t\t\t\tconst iconProp =\r\n\t\t\t\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\t\t\t\tthis.props.clearableIfValid === true &&\r\n\t\t\t\t\t\tvalid === true\r\n\t\t\t\t\t\t\t? { icon: 'ion-close-round' }\r\n\t\t\t\t\t\t\t: {};\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\t\t\t\t\t\t\t\tthis.checkMatch(e.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t'data-parsley-matches-one-of': JSON.stringify({\r\n\t\t\t\t\t\t\t\t\tallSuggestions: this.props.residents.map((resident) => {\r\n\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: resident.firstName + ' ' + resident.lastName\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t'data-parsley-pattern': \"/^[A-Za-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/8059370/\r\n\t\t\t\t\t\t\t\t'data-parsley-minlength': 4,\r\n\t\t\t\t\t\t\t\t'data-parsley-required': false,\r\n\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter an existing tenant name'\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t{...iconProp}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nResidentAddrAutoSuggest.propTypes = {\r\n\t/* Optional initial tenant id to start with, (used when navigating back etc...) */\r\n\tdefaultTenantId: PropTypes.number,\r\n\t/* Callback function for when item is selected */\r\n\tonSelected: PropTypes.func,\r\n\t/* Optional disable the input field */\r\n\tdisabled: PropTypes.bool,\r\n\t/* Specifies if a X icon shows and the input field becomes clickable if the autosuggest is valid */\r\n\tclearableIfValid: PropTypes.bool,\r\n\t/* Label text */\r\n\tlabelText: PropTypes.string,\r\n\t/* PlaceHolder Text */\r\n\tplaceHolder: PropTypes.string,\r\n\r\n\tdefaultText: PropTypes.func\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tresidents: residentSelector.getResidents(state)\r\n\t};\r\n}\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ResidentAddrAutoSuggest);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autoBind from \"react-autobind\";\r\n\r\n\r\nimport * as parcelsAction from \"../../../store/Parcels/actions\";\r\nimport * as parcelsSelector from \"../../../store/Parcels/reducer\";\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelector from \"../../../store/Residents/reducer\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\nimport moment from \"moment\";\r\n\r\n\r\nimport Button from \"../../../components/Button/Button\";\r\n\r\nimport DetailList from \"../../../components/DetailList/DetailList\";\r\nimport CompactCard from \"../../../components/CompactCard/CompactCard\";\r\nimport ResidentAddrAutoSuggest from \"../../../components/TenantAutoSuggest/ResidentAddrAutoSuggest\";\r\n//import Pagination from \"../../../components/Pagination/Pagination\";\r\nimport { createBrowserHistory } from 'history';\r\n\r\nimport _ from \"lodash\";\r\nimport * as $ from \"jquery\";\r\nlet history = createBrowserHistory();\r\nclass CheckInOutScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n type: \"parcel\",\r\n searchFormUsed: false,\r\n barcode: \"\",\r\n maxReturnsToShow: 6,\r\n maxLastCheckedInToShow: 5,\r\n maxLastCheckedOutToShow: 5,\r\n memberId: \"\",\r\n tenant: \"\",\r\n modules: [],\r\n overlayColor: \"\",\r\n currentModule: []\r\n };\r\n\r\n this.searchFormValidation = null;\r\n\r\n autoBind(this);\r\n\r\n this.props.dispatch(parcelsAction.getStatusCodes());\r\n this.props.dispatch(parcelsAction.getAllParcels());\r\n this.props.dispatch(residentActions.getAllResidents());\r\n }\r\n\r\n componentWillMount() {\r\n let overlayColor;\r\n let currentModule = _.find(this.props.modules, o => o.title === \"Parcels\");\r\n overlayColor = currentModule.imageOverlayTextColour;\r\n\r\n this.setState({\r\n overlayColor: overlayColor\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.addValidation();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.searchFormValidation.destroy();\r\n }\r\n\r\n handleInputChange(e) {\r\n var field = e.target.name;\r\n var value = e.target.value;\r\n\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n addValidation() {\r\n this.searchFormValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n\r\n validate(fromSubmit = false) {\r\n this.searchFormValidation.validate({ force: true });\r\n\r\n const valid = this.searchFormValidation.isValid();\r\n\r\n const { barcode, memberId } = this.state;\r\n\r\n this.setState({\r\n addParcelFormValid: valid,\r\n searchFormUsed: true\r\n });\r\n\r\n var searchValue = barcode.split(' ');\r\n // Determine where to redirect the user, based on if barcode exists and other tests\r\n const matchingParcel =\r\n this.props.parcels.length >= 0 &&\r\n _.find(this.props.parcels, parcel => {\r\n return parcel.barcode === barcode;\r\n });\r\n\r\n const statusText =\r\n _.isUndefined(matchingParcel) || !matchingParcel\r\n ? \"\"\r\n : _.find(this.props.statusCodes, code => {\r\n return code.id === matchingParcel.statusId;\r\n }).status;\r\n\r\n // Parcel exists and is not already checked out\r\n if (\r\n _.isUndefined(matchingParcel) === false &&\r\n statusText !== \"collected\"\r\n ) {\r\n const matchingTenant = _.find(this.props.residents, tenant => {\r\n return tenant.id === matchingParcel.memberId;\r\n });\r\n\r\n history.push({\r\n pathname: \"/concierge/parcel/checkout\",\r\n state: {\r\n tenant: matchingTenant,\r\n parcel: matchingParcel\r\n }\r\n });\r\n } else if (_.isUndefined(matchingParcel) && searchValue.length === 1) {\r\n history.push({\r\n pathname: \"/concierge/parcel/checkin\",\r\n state: {\r\n barcode: barcode,\r\n }\r\n });\r\n }\r\n\r\n //Check if form use valid, tenant was found or selected.\r\n if (valid === true && fromSubmit === true) {\r\n if (!_.isEmpty(memberId) && memberId) {\r\n const matchingTenant = _.find(this.props.residents, tenant => {\r\n return tenant.id === memberId;\r\n });\r\n\r\n history.push({\r\n pathname: \"/concierge/parcel/checkout\",\r\n state: {\r\n tenant: matchingTenant,\r\n memberId: memberId\r\n }\r\n });\r\n } else {\r\n // Parcel doesnt exist or barcode matches a checked out / collected parcel\r\n // If parcel code doesnt exist, start check in page prefilled with barcode\r\n\r\n history.push({\r\n pathname: \"/concierge/parcel/checkin\",\r\n state: {\r\n barcode: searchValue.length === 1 ? barcode : \"\",\r\n tenant: searchValue.length > 1 ? `${searchValue[0]} ${searchValue[1]}` : \"\",\r\n memberId: this.state.memberId\r\n }\r\n });\r\n }\r\n this.setState({\r\n searchFormUsed: false\r\n });\r\n }\r\n }\r\n\r\n sortByLatest(a, b) {\r\n // Sort by dateArrived by comparing epoch MS value\r\n const msA = moment(a.dateArrived).valueOf();\r\n const msB = moment(b.dateArrived).valueOf();\r\n\r\n if (msA > msB) {\r\n return -1;\r\n }\r\n\r\n if (msA < msB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n addFullName(parcel) {\r\n // Add in 'fullName' property to parcel object\r\n\r\n parcel.fullName =\r\n parcel.resident.firstName + \" \" + parcel.resident.lastName;\r\n\r\n return parcel;\r\n }\r\n\r\n select(parcel, tenant) {\r\n // Add a minor delay to show highlight\r\n\r\n setTimeout(() => {\r\n history.push({\r\n pathname: \"/concierge/parcel/return\",\r\n state: { parcel: parcel, tenant: tenant }\r\n });\r\n }, 400);\r\n }\r\n\r\n render() {\r\n const displayedCheckedInParcels =\r\n this.props.checkedInParcels.length > 0\r\n ? // Clone imuutableJS object (array) so it can be sorted in place\r\n this.props.checkedInParcels\r\n .asMutable({ deep: true })\r\n .sort(this.sortByLatest)\r\n .slice(0, this.state.maxLastCheckedInToShow)\r\n .map(this.addFullName)\r\n : [];\r\n\r\n const displayedCheckedOutParcels =\r\n this.props.checkedOutParcels.length > 0\r\n ? // Clone imuutableJS object (array) so it can be sorted in place\r\n this.props.checkedOutParcels\r\n .asMutable({ deep: true })\r\n .sort(this.sortByLatest)\r\n .slice(0, this.state.maxLastCheckedInToShow)\r\n .map(this.addFullName)\r\n : [];\r\n\r\n const displayDueParcels =\r\n this.props.dueParcels.length > 0\r\n ? // Clone imuutableJS object (array) so it can be sorted in place\r\n this.props.dueParcels //.asMutable({deep: true})\r\n .slice(0, this.state.maxReturnsToShow)\r\n : [];\r\n\r\n return (\r\n
    \r\n
    \r\n {}\r\n
    \r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n >\r\n
    \r\n {\r\n this.setState({\r\n memberId: data.memberId,\r\n tenant: data.tenant,\r\n address: data.address\r\n });\r\n\r\n setTimeout(() => {\r\n this.state.searchFormValidation && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => {\r\n this.setState({\r\n barcode: dataVal\r\n });\r\n }}\r\n />\r\n
    \r\n\r\n \r\n {this.state.searchFormUsed && (\r\n
    \r\n {/*

    Sending Parcel To Server...

    */}\r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n {\r\n this.validate(true);\r\n }}\r\n />\r\n
    \r\n \r\n\r\n

    Recent

    \r\n\r\n

    Checked-in

    \r\n\r\n {\r\n //this.removeFromQueue(index);\r\n }}\r\n />\r\n\r\n

    Check-out

    \r\n\r\n {\r\n //this.removeFromQueue(index);\r\n }}\r\n />\r\n\r\n \r\n Return\r\n

    \r\n\r\n

    Due to be returned

    \r\n\r\n
    \r\n {_.map(displayDueParcels, parcel => {\r\n const tenant = _.find(this.props.residents, tenant => {\r\n return tenant.id === parcel.memberId;\r\n });\r\n\r\n return (\r\n {\r\n this.select(parcel, tenant);\r\n }}\r\n data={{\r\n id: parcel.id,\r\n parcel: parcel,\r\n tenant: tenant\r\n }}\r\n />\r\n );\r\n })}\r\n
    \r\n\r\n
    \r\n {\r\n history.push({\r\n pathname: \"/concierge/parcel/returnlog\",\r\n state: { dueParcels: this.props.dueParcels }\r\n });\r\n }}\r\n />\r\n
    \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n statusCodes: parcelsSelector.getStatusCodes(state),\r\n checkedInParcels: parcelsSelector.getCheckedInParcels(state),\r\n checkedOutParcels: parcelsSelector.getCheckedOutParcels(state),\r\n parcels: parcelsSelector.getParcels(state),\r\n returnedParcels: parcelsSelector.getReturnedParcels(state),\r\n modules: moduleSelectors.loadModules(state),\r\n dueParcels: parcelsSelector.getDueParcels(state),\r\n residents: residentSelector.getResidents(state)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(CheckInOutScreen);\r\n","import React, { Component } from \"react\";\r\nimport autobind from \"react-autobind\";\r\nimport { connect } from \"react-redux\";\r\nimport _ from \"lodash\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\n\r\n\r\nimport DataList from \"../../../components/DetailList/DetailList\";\r\n\r\nimport Button from \"../../../components/Button/Button\";\r\nconst searchOption = {\r\n Resident: \"name\",\r\n Address: \"address\"\r\n};\r\n\r\nclass ResidentScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n type: \"residents\",\r\n resident: \"\",\r\n search: \"\",\r\n residentColor: \"\",\r\n searchType:\r\n searchOption.Resident /** This would store the search option by (name / address) default set as name*/,\r\n validSearch: false\r\n };\r\n\r\n autobind(this);\r\n }\r\n handleKeyPress(e) {\r\n const { search, searchType } = this.state;\r\n if (e.key === \"Enter\") {\r\n var split = search\r\n .trim()\r\n .split(\" \")\r\n .filter(value => {\r\n return value !== \"\";\r\n });\r\n\r\n let data = {\r\n firstname: null,\r\n lastname: null,\r\n address: null\r\n };\r\n\r\n if (split.length === 2 && searchType === searchOption.Resident) {\r\n this.setState({\r\n validSearch: true\r\n });\r\n data = {\r\n firstname: split[0],\r\n lastname: split[1],\r\n address: null\r\n };\r\n } else if (split.length === 1 && searchType === searchOption.Resident) {\r\n this.setState({\r\n validSearch: true\r\n });\r\n data = {\r\n firstname: split[0],\r\n lastname: \"\",\r\n address: null\r\n };\r\n } else if (searchType === searchOption.Address) {\r\n this.setState({\r\n validSearch: true\r\n });\r\n data = {\r\n firstname: null,\r\n lastname: null,\r\n address: search\r\n };\r\n } else {\r\n this.props.dispatch(residentActions.clearSearchQueue());\r\n this.setState({\r\n validSearch: false\r\n });\r\n }\r\n\r\n if (split.length > 0)\r\n setTimeout(() => {\r\n this.props.dispatch(residentActions.searchResidents(data));\r\n }, 0);\r\n }\r\n }\r\n\r\n handleChange(e) {\r\n let field = e.target.name;\r\n let value = e.target.value;\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n handleOptionSelected(e) {\r\n this.setState({\r\n searchType: e.target.value\r\n });\r\n }\r\n /**Method to handle resident view item clicked on listed view */\r\n handleViewClick(e) {\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/profile\",\r\n state: { residentId: e }\r\n });\r\n }\r\n\r\n handleSearchOption(val) {\r\n this.setState({\r\n searchType: val\r\n });\r\n }\r\n\r\n render() {\r\n\r\n const { searchResidentsQueue } = this.props;\r\n let searchQueue = _.map(searchResidentsQueue, (resident, index) => {\r\n return {\r\n id: resident.id,\r\n fullName: `${resident.firstName} ${resident.lastName}`,\r\n address: `${resident.addressLine1} ${resident.addressLine2 ? resident.addressLine2 : \"\"}`\r\n };\r\n });\r\n \r\n return (\r\n
    \r\n \r\n
    \r\n \r\n this.handleKeyPress(e)}\r\n />\r\n
    \r\n
    \r\n {\r\n this.handleSearchOption(searchOption.Resident);\r\n }}\r\n >\r\n Resident\r\n
    \r\n
    \r\n {\r\n this.handleSearchOption(searchOption.Address);\r\n }}\r\n >\r\n Address\r\n
    \r\n
    \r\n
    \r\n {/**No data result */\r\n this.state.validSearch === false ||\r\n (this.props.searchResidentsQueue &&\r\n this.props.searchResidentsQueue.length === 0) ? (\r\n
    \r\n \r\n Couldn't find a resident? Click below to create a new resident.\r\n {\" \"}\r\n
    {/** remove when css added */}\r\n {\r\n this.props.history.push('/concierge/residents/addnew',\r\n {\r\n search: this.state.search,\r\n firstName: this.state.fname,\r\n lastName: this.state.lname\r\n });\r\n }}\r\n />\r\n
    \r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {/**Search Result minimal data exposed, data available based on list design, will be extending the DataList component for this*/}\r\n {this.props.searchResidentsQueue && (\r\n this.handleViewClick(e)}\r\n />\r\n )}\r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n searchResidentsQueue: residentSelectors.getSearchedResidents(state),\r\n modules: moduleSelectors.loadModules(state)\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(ResidentScreen));\r\n","export const KEYS_LOG_LOADED_SUCCESS = \"KEYS_HISTORY_LOADED_SUCCESS\";\r\nexport const KEYS_STATUSES_LOADED_SUCCESS = \"KEY_STATUSES_LOADED_SUCCESS\";\r\nexport const KEYS_LOADED_SUCCESS = \"KEYS_LOADED_SUCCESS\";\r\nexport const KEYS_LOG_LOADED_FAIL = \"KEYS_HISTORY_LOADED_FAIL\";\r\nexport const KEYS_STATUSES_LOADED_FAIL = \"KEY_STATUSES_LOADED_FAIL\";\r\nexport const KEYS_LOADED_FAIL = \"KEYS_LOADED_FAIL\";\r\nexport const ASSIGN_KEY_SUCCESS = \"ASSIGN_KEY_SUCCESS\";\r\nexport const ASSIGN_KEY_FAIL = \"ASSIGN_KEY_FAIL\";\r\nexport const RETURN_KEY_SUCCESS = \"RETURN_KEY_SUCCESS\";\r\nexport const RETURN_KEY_FAIL = \"RETURN_KEY_FAIL\";\r\nexport const OVERDUE_KEY_LOG_LOAD_SUCCESS = \"OVERDUE_KEY_LOG_LOAD_SUCCESS\";\r\nexport const KEY_LOG_LIST_LOAD_SUCCESS = \"KEY_LOG_LIST_LOAD_SUCCESS\";\r\nexport const KEY_LOG_LIST_LOAD_FAIL = \"KEY_LOG_LIST_LOAD_FAIL\";\r\nexport const SET_KEY_SUCCESS = \"SET_KEY_SUCCESS\";\r\nexport const KEY_STATUS_UPDATE_SUCCESS = \"KEY_STATUS_UPDATE_SUCCESS\";\r\nexport const KEY_STATUS_UPDATE_FAIL = \"KEY_STATUS_UPDATE_FAIL\";\r\nexport const RESET_ACTION_STATUS = \"RESET_ACTION_STATUS\";\r\nexport const NOTIFY_KEY_ASSIGNED_SUCCESS = \"NOTIFY_KEY_ASSIGNED_SUCCESS\";\r\nexport const NOTIFY_KEY_RETURNED_SUCCESS = \"NOTIFY_KEY_RETURNED_SUCCESS\";\r\nexport const NOTIFY_KEY_RETURNED_FAIL = \"NOTIFY_KEY_RETURNED_FAIL\";","import * as config from \"./config\";\r\nimport authService from \"./loginService\";\r\n\r\nclass KeyServices {\r\n /**API endpoint to get all key records */\r\n async getKeys() {\r\n const url = `${config.KEYS_RECORD_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(`getKeys service failed, HTTP status ${response.status}`);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n /**API endpoint to get all statuses */\r\n async getKeyStatuses() {\r\n const url = `${config.KEY_STATUSES_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `getKeyStatuses service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n /**Assign / log key request */\r\n async logKey(data) {\r\n const url = `${config.KEYS_LOG_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n throw new Error(`log key service failed, HTTP status ${response.status}`);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async getKeylogKeyStatus(keyData) {\r\n const url = `${config.KEYS_LOG_BY_KEY_STATUS}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(keyData)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `lgetKeylogKeyStatus failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async getDueKeyLogByKeyId(id) {\r\n const url = `${config.KEY_LOG_BY_KEYID}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url + \"?keyid=\" + id, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `getDueKeyLogByKeyId failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async returnKey(data) {\r\n const url = `${config.RETURN_KEY_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(`greturnKey failed, HTTP status ${response.status}`);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async getKyLogsbyKeyIds(data) {\r\n const url = `${config.KEY_LOG_BY_KEYID}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data),\r\n \r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `ggetKyLogsbyKeyIds failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n /**Get key logs list of specified key id */\r\n async getKeyLogList(lastrecord, keyid) {\r\n const url = `${config.KEY_LOG_LIST_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(\r\n url + `${\"?lastrecordid=\"}${lastrecord}${\"&keyid=\"}${keyid}`,\r\n {\r\n method: \"GET\",\r\n headers: requestHeader\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(`getKeyLogList failed, HTTP status ${response.status}`);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async updateKey(data) {\r\n const url = `${config.KEY_STATUS_UPDATE}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(`updateKey failed, HTTP status ${response.status}`);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async notifyKeyassigned(data) {\r\n const url = `${config.NOTIFY_KEY_ASSIGNED}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(`notifyKeyassigned failed, HTTP status ${response.status}`);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n //send notification on key returned\r\n async notifyKeyReturned(data) {\r\n const url = `${config.NOTIFY_KEY_RETURNED}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(`notifyKeyreturned failed, HTTP status ${response.status}`);\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default new KeyServices();\r\n","import * as types from './actionTypes';\r\nimport KeyServices from '../../services/KeyServices';\r\n\r\nexport function getAllKeys(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst keys = await KeyServices.getKeys();\r\n\t\t\tdispatch({ type: types.KEYS_LOADED_SUCCESS, keys });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tdispatch({ type: types.KEYS_LOADED_FAIL, error });\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getKeyStatuses(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst statuses = await KeyServices.getKeyStatuses();\r\n\t\t\tdispatch({ type: types.KEYS_STATUSES_LOADED_SUCCESS, statuses });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tdispatch({ type: types.KEYS_STATUSES_LOADED_FAIL, error });\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function assignKey(data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst result = await KeyServices.logKey(data);\r\n\t\t\tdispatch({ type: types.ASSIGN_KEY_SUCCESS, response: result });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tdispatch({ type: types.ASSIGN_KEY_FAIL });\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getKeyLogByKeyStatus(data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst log = await KeyServices.getKeylogKeyStatus(data);\r\n\r\n\t\t\tdispatch({ type: types.KEYS_LOG_LOADED_SUCCESS, keysLog: log });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tdispatch({ type: types.KEYS_LOG_LOADED_FAIL, status: false });\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// export function getOverduKeyLogs(data, callback = () => {}) {\r\n// return async (dispatch, getState) => {\r\n// try {\r\n// let keyLogs = [];\r\n// if (data && data.length > 0) {\r\n// for (let i = 0; i < data.length; i++) {\r\n// var response = await KeyServices.getDueKeyLogByKeyId(data[i].keyid);\r\n// keyLogs.push(response);\r\n// }\r\n\r\n// dispatch({ type: types.OVERDUE_KEY_LOG_LOAD_SUCCESS, logs: keyLogs });\r\n// callback(true);\r\n// }\r\n// } catch (error) {\r\n// console.error(error);\r\n// }\r\n// };\r\n// }\r\n\r\nexport function returnKey(data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst result = await KeyServices.returnKey(data);\r\n\t\t\tdispatch({ type: types.RETURN_KEY_SUCCESS, response: result });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tdispatch({ type: types.RETURN_KEY_FAIL, data });\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function loadOverdueKeyLogs(data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst logs = await KeyServices.getKyLogsbyKeyIds(data);\r\n\t\t\tdispatch({ type: types.OVERDUE_KEY_LOG_LOAD_SUCCESS, logs });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function loadKeyLogList(lastRecord, keyId, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst loglist = await KeyServices.getKeyLogList(lastRecord, keyId);\r\n\t\t\tdispatch({ type: types.KEY_LOG_LIST_LOAD_SUCCESS, loglist });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setSelectedKey(id, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.SET_KEY_SUCCESS, key: id });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function updateKeyStatus(data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst response = await KeyServices.updateKey(data);\r\n\t\t\tdispatch({ type: types.KEY_STATUS_UPDATE_SUCCESS, response });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tdispatch({ type: types.KEY_STATUS_UPDATE_FAIL });\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function resetAction(reset) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.RESET_ACTION_STATUS });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function sendKeyAssignedNotification(data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst response = await KeyServices.notifyKeyassigned(data);\r\n\r\n\t\t\tdispatch({ type: types.NOTIFY_KEY_ASSIGNED_SUCCESS, response });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function sendKeyReturnNotification(data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst response = await KeyServices.notifyKeyReturned(data);\r\n\t\t\tif (response === true) {\r\n\t\t\t\tdispatch({ type: types.NOTIFY_KEY_RETURNED_SUCCESS, response });\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tdispatch({ type: types.NOTIFY_KEY_RETURNED_FAIL, response });\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\nimport _ from \"lodash\";\r\n\r\nconst initialState = Immutable({\r\n key: undefined,\r\n keys: [],\r\n statuses: [],\r\n keysLog: [],\r\n keyActionStatus: undefined,\r\n overdueKeyLog: [],\r\n logList: [],\r\n selectedKey: undefined,\r\n notificationSent: undefined\r\n});\r\n\r\nexport default function keyReducer(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.KEYS_LOADED_SUCCESS:\r\n return state.merge({\r\n keys: action.keys\r\n });\r\n case types.KEYS_LOG_LOADED_SUCCESS:\r\n return state.merge({\r\n keysLog: _.filter(action.keysLog, o => o !== null)\r\n });\r\n case types.KEYS_STATUSES_LOADED_SUCCESS:\r\n return state.merge({\r\n statuses: action.statuses\r\n });\r\n case types.ASSIGN_KEY_SUCCESS:\r\n return state.merge({\r\n key: action.response,\r\n keyActionStatus: !_.isUndefined(action.response)\r\n ? { status: \"assigned\", action: true }\r\n : { action: false }\r\n });\r\n case types.OVERDUE_KEY_LOG_LOAD_SUCCESS:\r\n return state.merge({\r\n overdueKeyLog: action.logs\r\n });\r\n case types.RETURN_KEY_SUCCESS:\r\n return state.merge({\r\n key: action.response,\r\n keyActionStatus: !_.isUndefined(action.response)\r\n ? { status: \"returned\", action: true }\r\n : { action: false }\r\n });\r\n case types.ASSIGN_KEY_FAIL:\r\n return state.merge({\r\n keyActionStatus: { status: \"fail\", action: false }\r\n });\r\n case types.KEY_LOG_LIST_LOAD_SUCCESS:\r\n let list = _.isUndefined(state.selectedKey)\r\n ? action.loglist\r\n : _.filter(action.loglist, o => o.keyId === state.selectedKey.id);\r\n\r\n return state.merge({\r\n logList: list\r\n });\r\n\r\n case types.SET_KEY_SUCCESS:\r\n return state.merge({\r\n selectedKey: _.find(state.keys, o => o.id === action.key)\r\n });\r\n case types.KEY_STATUS_UPDATE_SUCCESS:\r\n return state.merge({\r\n keyActionStatus: !_.isUndefined(action.response)\r\n ? { status: \"returned\", action: true }\r\n : { action: false }\r\n });\r\n case types.KEY_STATUS_UPDATE_FAIL:\r\n return state.merge({\r\n keyActionStatus: { status: \"fail\", action: false }\r\n });\r\n case types.RESET_ACTION_STATUS:\r\n return state.merge({\r\n keyActionStatus: { action: false }\r\n })\r\n case types.NOTIFY_KEY_ASSIGNED_SUCCESS:\r\n return state.merge({\r\n notificationSent: !_.isUndefined(action.response) ? true : false\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function loadAllKeys(state) {\r\n return state.keys.keys;\r\n}\r\nexport function loadkeyStatuses(state) {\r\n return state.keys.statuses;\r\n}\r\nexport function loadKeysLog(state) {\r\n return state.keys.keysLog;\r\n}\r\n\r\nexport function loadKey(state) {\r\n return state.keys.key;\r\n}\r\n\r\n/**Used only in key test screen, to be removed */\r\nexport function assignedKey(state) {\r\n return state.keys.key;\r\n}\r\n\r\nexport function getKeyActionStatus(state) {\r\n return state.keys.keyActionStatus;\r\n}\r\n\r\nexport function getOverdueKeyLog(state) {\r\n return state.keys.overdueKeyLog;\r\n}\r\n\r\nexport function getKeyLogList(state) {\r\n return state.keys.logList;\r\n}\r\n\r\nexport function getSelectedKey(state) {\r\n return state.keys.selectedKey;\r\n}\r\n\r\nexport function getNotificationSentsuccess(state) {\r\n return state.keys.notificationSent;\r\n}","import * as config from \"./config\";\r\nimport authService from \"./loginService\";\r\n\r\nclass AddressLookUpServices {\r\n async getAddresses() {\r\n const url = `${config.ADDRESSES_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n throw new Error(\r\n `get modules service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default new AddressLookUpServices();\r\n","import * as types from \"./actionTypes\";\r\nimport AddressLookUpServices from \"../../services/AddressLookUpServices\";\r\n\r\nexport function loadAddresses() {\r\n return async (dispatch, getState) => {\r\n try {\r\n const result = await AddressLookUpServices.getAddresses();\r\n\r\n dispatch({\r\n type: types.ADDRESSES_LOAD_SUCCESS,\r\n addresses: result\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport _ from \"lodash\";\r\nimport \"../../sass/components/DetailList/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * Display list of up to four properties with an con in the third column. Data is passed in as an array and mapped to appropriate\r\n * column with the listsConfig.\r\n */\r\nclass DetailList5Column extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.listsConfig = {\r\n types: [\r\n {\r\n name: \"key-view-list\",\r\n headings: [\"Key ID\",\"Status\", \"Name\", \"Type\", \"Address\"],\r\n fields: [\"keyid\",\"status\", \"name\", \"type\", \"address\", \"id\"],\r\n link: \"view\"\r\n },\r\n {\r\n name: \"key-history-list\",\r\n headings: [\"Date Assigned\",\"Date of Return\", \"Name\", \"Type\", \"Address\"],\r\n fields: [\"dateAssigned\",\"dateReturned\", \"name\", \"type\", \"address\", \"id\"],\r\n },\r\n {\r\n name: \"resource-booking-list\",\r\n headings: [\"Resource\", \"Tenant Name\", \"Duration\", \"Price\"],\r\n fields: [\"resource\", \"tenant\", \"duration\", \"price\", \"id\"],\r\n\r\n }\r\n ]\r\n };\r\n }\r\n\r\n // Utility function so fields: [] options above can optionally specifiy a path to a nested value\r\n // e.g. for a parcel location.locationName\r\n // https://stackoverflow.com/questions/6491463\r\n accessObjectByString(o, s) {\r\n s = s.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n s = s.replace(/^\\./, \"\"); // strip a leading dot\r\n var a = s.split(\".\");\r\n for (var i = 0, n = a.length; i < n; ++i) {\r\n var k = a[i];\r\n if (k in o) {\r\n o = o[k];\r\n } else {\r\n return;\r\n }\r\n }\r\n return o;\r\n }\r\n\r\n render() {\r\n const { listType, data, pageClass } = this.props;\r\n\r\n let { headingsAlone } = this.props;\r\n\r\n const config = _.find(this.listsConfig.types, type => {\r\n return type.name === listType;\r\n });\r\n\r\n if (_.isUndefined(headingsAlone)) {\r\n headingsAlone = false;\r\n }\r\n\r\n if ((_.isUndefined(data) || data.length === 0) && headingsAlone === false) {\r\n return false;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {headingsAlone && headingsAlone === true && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {data.length > 0 &&\r\n data.map((row, rowIndex) => {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {\r\n this.props.actionClick(\r\n this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[5]\r\n )\r\n );\r\n }}\r\n >\r\n {!_.isUndefined(config.iconClass) ? (\r\n \r\n ) : !_.isUndefined(config.link) ? (\r\n {config.link}\r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n {data.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n
    {config.headings[0]}{config.headings[1]}{config.headings[2]}{config.headings[3]}{config.headings[4]}\r\n
    \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[0]\r\n )}\r\n \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[1]\r\n )}\r\n \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[2]\r\n )}\r\n \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[3]\r\n )}\r\n \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[4]\r\n )}\r\n
    \r\n

    \r\n {this.props.emptyMessage}\r\n

    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nDetailList5Column.propTypes = {\r\n /** Message to display if the table is empty */\r\n emptyMessage: PropTypes.string,\r\n /** Function that is called for clicking on the icon */\r\n actionClick: PropTypes.func,\r\n /** If list data is empty can headings be displayed on their own? */\r\n headingsAlone: PropTypes.bool,\r\n /** The configuration to use from listsConfig in the component constrctor. (specifies icon and data to column mappings) */\r\n listType: PropTypes.string,\r\n /** An array of objects, fields are variable as long as configuration is available for mappings in listsConfig */\r\n data: PropTypes.array,\r\n /**The class name for the detail list */\r\n pageClass: PropTypes.string\r\n};\r\n\r\nexport default DetailList5Column;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport autobind from 'react-autobind';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport * as $ from 'jquery';\r\nimport {withRouter} from 'react-router-dom';\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\n\r\nimport * as keysActions from '../../../store/Keys/actions';\r\nimport * as keySelectors from '../../../store/Keys/reducer';\r\nimport * as addressLookupActions from '../../../store/AddressLookUp/actions';\r\nimport * as addressLookupSelectors from '../../../store/AddressLookUp/reducer';\r\nimport * as residentActions from '../../../store/Residents/actions';\r\nimport * as residentSelectors from '../../../store/Residents/reducer';\r\n\r\nimport DataListMulti from '../../../components/DetailList/DetailList5Column';\r\n\r\nimport '../../../sass/containers/Keys/index.css';\r\nimport '../../../sass/components/DateTimePicker/index.css';\r\n\r\nconst searchOption = {\r\n\tAddress: 'address',\r\n\tKeyCode: 'barcode'\r\n};\r\n\r\nclass KeysScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\ttype: 'keys',\r\n\t\t\tsearch: '',\r\n\t\t\tsearchType: 'address',\r\n\t\t\tvalidSearch: false,\r\n\t\t\tkeysLog: [],\r\n\t\t\tkeyList: [],\r\n\t\t\tkeyLogList: [],\r\n\t\t\toverlayColor: '',\r\n\t\t\tcurrentKeyList: undefined,\r\n\t\t\texpectedReturnDate: '',\r\n\t\t\tname: '',\r\n\t\t\trecip: [],\r\n\t\t\tselectedKey: undefined,\r\n\t\t\ttenantId: '',\r\n\t\t\tstatus: ''\r\n\t\t};\r\n\r\n\t\tthis.props.dispatch(keysActions.getAllKeys());\r\n\t\tthis.props.dispatch(keysActions.getKeyStatuses());\r\n\t\tthis.props.dispatch(residentActions.getAllResidents());\r\n\t\tthis.props.dispatch(addressLookupActions.loadAddresses());\r\n\t\tthis.props.dispatch(keysActions.loadKeyLogList(null, null));\r\n\r\n\t\t//this.assignKeyValidation = null;\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\tcomponentWillMount() {\r\n\t\tlet overlayColor;\r\n\r\n\t\tlet currentModule = _.find(this.props.modules, (o) => o.title === 'Keys');\r\n\t\toverlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\r\n\t\tthis.setState({\r\n\t\t\toverlayColor: overlayColor\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\r\n\t\t/**find over due keys */\r\n\t\tif (this.props.keys !== prevProps.keys && this.props.keys.length > 0) {\r\n\t\t\tlet overdue = _.filter(this.props.keys, (o) => o.status === 'overdue');\r\n\r\n\t\t\tlet keyList = _.map(overdue, (item) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tkeyId: item.id\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tif(keyList && keyList.length > 0){\r\n\t\t\t\tthis.loadOverdueKeyLog(keyList);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (prevProps.statuses !== this.props.statuses && !_.isUndefined(this.props.statuses)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tstatuses: this.props.statuses\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (prevProps.keysLog !== this.props.keysLog && this.props.keysLog.length > 0) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tkeysLog: _.filter(this.props.keysLog, (o) => o !== null)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (prevProps.logList !== this.props.logList) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tkeyLogList: this.props.logList\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t\r\n\t}\r\n\r\n\thandleChange(e) {\r\n\t\tvar field = e.target.name;\r\n\t\tvar value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\t}\r\n\r\n\t/**handle selected option, deselected to default option (barcode) */\r\n\thandleSearchOption(selected) {\r\n\t\tthis.setState({\r\n\t\t\tsearchType: this.state.searchType === selected ? '' : selected\r\n\t\t});\r\n\t}\r\n\r\n\thandleKeyLogList(data) {\r\n\t\tthis.props.dispatch(keysActions.getKeyLogByKeyStatus(data));\r\n\t}\r\n\r\n\tloadOverdueKeyLog(data) {\r\n\t\tthis.props.dispatch(keysActions.loadOverdueKeyLogs(data));\r\n\t}\r\n\thandleKeyPressSearch(e) {\r\n\t\tconst { search, searchType, keyLogList } = this.state;\r\n\t\tconst { addressLookup, keys } = this.props;\r\n\r\n\t\tlet addr_data = undefined;\r\n\t\tlet key_collection = [];\r\n\t\t\r\n\t\tlet keyList = [];\r\n\r\n\t\tif (e.key === 'Enter') {\r\n\t\t\tif (searchType === searchOption.Address) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tvalidSearch: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/**Find address from lookup */\r\n\t\t\t\taddr_data = _.find(\r\n\t\t\t\t\taddressLookup,\r\n\t\t\t\t\t(address) => address.addr1FlatNumber.toLowerCase() === search.toLowerCase() || \r\n\t\t\t\t\taddress.addr2BuildingName.toLowerCase() === search.toLowerCase() || \r\n\t\t\t\t\taddress.addr3StreetNumber.toLowerCase() === search.toLowerCase()\r\n\t\t\t\t);\r\n\r\n\t\t\t\tlet address_list = _.filter(\r\n\t\t\t\t\taddressLookup,\r\n\t\t\t\t\t(addr) => addr.addr1FlatNumber.toLowerCase() === search.toLowerCase() || \r\n\t\t\t\t\taddr.addr2BuildingName.toLowerCase() === search.toLowerCase() || \r\n\t\t\t\t\taddr.addr3StreetNumber.toLowerCase() === search.toLowerCase()\r\n\t\t\t\t);\r\n\r\n\t\t\t\r\n\t\t\t\t/**Match each key collection to address search results list */\t\r\n\t\t\t\tlet key_addr_data_ =\r\n\t\t\t\tkeys && keys.length > 0\r\n\t\t\t\t\t\t? _.map(keys, (keyObj) => {\r\n\t\t\t\t\t\t\t\tlet keyAddrVal = _.find(address_list, (addr) => keyObj.lookupAddressId === addr.id);\r\n\t\t\t\t\t\t\t\tif (!_.isUndefined(keyAddrVal)) {\r\n\r\n\t\t\t\t\t\t\t\t\tlet address = formatAddress(keyAddrVal.addr1FlatNumber, keyAddrVal.addr2BuildingName, keyAddrVal.addr3StreetNumber, keyAddrVal.addr4Town);\r\n\r\n\t\t\t\t\t\t\t\t\t//let address = `${addrObj.addr1FlatNumber} ${', '} ${addrObj.addr2BuildingName} ${', '} ${addrObj.addr3StreetNumber} ${', '} ${addrObj.addr4Town}`;\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tlet key_add = { ...keyObj, address };\r\n\t\t\t\t\t\t\t\t\tkey_collection.push(key_add);\r\n\r\n\t\t\t\t\t\t\t\t\treturn key_add;\r\n\t\t\t\t\t\t\t\t} else{\r\n\t\t\t\t\t\t\t\t\treturn undefined\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t: [];\r\n\r\n\t\t\t\t\r\n\t\t\t\t/**for each key record foudn, re form data to custom list for display */\r\n\t\t\t\tkeyList = _.filter(\r\n\t\t\t\t\t_.map(key_collection, (data) => {\r\n\t\t\t\t\t\tif (data.lookupAddressId === addr_data.id) {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet key_Addr = {\r\n\t\t\t\t\t\t\tid: data.id,\r\n\t\t\t\t\t\t\tstatus: _.startCase(_.camelCase(data.status)),\r\n\t\t\t\t\t\t\taddress: data.address ? data.address : '',\r\n\t\t\t\t\t\t\tkeyid: data.barcode\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\treturn key_Addr;\r\n\r\n\t\t\t\t\t\t//return null;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(item) => item !== null\r\n\t\t\t\t);\r\n\t\t\t} else if (searchType === searchOption.Resident) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tvalidSearch: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/**Check search data for paired name value */\r\n\t\t\t\tvar split = search.trim().split(' ').filter((value) => {\r\n\t\t\t\t\treturn value !== '';\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet residents = [];\r\n\t\t\t\tlet residentskeyLog = _.filter(keyLogList, (x) => x.recipientType !== 'Visitor');\r\n\t\t\t\tlet visitorskeyLog = _.filter(keyLogList, {\r\n\t\t\t\t\trecipientType: 'Visitor'\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet visitors = [];\r\n\r\n\t\t\t\t/**First name condition used */\r\n\t\t\t\tif (split.length === 1) {\r\n\t\t\t\t\tresidents = _.filter(\r\n\t\t\t\t\t\tresidentskeyLog,\r\n\t\t\t\t\t\t(item) =>\r\n\t\t\t\t\t\t\titem.firstName.toLowerCase() === split[0].toLowerCase() ||\r\n\t\t\t\t\t\t\titem.lastName.toLowerCase() === split[0].toLowerCase()\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tvisitors = _.filter(\r\n\t\t\t\t\t\tvisitorskeyLog,\r\n\t\t\t\t\t\t(item) =>\r\n\t\t\t\t\t\t\titem.firstName.toLowerCase() === split[0].toLowerCase() ||\r\n\t\t\t\t\t\t\titem.lastName.toLowerCase() === split[0].toLowerCase()\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (split.length > 1) {\r\n\t\t\t\t\t/**paired name condition. split to first and last name */\r\n\t\t\t\t\tresidents = _.filter(\r\n\t\t\t\t\t\tresidentskeyLog,\r\n\t\t\t\t\t\t(item) =>\r\n\t\t\t\t\t\t\titem.firstName.toLowerCase() === split[0].toLowerCase() &&\r\n\t\t\t\t\t\t\titem.lastName.toLowerCase() === split[1].toLowerCase()\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tvisitors = _.filter(\r\n\t\t\t\t\t\tvisitorskeyLog,\r\n\t\t\t\t\t\t(item) =>\r\n\t\t\t\t\t\t\titem.firstName.toLowerCase() === split[0].toLowerCase() &&\r\n\t\t\t\t\t\t\titem.lastName.toLowerCase() === split[1].toLowerCase()\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\r\n\r\n\t\t\t\tlet visitorkeyList = _.map(visitors, (item) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: item.keyId\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet residentkeyList = _.map(residents, (item) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: item.keyId\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t\tkeyList = visitorkeyList.concat(residentkeyList);\r\n\t\t\t} else if (searchType === searchOption.KeyCode) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tvalidSearch: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\tkeyList = _.map(_.filter(keys, (o) => o.barcode === search), (item) => {\r\n\t\t\t\t\tlet addr = _.find(addressLookup, (address) => address.id === item.lookupAddressId);\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: item.id,\r\n\t\t\t\t\t\tstatus: item.status,\r\n\t\t\t\t\t\taddress: formatAddress(addr.addr1FlatNumber, addr.addr2BuildingName, addr.addr3StreetNumber, addr.addr4Town)\r\n\t\t\t\t\t\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet logList = _.map(keyList, (o) => {\r\n\t\t\treturn {\r\n\t\t\t\tkeyId: o.id\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif (logList && logList.length > 0) this.handleKeyLogList(logList);\r\n\r\n\t\tthis.setState({\r\n\t\t\tkeyList: logList\r\n\t\t});\r\n\t}\r\n\r\n\thandleViewClick(e) {\r\n\t\tlet selectKey = _.find(this.props.keys, (o) => o.id === e);\r\n\t\tif (selectKey && !_.isUndefined(selectKey)) {\r\n\t\t\tlet keyStatus = selectKey.status;\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tselectedKey: selectKey,\r\n\t\t\t\taddresslookupId: !_.isUndefined(selectKey) ? selectKey.lookupAddressId : undefined\r\n\t\t\t});\r\n\r\n\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/concierge/keys/profile',\r\n\r\n\t\t\t\tstate: {\r\n\t\t\t\t\tkeyId: selectKey.id,\r\n\t\t\t\t\tselectedKey: selectKey,\r\n\t\t\t\t\tstatus: keyStatus,\r\n\t\t\t\t\tkeyList: this.state.keyList\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\thandleDateChange(val) {\r\n\t\tthis.setState({\r\n\t\t\tselectedDate: val\r\n\t\t});\r\n\t}\r\n\r\n\taddValidation() {\r\n\t\tthis.assignKeyValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tvalidate(fromSubmit = false) {\r\n\t\tthis.assignKeyValidation.validate({\r\n\t\t\tforce: true\r\n\t\t});\r\n\t\tconst valid = this.assignKeyValidation.isValid();\r\n\r\n\t\tthis.setState({\r\n\t\t\tassignKeyFormValid: valid,\r\n\t\t\tassignKeyFormUsed: true\r\n\t\t});\r\n\r\n\t\tif (valid === true && fromSubmit === true) {\r\n\t\t\tthis.formReset();\r\n\r\n\t\t\tthis.handleAssign();\r\n\t\t\tthis.setState({\r\n\t\t\t\tassignKeyFormUsed: false\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tformReset() {\r\n\t\tthis.setState({\r\n\t\t\temail: '',\r\n\t\t\taddresslookupId: '',\r\n\t\t\tphone: '',\r\n\t\t\taddress: '',\r\n\t\t\tselectedKey: undefined,\r\n\t\t\ttenant: '',\r\n\t\t\ttenantId: '',\r\n\t\t\tselectedTenant: undefined,\r\n\t\t\tselectedDate: moment()\r\n\t\t});\r\n\r\n\t\t//this.refs['tenant-auto-suggest'].getWrappedInstance().reset();\r\n\t\t//this.refs['addr-auto-suggest'].getWrappedInstance().reset();\r\n\r\n\t\t$(this.refs.validate).get(0).reset();\r\n\r\n\t\tthis.assignKeyValidation.destroy();\r\n\r\n\t\t// Reset all the select input components to the placeholder value\r\n\t\tfor (let key in this.refs) {\r\n\t\t\tif (key.indexOf('formSelect') === 0) {\r\n\t\t\t\tthis.refs[key].reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.addValidation();\r\n\t\t}, 0);\r\n\t}\r\n\thandleAssign() {\r\n\t\tconst { selectedKey, selectedTenant } = this.state;\r\n\r\n\t\tlet data;\r\n\t\tif (selectedKey && selectedTenant) {\r\n\t\t\tdata = {\r\n\t\t\t\tkeyId: selectedKey.id,\r\n\t\t\t\tmemberId: this.state.tenantId,\r\n\t\t\t\texpectedDateReturn: this.state.selectedDate,\r\n\t\t\t\trecipientType: !_.isUndefined(selectedTenant)\r\n\t\t\t\t\t? this.state.selectedTenant.memberType\r\n\t\t\t\t\t: !_.isUndefined(this.state.selectedVisitor) ? 'Visitors' : '',\r\n\t\t\t\tvisitorId: !_.isUndefined(this.state.selectedVisitor) ? this.state.selectedVisitor.id : ''\r\n\t\t\t};\r\n\r\n\t\t\tthis.props.dispatch(keysActions.assignKey(data, (success) => {}));\r\n\t\t}\r\n\t}\r\n\trender() {\r\n\t\tconst { keyList } = this.state;\r\n\r\n\t\tconst keyStyle = {\r\n\t\t\tcolor: this.state.overlayColor\r\n\t\t};\r\n\r\n\t\tconst { keysLog, keys, addressLookup, overduekeysLog, logList} = this.props;\r\n\r\n\t\t//console.log(keyList);\r\n\t\tlet currentKeyList = _.filter(\r\n\t\t\t_.map(keyList, (o) => {\r\n\t\t\t\t/**Get key object */\r\n\t\t\t\tvar keyVal = _.find(keys, (k) => k.id === o.keyId);\r\n\r\n\t\t\t\tif (_.isUndefined(keyVal)) return null;\r\n\r\n\t\t\t\t/**Get Get address of key */\r\n\t\t\t\tlet addr = !_.isUndefined(keyVal)\r\n\t\t\t\t\t? _.find(addressLookup, (data) => data.id === keyVal.lookupAddressId)\r\n\t\t\t\t\t: undefined;\r\n\t\t\t\t\t\r\n\t\t\t\tlet recipient = {};\r\n\t\t\t\t/**Get log for specified key */\r\n\t\t\t\tvar val = !_.isUndefined(keyVal) ? _.find(logList, (item) => item.keyId === keyVal.id) : undefined;\r\n\r\n\t\t\t\t\r\n\t\t\t\t/**no log found, construct key data */\r\n\t\t\t\tif (_.isUndefined(val)) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: keyVal.id,\r\n\t\t\t\t\t\tstatus: _.startCase(_.camelCase(keyVal.status)),\r\n\r\n\t\t\t\t\t\ttype: keyVal.recipientType ? keyVal.recipientType : '',\r\n\t\t\t\t\t\tname: recipient ? recipient.name : '',\r\n\r\n\t\t\t\t\t\taddress: addr ? formatAddress(addr.addr1FlatNumber, addr.addr2BuildingName, addr.addr3StreetNumber, addr.addr4Town) : '',\r\n\r\n\t\t\t\t\t\tkeyid: keyVal.barcode\r\n\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**log data for key found, conustruct key log data */\r\n\t\t\t\t\r\n\t\t\t\t//if (val && val.recipientType === 'Visitor') {\r\n\t\t\t\t\trecipient = {\r\n\t\t\t\t\t\tname: `${val.firstName} ${val.lastName}`\r\n\t\t\t\t\t};\r\n\t\t\t\t//} else if (val && val.recipientType !== 'Visitor') {\r\n\t\t\t\t//\trecipient = {\r\n\t\t\t\t//\t\tname: `${val.resident.firstName} ${val.resident.lastName}`\r\n\t\t\t\t//\t};\r\n\t\t\t\t//}\r\n\r\n\t\t\t\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: val.keyId,\r\n\t\t\t\t\tstatus: _.startCase(_.camelCase(keyVal.status)),\r\n\t\t\t\t\ttype: val.recipientType,\r\n\t\t\t\t\tname: recipient ? recipient.name : '',\r\n\r\n\t\t\t\t\taddress: addr ? formatAddress(addr.addr1FlatNumber, addr.addr2BuildingName, addr.addr3StreetNumber, addr.addr4Town) : '',\r\n\r\n\t\t\t\t\t//address: addr ? `${addr.addr1FlatNumber} ${', '} ${addr.addr2BuildingName} ${', '} ${addr.addr3StreetNumber} ${', '} ${addr.addr4Town}` : '',\r\n\t\t\t\t\t\r\n\t\t\t\t\tkeyid: keyVal.barcode\r\n\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\t(item) => item !== null\r\n\t\t);\r\n\r\n\t\t\r\n\t\tcurrentKeyList.sort((a,b) => (a.address > b.address) ? 1 : ((b.address > a.address) ? -1 : 0)); \r\n\r\n\r\n\t\t/**construct the new overdue list to include visitor */\r\n\t\tlet newOverdueList = [];\r\n\t\tif (overduekeysLog.length > 0) {\r\n\t\t\r\n\t\t\t/**Iterate through current overdue log list, use map as array will be reconstructed */\r\n\t\t\tnewOverdueList = _.filter(\r\n\t\t\t\t_.map(overduekeysLog, (keyItem) => {\r\n\t\t\t\t\tlet recipient = {};\r\n\t\t\t\t\t\r\n\t\t\t\t\t/**find key data related to each keylog items */\r\n\t\t\t\t\tlet keydata =\r\n\t\t\t\t\t\t!_.isUndefined(keyItem) && !_.isNil(keyItem)\r\n\t\t\t\t\t\t\t? _.find(keys, (o) => o.id === keyItem.keyId)\r\n\t\t\t\t\t\t\t: undefined;\r\n\r\n\t\t\t\t\tif (_.isUndefined(keyItem) || _.isNil(keyItem)) return undefined;\r\n\r\n\t\t\t\t\t/**get the relevent address object for each key data */\r\n\t\t\t\t\tlet addr = !_.isUndefined(keydata)\r\n\t\t\t\t\t\t? _.find(addressLookup, (data) => data.id === keydata.lookupAddressId)\r\n\t\t\t\t\t\t: undefined;\r\n \r\n\t\t\t\t\t/**each key data has a recipent type, check the type and apply the recipient object for the required type */\r\n\t\t\t\t\tif (keyItem.recipientType === 'Visitor') {\r\n\t\t\t\t\t\trecipient = {\r\n\t\t\t\t\t\t\tname: keyItem.visitor ? `${keyItem.visitor.firstName} ${keyItem.visitor.surname}` : \"\"\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trecipient = {\r\n\t\t\t\t\t\t\tname: keyItem.resident ? `${keyItem.resident.firstName} ${keyItem.resident.lastName}` : \"\"\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/**the log list re-constructed to datalist needed values */\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: keyItem.keyId,\r\n\t\t\t\t\t\tstatus: _.startCase(_.camelCase('overdue')),\r\n\t\t\t\t\t\tname: recipient.name,\r\n\r\n\t\t\t\t\t\taddress: addr ? formatAddress(addr.addr1FlatNumber, addr.addr2BuildingName, addr.addr3StreetNumber, addr.addr4Town) : '',\r\n\r\n\t\t\t\t\t\t//address: addr ? `${addr.addr1FlatNumber} ${', '} ${addr.addr2BuildingName} ${', '} ${addr.addr3StreetNumber} ${', '} ${addr.addr4Town}` : '',\r\n\t\t\t\t\t\ttype: keyItem.recipientType,\r\n\t\t\t\t\t\tkeyid: keydata.barcode\r\n\r\n\t\t\t\t\t};\r\n\t\t\t\t}),\r\n\t\t\t\t(d) => {\r\n\t\t\t\t\treturn !_.isUndefined(d);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{' '}\r\n\t\t\t\t{/**Search form */}{' '}\r\n\t\t\t\t
    \r\n\t\t\t\t\t {' '}\r\n\t\t\t\t\t this.handleKeyPressSearch(e)}\r\n\t\t\t\t\t/>{' '}\r\n\t\t\t\t\t{' '}\r\n\t\t\t\t
    {' '}\r\n\t\t\t\t{' '}\r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.handleSearchOption(searchOption.Address);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tAddress {' '}\t\t\t\t\r\n\t\t\t\t\t
    {' '}\r\n\t\t\t\t\t{' '}\r\n\t\t\t\r\n\t\t\t\t\t{' '}\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\tthis.handleSearchOption(searchOption.KeyCode);\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\tKey ID/Code {' '}\r\n\r\n\r\n\r\n\t\t\t\t\t
    {' '}\r\n\t\t\t\t\t{' '}\r\n\t\t\t\t{' '}\r\n\t\t\t\t{' '}\r\n\t\t\t\t{this.state.validSearch &&\r\n\t\t\t\tthis.state.keyList.length === 0 && (\r\n\t\t\t\t\t

    We could not find any items related to your search

    \r\n\t\t\t\t)}{' '}\r\n\t\t\t\t{this.state.validSearch &&\r\n\t\t\t\tthis.state.validSearch === true &&\r\n\t\t\t\tthis.state.keyList.length !== 0 && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t this.handleViewClick(e)}\r\n\t\t\t\t\t\t\temptyMessage=\"\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\t\t\t\t{/** End of search form and list*/}\r\n\t\t\t\t
    \r\n\t\t\t\t\t

    Keys Overdue

    {' '}\r\n\t\t\t\t\t this.handleViewClick(e)}\r\n\t\t\t\t\t\temptyMessage=\"\"\r\n\t\t\t\t\t/>{' '}\r\n\t\t\t\t\t{newOverdueList.length === 0 &&

    There are currently no overdue keys

    } {' '}\r\n\t\t\t\t
    {' '}\r\n\t\t\t\t{' '}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tkeys: keySelectors.loadAllKeys(state),\r\n\t\taddressLookup: addressLookupSelectors.getAddresses(state),\r\n\t\tresidents: residentSelectors.getResidents(state),\r\n\t\t//keyActionStatus: keySelectors.getKeyActionStatus(state),\r\n\t\t//assignedKey: keySelectors.assignedKey(state),\r\n\t\toverduekeysLog: keySelectors.getOverdueKeyLog(state),\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tstatuses: keySelectors.loadkeyStatuses(state),\r\n\t\tkeysLog: keySelectors.loadKeysLog(state),\r\n\t\tlogList: keySelectors.getKeyLogList(state)\r\n\t};\r\n}\r\n\r\nfunction formatAddress(add1, add2, add3, add4) {\r\n\tvar addressFormatted = '';\r\n\tif (add2) {\r\n\t\taddressFormatted = `${add1}${', '}${add2}${', '}${add3}${', '}${add4}`;\r\n\t}\r\n\telse\r\n\t{\r\n\t\taddressFormatted = `${add1}${', '}${add3}${', '}${add4}`;\r\n\t}\r\n\treturn addressFormatted;\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(KeysScreen));\r\n","export const MEETING_RECORD_LOADED_SUCCESS = \"MEETING_RECORD_LOADED_SUCCESS\";\r\nexport const MEETING_RECORD_LOADED_FAIL = \"MEETING_RECORD_LOADED_FAIL\";\r\nexport const NEW_MEETING_CREATED_SUCCESS = \"NEW_MEETING_CREATED_SUCCESS\";\r\nexport const NEW_MEETING_CREATED_FAIL = \"NEW_MEETING_CREATED_FAIL\";\r\nexport const NEW_METTING_ADD_TO_QUEUE = \"NEW_METTING_ADD_TO_QUEUE\";\r\nexport const NEW_METTING_REMOVE_FROM_QUEUE = \"NEW_METTING_REMOVE_FROM_QUEUE\";\r\nexport const MEETINGS_LOADED_SCCESS = \"MEETINGS_LOADED_SCCESS\";\r\nexport const MEETINGS_LOADED_FAIL = \"MEETINGS_LOADED_FAIL\";\r\nexport const UPDATE_MEETING_SUCCESS = \"UPDATE_MEETING_SUCCESS\";\r\nexport const UPDATE_MEETING_FAIL = \"UPDATE_MEETING_FAIL\";\r\nexport const MEETING_UPDATED = \"MEETING_UPDATED\";\r\n\r\nexport const FILTER_CHECKED_IN = \"FILTER_CHECKED_IN\";\r\nexport const FILTER_CHECKED_OUT = \"FILTER_CHECKED_OUT\";\r\nexport const ADD_TO_FILTER_CHECKED_IN = \"ADD_TO_FILTER_CHECKED_IN\";\r\nexport const REMOVE_FROM_FILTER_CHECKED_IN = \"REMOVE_FROM_FILTER_CHECKED_IN\";\r\nexport const ADD_TO_FILTER_CHECKED_OUT = \"ADD_TO_FILTER_CHECKED_OUT\";\r\nexport const REMOVE_FROM_FILTER_CHECKED_OUT = \"REMOVE_FROM_FILTER_CHECKED_OUT\";\r\nexport const MEETING_SELECTED = \"MEETING_SELECTED\";\r\nexport const MEETINGS_FILTER_LOADED_SUCCESSFULLY = \"MEETING_FILTER_LOADED_SUCCESSFULLY\";\r\nexport const MEETINGS_FILTER_LOADED_FAIL = \"MEETING_FILTER_LOADED_FAIL\";\r\nexport const ADD_TO_CHECKED_IN_SELECT_QUEUE = \"ADD_TO_CHECKED_IN_SELECT_QUEUE\";\r\nexport const REMOVE_FROM_CHECKED_IN_SELECT_QUEUE =\r\n \"REMOVE_FROM_CHECKED_IN_SELECT_QUEUE\";\r\nexport const ADD_TO_CHECKED_OUT_SELECT_QUEUE =\r\n \"ADD_TO_CHECKED_OUT_SELECT_QUEUE\";\r\nexport const REMOVE_FROM_CHECKED_OUT_SELECT_QUEUE =\r\n \"REMOVE_FROM_CHECKED_OUT_SELECT_QUEUE\";\r\n\r\nexport const ADD_TO_UNCOLLECTED_SELECT_QUEUE =\r\n \"ADD_TO_UNCOLLECTED_SELECT_QUEUE\";\r\nexport const REMOVE_FROM_UNCOLLECTED_SELECT_QUEUE =\r\n \"REMOVE_FROM_UNCOLLECTED_SELECT_QUEUE\";\r\nexport const ADD_TO_COLLECTED_SELECT_QUEUE = \"ADD_TO_COLLECTED_SELECT_QUEUE\";\r\nexport const REMOVE_FROM_COLLECTED_SELECT_QUEUE =\r\n \"REMOVE_FROM_COLLECTED_SELECT_QUEUE\";\r\n\r\nexport const MEETINGS_LOG_FETCHED = \"MEETINGS_LOG_FETCHED\";\r\nexport const SET_MEETINGS_QUEUE = \"SET_MEETINGS_QUEUE\";\r\nexport const SPECIAL_INSTRUCTIONS_APPENDED_SUCCESS =\r\n \"SPECIAL_INSTRUCTIONS_APPENDED_SUCCESS\";\r\n\r\nexport const SEND_CHECKIN_NOTIFICATION_SUCCESS =\r\n \"SEND_CHECKIN_NOTIFICATION_SUCCESS\";\r\n\r\nexport const SEND_CHECKIN_NOTIFICATION_FAIL = \"SEND_CHECKIN_NOTIFICATION_FAIL\";\r\n\r\nexport const CLEAR_MEETINGS = \"CLEAR_MEETINGS\";\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\nimport _ from \"lodash\";\r\n\r\nimport * as config from \"../../services/config\";\r\n\r\nconst initialState = Immutable({\r\n meeting: undefined,\r\n meetings: [],\r\n newMeetingQueue: [],\r\n filterCheckedIn: [],\r\n filterCheckedOut: [],\r\n checkedInSelectQueue: [],\r\n checkedOutSelectQueue: [],\r\n uncollectedSelectQueue: [],\r\n collectedSelectQueue: [],\r\n meetingsLog: [],\r\n logType: undefined,\r\n notifyCheckin: \"\",\r\n specialInstruction: \"\",\r\n meetingsFilter: [],\r\n});\r\n\r\nexport default function meetingReducer(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.MEETING_RECORD_LOADED_SUCCESS:\r\n return state.merge({\r\n meeting: action.result\r\n });\r\n case types.NEW_METTING_ADD_TO_QUEUE:\r\n return state.merge({\r\n newMeetingQueue: [...state.newMeetingQueue, ...action.meetings]\r\n });\r\n case types.NEW_METTING_REMOVE_FROM_QUEUE:\r\n return state.merge({\r\n newMeetingQueue: state.newMeetingQueue.filter(meeting => {\r\n return meeting.index !== action.index;\r\n })\r\n });\r\n case types.NEW_MEETING_CREATED_SUCCESS:\r\n return state.merge({\r\n meetings: action.meetings\r\n });\r\n case types.MEETINGS_LOADED_SCCESS:\r\n return state.merge({\r\n meetings: action.meetings\r\n });\r\n case types.MEETINGS_LOADED_FAIL:\r\n return state.merge({\r\n meetings: action.meetings\r\n });\r\n case types.MEETING_UPDATED:\r\n // https://stackoverflow.com/questions/43792457/\r\n return state.merge({\r\n meetings: state.meetings.map(meeting => {\r\n if (meeting.id === action.meeting.id) {\r\n // Create new meeting\r\n return Object.assign({}, meeting, action.meeting);\r\n } else {\r\n return meeting;\r\n }\r\n })\r\n });\r\n\r\n case types.MEETING_SELECTED:\r\n return state.merge({\r\n meeting: action.meeting\r\n });\r\n case types.FILTER_CHECKED_IN:\r\n return state.merge({\r\n filterCheckedIn: action.filterCheckedIn\r\n });\r\n case types.FILTER_CHECKED_OUT:\r\n return state.merge({\r\n filterCheckedOut: action.filterCheckedOut\r\n });\r\n case types.ADD_TO_FILTER_CHECKED_IN:\r\n return state.merge({\r\n filterCheckedIn: [...state.filterCheckedIn, ...action.meeting]\r\n });\r\n case types.ADD_TO_FILTER_CHECKED_OUT:\r\n return state.merge({\r\n filterCheckedOut: [...state.filterCheckedOut, ...action.meeting]\r\n });\r\n\r\n case types.ADD_TO_CHECKED_IN_SELECT_QUEUE:\r\n return state.merge({\r\n checkedInSelectQueue: [...state.checkedInSelectQueue, action.meeting]\r\n });\r\n case types.REMOVE_FROM_CHECKED_IN_SELECT_QUEUE:\r\n return state.merge({\r\n checkedInSelectQueue:\r\n action.meeting === \"*\"\r\n ? []\r\n : state.checkedInSelectQueue.filter(meeting => {\r\n return meeting !== action.meeting;\r\n })\r\n });\r\n case types.ADD_TO_CHECKED_OUT_SELECT_QUEUE:\r\n return state.merge({\r\n checkedOutSelectQueue: [...state.checkedOutSelectQueue, action.meeting]\r\n });\r\n case types.REMOVE_FROM_CHECKED_OUT_SELECT_QUEUE:\r\n return state.merge({\r\n checkedOutSelectQueue:\r\n action.meeting === \"*\"\r\n ? []\r\n : state.checkedOutSelectQueue.filter(meeting => {\r\n return meeting !== action.meeting;\r\n })\r\n });\r\n\r\n case types.ADD_TO_UNCOLLECTED_SELECT_QUEUE:\r\n return state.merge({\r\n uncollectedSelectQueue: [\r\n ...state.uncollectedSelectQueue,\r\n action.meeting\r\n ]\r\n });\r\n case types.REMOVE_FROM_UNCOLLECTED_SELECT_QUEUE:\r\n return state.merge({\r\n uncollectedSelectQueue:\r\n action.meeting === \"*\"\r\n ? []\r\n : state.uncollectedSelectQueue.filter(meeting => {\r\n return meeting !== action.meeting;\r\n })\r\n });\r\n case types.ADD_TO_COLLECTED_SELECT_QUEUE:\r\n return state.merge({\r\n collectedSelectQueue: [...state.collectedSelectQueue, action.meeting]\r\n });\r\n case types.REMOVE_FROM_COLLECTED_SELECT_QUEUE:\r\n return state.merge({\r\n collectedSelectQueue:\r\n action.meeting === \"*\"\r\n ? []\r\n : state.collectedSelectQueue.filter(meeting => {\r\n return meeting !== action.meeting;\r\n })\r\n });\r\n\r\n case types.MEETINGS_LOG_FETCHED:\r\n return state.merge({\r\n meetingsLog: action.meetingsLog,\r\n logType: action.logType\r\n });\r\n case types.SET_MEETINGS_QUEUE:\r\n return state.merge({\r\n newMeetingQueue: action.meetingQueue\r\n });\r\n case types.SPECIAL_INSTRUCTIONS_APPENDED_SUCCESS:\r\n return state.merge({\r\n specialInstruction: action.specialInstruction,\r\n newMeetingQueue: _.map(state.newMeetingQueue, meeting => {\r\n let newMeeting = {\r\n tenantId: meeting.tenantId,\r\n tenantName: meeting.tenantName,\r\n tenantCompany: meeting.tenantCompany,\r\n name: meeting.name,\r\n companyName: meeting.companyName,\r\n dueDate: meeting.dueDate,\r\n endDate: meeting.endDate,\r\n status: meeting.status,\r\n email: meeting.email,\r\n specialInstruction: action.specialInstruction,\r\n index: meeting.index\r\n };\r\n\r\n return newMeeting;\r\n })\r\n });\r\n case types.SEND_CHECKIN_NOTIFICATION_SUCCESS:\r\n return state.merge({\r\n notifyCheckin: action.notifyResponse\r\n });\r\n case types.CLEAR_MEETINGS:\r\n return state.merge({\r\n meetings: [],\r\n specialInstruction: \"\"\r\n });\r\n case types.MEETINGS_FILTER_LOADED_SUCCESSFULLY:\r\n return state.merge({\r\n meetingsFilter: action.meetings\r\n });\r\n case types.UPDATE_MEETING_SUCCESS:\r\n return state.merge({\r\n meeting: action.data,\r\n meetings: action.data ? _.map(state.meetings, o => {\r\n if (o.id === action.data.id) {\r\n return action.data\r\n }\r\n\r\n return o;\r\n }) : state.meetings\r\n })\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getMeeting(state) {\r\n return state.meetings.meeting;\r\n}\r\n\r\nexport function getMeetingsQueue(state) {\r\n return state.meetings.newMeetingQueue;\r\n}\r\n\r\nexport function getMeetings(state) {\r\n return state.meetings.meetings;\r\n}\r\nexport function filterCheckedIn(state) {\r\n if (!state.meetings.filterCheckedIn) return state.meetings.meetings;\r\n\r\n return _.filter(\r\n state.meetings.meetings,\r\n m => m.visitor.status === config.visitorStatuses.checkedIn\r\n );\r\n}\r\n\r\nexport function filterCheckedOut(state) {\r\n if (!state.meetings.filterCheckedOut) return state.meetings.meetings;\r\n\r\n return _.filter(\r\n state.meetings.meetings,\r\n m => m.visitor.status === config.visitorStatuses.checkedOut\r\n );\r\n}\r\n\r\nexport function getCheckedInSelectQueue(state) {\r\n return state.meetings.checkedInSelectQueue;\r\n}\r\n\r\nexport function getCheckedOutSelectQueue(state) {\r\n return state.meetings.checkedOutSelectQueue;\r\n}\r\n\r\nexport function getUncollectedSelectQueue(state) {\r\n return state.meetings.uncollectedSelectQueue;\r\n}\r\n\r\nexport function getCollectedSelectQueue(state) {\r\n return state.meetings.collectedSelectQueue;\r\n}\r\n\r\nexport function getMeetingsLog(state) {\r\n return state.meetings.meetingsLog;\r\n}\r\n\r\nexport function filterUncollected(state) {\r\n return filterCheckedIn(state).filter(meeting => {\r\n return meeting.passCollected === false;\r\n });\r\n}\r\n\r\nexport function filterCollected(state) {\r\n return filterCheckedIn(state).filter(meeting => {\r\n return meeting.passCollected === true;\r\n });\r\n}\r\n\r\nexport function getSpecialInstruction(state) {\r\n return state.meetings.specialInstruction;\r\n}\r\n\r\nexport function getLogType(state) {\r\n return state.meetings.logType;\r\n}\r\n\r\nexport function getMeetingsFilter(state) {\r\n return state.meetings.meetingsFilter;\r\n}","export const VISITORS_LOADED_SUCCESS = 'VISITORS_LOADED_SUCCESS';\r\nexport const VISITORS_LOADED_FAIL = 'VISITORS_LOADED_FAIL';\r\n\r\nexport const VISITOR_RECORD_LOADED_SUCCESS = 'VISITOR_RECORD_LOADED_SUCCESS';\r\nexport const VISITOR_SELECTED = 'VISITOR_SELECTED';\r\nexport const VISITOR_MEETING_LOADED_SUCCESS = 'VISITOR_MEETING_LOADED_SUCCESS';\r\nexport const VISITOR_SELF_CHECKIN_CANCELED = 'VISITOR_CHECKIN_CANCELED';\r\nexport const VISITOR_SELF_CHECKIN_SUCCESS = 'VISITOR_SELF_CHECKIN_SUCCESS';\r\nexport const UPDATE_CHECKOUT_STATUS_SUCCESS = 'VISITOR_SELF_CHECKOUT_SUCCESS';\r\nexport const VISITORS_RECORDS_LOADED_SUCCESS = 'VISITORS_RECORDS_LOADED_SUCCESS';\r\nexport const VISITOR_CHECKIN_SUCCESS = 'VISITOR_CHECKIN_SUCCESS';\r\nexport const VISITOR_CHECKOUT_SUCCESS = 'VISITOR_CHECKOUT_SUCCESS';\r\nexport const VISITOR_CHECKIN_FAIL = 'VISITOR_CHECKIN_FAIL';\r\nexport const VISITOR_CHECKOUT_FAIL = 'VISITOR_CHECKOUT_FAIL';\r\nexport const VISITOR_RECORD_LOADED_FAIL = 'VISITOR_RECORD_LOADED_FAIL';\r\nexport const VISITOR_MEETING_LOADED_FAIL = 'VISITOR_MEETING_LOADED_FAIL';\r\nexport const VISITORS_RECORDS_LOADED_FAIL = 'VISITORS_RECORDS_LOADED_FAIL';\r\nexport const VISITOR_SEARCH_DATA = 'VISITOR_SEARCH_DATA';\r\nexport const VISITOR_EVENT = 'VISITOR_EVENT';\r\nexport const CANCEL_MEETING_LOAD = 'CANCEL_MEETING_LOAD';\r\nexport const VISITOR_CAR_REG_UPDATED = 'VISITOR_CAR_REG_UPDATED';\r\nexport const VISITOR_CAR_REG_SET = 'VISITOR_CAR_REG_SET';\r\nexport const VISITOR_SPECIAL_INSTRUCTIONS = 'VISITOR_SPECIAL_INSTRUCTIONS';\r\nexport const VISITOR_SEARCH_STORED_SUCCESSFULLY = 'VISITOR_SEARCH_STORED_SUCCESSFULLY';\r\nexport const VISITOR_SEARCH_FROM_REDIRECT = 'VISITOR_SEARCH_FROM_REDIRECT';\r\nexport const VISITOR_CHECKEDIN_RESET_SUCCESSFULLY = 'VISITOR_CHECKEDIN_RESET_SUCCESSFULLY';\r\n","import * as config from \"./config\";\r\n\r\nclass VisitorServices {\r\n async getVisitorsExpectedByDate(date) {\r\n const url = `${config.VISITORS_EXPECTED_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n\r\n const response = await fetch(url + \"?date=\" + date, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getVisitorsExpectedByDate service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async searchVisitorByEmail(email) {\r\n const url = `${config.SEARCH_VISITOR_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n const response = await fetch(url + \"?email=\" + email, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `searchVisitorByEmail service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async searchVisitorByName(visitor) {\r\n const url = `${config.SEARCH_VISITOR_BY_NAME_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(visitor)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `searchVisitorByName service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async searchByVisitor(visitor) {\r\n const url = `${config.SEARCH_VISITOR_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(visitor)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `searchVisitorByName service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async getAllVisitors() {\r\n const url = `${config.VISITORS_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n\r\n const response = await fetch(url + \"/notified\", {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getAllVisitors service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async checkinVisitorById(id) {\r\n const url = `${config.VISITOR_CHECKIN_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n\r\n const response = await fetch(url + \"?id=\" + id, {\r\n method: \"POST\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `checkinVisitorById service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async checkOutVisitorById(id) {\r\n const url = `${config.VISITOR_CHECKOUT_ENPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n\r\n const response = await fetch(url + \"?id=\" + id, {\r\n method: \"POST\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `checkOutVisitorById service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async addCarRegNumber(data) {\r\n const url = `${config.VISITOR_CAR_REG_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `addCarRegNumber service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async searchVisitorById(id) {\r\n const url = `${config.SEARCH_VISITOR_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n const response = await fetch(url + \"?id=\" + Number(id), {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `searchVisitorBId service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n}\r\n\r\nexport default new VisitorServices();\r\n","import * as config from \"./config\";\r\nimport authService from \"./loginService\";\r\n\r\nclass MeetingServices {\r\n async getMeetingById(id) {\r\n const url = `${config.MEETING_RECORD_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n\r\n const response = await fetch(url + \"?id=\" + id, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getMeetingById service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async getMeetingsById(data) {\r\n const url = `${config.MEETING_RECORD_ENDPOINT}`;\r\n\r\n const authToken = authService.getToken();\r\n \r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getMeetingsById service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async updateVisitorStatus(data) {\r\n const url = `${config.MEETING_RECORD_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getMeetingById service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async getTenants() {\r\n const url = `${config.TENANTS_ENDPOINT}`;\r\n const memberType = \"tenants\";\r\n var requestHeader = new Headers();\r\n\r\n const response = await fetch(url + \"?type=\" + memberType, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getTenants service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async checkinVisitor(data) {\r\n const url = `${config.CHECKIN_VISITOR_ENPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `checkinVisitor service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async checkOutVisitor(data) {\r\n const url = `${config.CHECKOUT_VISITOR_ENPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `checkOutVisitor service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async createMeeting(data) {\r\n const url = `${config.CREATE_NEW_MEETING_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `createMeeting service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n console.log(result);\r\n return result;\r\n }\r\n\r\n async createMeetings(data) {\r\n const url = `${config.CREATE_NEW_MEETINGS_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `createMeeting service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async getMeetingsByDate(date) {\r\n const url = `${config.MEETING_RECORD_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", \"Bearer \" + authToken);\r\n\r\n const response = await fetch(url + \"?date=\" + date, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getMeetingsByDate service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async updateMeetingRecord(data) {\r\n const url = config.UPDATE_MEETING_RECORD_ENDPOINT;\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `updateMeetingRecord service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n\r\n }\r\n async resourceBookingNotification(booking) {\r\n const url = `${config.RESOURCE_BOOKING_NOTIFY_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(booking)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `resourceBookingNotification service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async passCollectedById(id, collected = true) {\r\n const url = `${config.VISITOR_PASS_COLLECTED}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n // + \"?id=\" + id\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify({ id: id, passCollected: collected })\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `passCollectedVisitorById service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async notifiCheckedIn(meetings, collected = true) {\r\n const url = `${config.NOTIFY_CHECKING_ENPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(meetings)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n ` notifiCheckedIn service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async resourceBookingCancelledNotification(booking) {\r\n const url = `${config.RESOURCE_BOOKING_CANCELLED_NOTIFY_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(booking)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `resourceBookingNotification service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n async resourceBookingUpdatedNotification(booking) {\r\n const url = `${config.RESOURCE_BOOKING_UPDATED_NOTIFY_ENDPOINT}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(booking)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `resourceBookingNotification service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async tenantResourceBookingNotification(booking) {\r\n const url = `${config.NOTIFY_TENANT_RESOURCE_BOOKED}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(booking)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `tenantresourceBookingNotification service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async houseManagerResourceBookingNotification(booking) {\r\n const url = `${config.NOTIFY_HOUSE_MANAGER_RESOURCE_BOOKED}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(booking)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `houseManagerResourceBookingNotification service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async financeManagerResourceBookingNotification(booking) {\r\n const url = `${config.NOTIFY_RAISECHARGE_FINANCE_MANAGER_RESOURCE_BOOKED}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Accept\", \"application/json\");\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(booking)\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `financeManagerResourceBookingNotification service failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n\r\n}\r\n\r\nexport default new MeetingServices();\r\n","const PAGE_EVENT = \"page_event\";\r\n\r\nclass PageEvent {\r\n setPageEvent(event) {\r\n localStorage.setItem(PAGE_EVENT, event);\r\n }\r\n\r\n getPageEvent() {\r\n return localStorage.getItem(PAGE_EVENT);\r\n }\r\n}\r\n\r\nexport default new PageEvent();\r\n","import * as types from './actionTypes';\r\nimport Immutable from 'seamless-immutable';\r\nimport _ from 'lodash';\r\n//import PageEvent from \"../../services/PegeEvent\";\r\n\r\nconst initialState = Immutable({\r\n\tvisitor: [],\r\n\tvisitors: [],\r\n\tselectedVisitor: undefined,\r\n\tmeeting: undefined,\r\n\tmeetings: [],\r\n\tvisitorCheckedIn: [],\r\n\tvisitorSearchInput: undefined,\r\n\tvisitorCheckedOut: [],\r\n\tvisitorEvent: '',\r\n\tcarReg: '',\r\n\tspecialInstructions: '',\r\n\tsearchResult: undefined,\r\n\tsearchFromRedirect: undefined\r\n});\r\n\r\nexport default function visitorReducer(state = initialState, action = {}) {\r\n\tswitch (action.type) {\r\n\t\tcase types.VISITORS_RECORDS_LOADED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tvisitors: action.visitors\r\n\t\t\t});\r\n\t\tcase types.VISITOR_RECORD_LOADED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tvisitor: action.visitor\r\n\t\t\t});\r\n\r\n\t\tcase types.VISITOR_MEETING_LOADED_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tmeeting: action.meeting\r\n\t\t\t});\r\n\t\tcase types.VISITOR_SELF_CHECKIN_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tspecialInstructions:\r\n\t\t\t\t\taction.visitorCheckedIn && action.visitorCheckedIn.length > 0\r\n\t\t\t\t\t\t? action.visitorCheckedIn[0].specialInstructions\r\n\t\t\t\t\t\t: '',\r\n\t\t\t\tvisitorCheckedIn: action.visitorCheckedIn\r\n\t\t\t});\r\n\t\tcase types.UPDATE_CHECKOUT_STATUS_SUCCESS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tvisitorCheckedOut: action.visitorCheckedOut\r\n\t\t\t});\r\n\t\tcase types.VISITOR_SELECTED:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tselectedVisitor: _.find(action.visitors, { id: action.id })\r\n\t\t\t});\r\n\t\tcase types.VISITOR_SEARCH_DATA:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tvisitorSearchInput: action.visitorSearchInput\r\n\t\t\t});\r\n\t\tcase types.VISITOR_EVENT:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tvisitorEvent: action.visitorEvent\r\n\t\t\t});\r\n\t\tcase types.CANCEL_MEETING_LOAD:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tmeeting: action.meeting\r\n\t\t\t});\r\n\t\tcase types.VISITOR_CAR_REG_SET:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tcarReg: action.carReg\r\n\t\t\t});\r\n\t\tcase types.VISITOR_SPECIAL_INSTRUCTIONS:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tspecialInstructions: action.specialInstructions\r\n\t\t\t});\r\n\t\tcase types.VISITOR_SEARCH_STORED_SUCCESSFULLY:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tsearchResult: action.data\r\n\t\t\t});\r\n\t\tcase types.VISITOR_SEARCH_FROM_REDIRECT:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tsearchFromRedirect: action.status\r\n\t\t\t});\r\n\t\tcase types.VISITOR_CHECKEDIN_RESET_SUCCESSFULLY:\r\n\t\t\treturn state.merge({\r\n\t\t\t\tvisitorCheckedIn: []\r\n\t\t\t});\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n\r\nexport function getVisitors(state) {\r\n\treturn state.visitors.visitors;\r\n}\r\n\r\nexport function getVisitor(state) {\r\n\treturn state.visitors.visitor;\r\n}\r\n\r\nexport function getSelectedVisitor(state) {\r\n\treturn state.visitors.selectedVisitor;\r\n}\r\n\r\nexport function getVisitorMeeting(state) {\r\n\treturn state.visitors.meeting;\r\n}\r\n\r\nexport function visitorCheckedIn(state) {\r\n\treturn state.visitors.visitorCheckedIn;\r\n}\r\n\r\nexport function getVisitorSearchInput(state) {\r\n\treturn state.visitors.visitorSearchInput;\r\n}\r\nexport function visitorCheckedOut(state) {\r\n\treturn state.visitors.visitorCheckedOut;\r\n}\r\n\r\nexport function getVisitorEvent(state) {\r\n\treturn state.visitors.visitorEvent;\r\n}\r\n\r\nexport function getCarReg(state) {\r\n\treturn state.visitors.carReg;\r\n}\r\n\r\nexport function getSpecialInstructions(state) {\r\n\treturn state.visitors.specialInstructions;\r\n}\r\n\r\nexport function getSearchResult(state) {\r\n\treturn state.visitors.searchResult;\r\n}\r\nexport function getSearchFromRedirect(state) {\r\n\treturn state.visitors.searchFromRedirect;\r\n}\r\n","import * as types from './actionTypes';\r\n\r\nimport VisitorServices from '../../services/VisitorServices';\r\nimport MeetingServices from '../../services/MeetingServices.js';\r\nimport PageEvent from '../../services/PegeEvent';\r\n//import * as EmailValidator from \"email-validator\";\r\nimport * as visitorSelectors from './reducer';\r\nimport * as config from '../../services/config';\r\nimport _ from 'lodash';\r\n\r\nexport function getVistorByEmail(email) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst result = await VisitorServices.searchVisitorByEmail(email);\r\n\t\t\tdispatch({ type: types.VISITOR_RECORD_LOADED_SUCCESS, result });\r\n\t\t\t\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function searchVisitor(visitor, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst data = visitor.name;\r\n\r\n\t\t\tconst element = data.split(' ').filter((part) => {\r\n\t\t\t\treturn part !== '';\r\n\t\t\t}); // precaution in case user put in two spaces\r\n\r\n\t\t\tconst visitorData = {\r\n\t\t\t\tfirstName: '',\r\n\t\t\t\tsurname: '',\r\n\t\t\t\temail: '',\r\n\t\t\t\tcompanyName: visitor.companyName,\r\n\t\t\t\tstatus: visitor.status,\r\n\t\t\t\tdueDate: visitor.dueDate\r\n\t\t\t};\r\n\r\n\t\t\tif (element.length > 1) {\r\n\t\t\t\tvisitorData.firstName = element[0];\r\n\t\t\t\tvisitorData.surname = element[1];\r\n\r\n\t\t\t\tconst result = await VisitorServices.searchByVisitor(visitorData);\r\n\r\n\t\t\t\tif (result.length > 0) {\r\n\t\t\t\t\tdispatch({ type: types.VISITOR_RECORD_LOADED_SUCCESS, result });\r\n\t\t\t\t\tdispatch(selectVisitor(result));\r\n\r\n\t\t\t\t\tvar meetingsId = result.map((item, i) => {\r\n\t\t\t\t\t\tvar data = { Id: item.meetingId };\r\n\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tvar meeting = await MeetingServices.getMeetingsById(meetingsId);\r\n\t\t\t\t\tdispatch({ type: types.VISITOR_MEETING_LOADED_SUCCESS, meeting });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdispatch({ type: types.VISITOR_RECORD_LOADED_FAIL, result });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tcallback(false);\r\n\r\n\t\t\t\t// visitorData.email = EmailValidator.validate(element[0])\r\n\t\t\t\t// ? element[0]\r\n\t\t\t\t// : \"\";\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getVisitorMeetingById(id) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst result = await MeetingServices.getMeetingById(id);\r\n\t\t\tdispatch({ type: types.VISITOR_MEETING_LOADED_SUCCESS, result });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function checkinVisitor(visitor, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar visitorCheckedIn = await MeetingServices.checkinVisitor(visitor);\r\n\r\n\t\t\tif (visitorCheckedIn && visitorCheckedIn.length > 0) {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.VISITOR_SELF_CHECKIN_SUCCESS,\r\n\t\t\t\t\tvisitorCheckedIn\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function checkinStatusSuccess(visitor) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.VISITOR_SELF_CHECKIN_SUCCESS,\r\n\t\t\t\tvisitor\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function checkOutVisitor(value, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tif (value && value.length > 0) {\r\n\t\t\t\tvar visitor = value.map((item, i) => {\r\n\t\t\t\t\t//item.status = \"checkedout\";\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar visitorCheckedOut = await MeetingServices.checkOutVisitor(visitor);\r\n\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.UPDATE_CHECKOUT_STATUS_SUCCESS,\r\n\t\t\t\t\tvisitorCheckedOut\r\n\t\t\t\t});\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function allVisitors() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar result = await VisitorServices.getAllVisitors();\r\n\t\t\tif (result.length > 0) {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.VISITORS_RECORDS_LOADED_SUCCESS,\r\n\t\t\t\t\tresult\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.VISITORS_RECORDS_LOADED_FAIL,\r\n\t\t\t\t\tresult\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getVisitorByName(visitor) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst data = visitor.name;\r\n\t\t\tconst element = data.split(' ');\r\n\t\t\tconst visitorData = {\r\n\t\t\t\tfirstName: '',\r\n\t\t\t\tsurname: '',\r\n\t\t\t\temail: '',\r\n\r\n\t\t\t\tstatus: visitor.status\r\n\t\t\t};\r\n\t\t\tif (element.length > 1) {\r\n\t\t\t\tvisitorData.firstName = element[0];\r\n\t\t\t\tvisitorData.surname = element[1];\r\n\t\t\t} else {\r\n\t\t\t}\r\n\r\n\t\t\tconst result = await VisitorServices.searchVisitorByName(visitorData);\r\n\r\n\t\t\tdispatch({ type: types.VISITOR_RECORD_LOADED_SUCCESS, result });\r\n\t\t\tdispatch(selectVisitor(result));\r\n\r\n\t\t\tvar meetingsId = result.map((item, i) => {\r\n\t\t\t\tvar data = { Id: item.meetingId };\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t\tvar meeting = await MeetingServices.getMeetingsById(meetingsId);\r\n\t\t\tdispatch({ type: types.VISITOR_MEETING_LOADED_SUCCESS, meeting });\r\n\t\t\tif (result.length === 0) {\r\n\t\t\t\tdispatch({ type: types.VISITOR_RECORD_LOADED_FAIL, result });\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function selectVisitor(visitor) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.VISITOR_SELECTED, visitor });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getVisitorSearchInput(visitorSearchInput) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.VISITOR_SEARCH_DATA, visitorSearchInput });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setVisitorEvent(event) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tPageEvent.setPageEvent(event);\r\n\t\t\t}, 0);\r\n\r\n\t\t\tlet pg_event = PageEvent.getPageEvent();\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.VISITOR_EVENT,\r\n\t\t\t\tvisitorEvent: pg_event\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getPageEvent() {\r\n\treturn async (dispatch, getSatate) => {\r\n\t\tlet pg_event = PageEvent.getPageEvent();\r\n\r\n\t\tdispatch({\r\n\t\t\ttype: types.VISITOR_EVENT,\r\n\t\t\tvisitorEvent: pg_event\r\n\t\t});\r\n\t};\r\n}\r\n\r\nexport function checkinById(id) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar visitor = await VisitorServices.checkinVisitorById(id);\r\n\t\t\tif (visitor) {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.VISITOR_CHECKIN_SUCCESS,\r\n\t\t\t\t\tvisitor\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.VISITOR_CHECKIN_FAIL,\r\n\t\t\t\t\tvisitor\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function checkoutById(id) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar visitor = await VisitorServices.checkOutVisitorById(id);\r\n\r\n\t\t\tif (visitor) {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.VISITOR_CHECKOUT_SUCCESS,\r\n\t\t\t\t\tvisitor\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.VISITOR_CHECKOUT_FAIL,\r\n\t\t\t\t\tvisitor\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function cancelMeetingLoad() {\r\n\tlet meeting = [];\r\n\treturn { type: types.CANCEL_MEETING_LOAD, meeting };\r\n}\r\n\r\nexport function setVisitors(visitors) {\r\n\treturn async (dispatch, getState) => {\r\n\t\tdispatch({ type: types.VISITORS_RECORDS_LOADED_SUCCESS, visitors });\r\n\t};\r\n}\r\n\r\nexport function setCarReg(carReg) {\r\n\treturn async (dispatch, getState) => {\r\n\t\tdispatch({ type: types.VISITOR_CAR_REG_SET, carReg });\r\n\t};\r\n}\r\n\r\nexport function getSelectedVisitor(visitorId) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst visitors = visitorSelectors.getVisitors(getState());\r\n\t\t\tconst visitor = _.find(visitors, { id: visitorId });\r\n\r\n\t\t\tdispatch({ type: types.VISITOR_RECORD_LOADED_SUCCESS, visitor });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function addParkingDetails(data, success = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar result = await VisitorServices.addCarRegNumber(data);\r\n\t\t\tdispatch({ type: types.VISITOR_CAR_REG_UPDATED, result });\r\n\t\t\tsuccess(true);\r\n\t\t} catch (error) {\r\n\t\t\tsuccess(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setSpecialInstructions(value) {\r\n\treturn (dispatch, getState) => {\r\n\t\tdispatch({\r\n\t\t\ttype: types.VISITOR_SPECIAL_INSTRUCTIONS,\r\n\t\t\tspecialInstructions: value\r\n\t\t});\r\n\t};\r\n}\r\n\r\nexport function getVisitorById(id) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst visitor = await VisitorServices.searchVisitorById(id);\r\n\t\t\tdispatch({ type: types.VISITOR_RECORD_LOADED_SUCCESS, visitor: visitor });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getVisitorStauses() {\r\n\tlet statuses = config.visitorStatuses;\r\n\r\n\treturn statuses;\r\n}\r\n\r\nexport function getNotifiledVisitorsByDate(date, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst response = await VisitorServices.getVisitorsExpectedByDate(date);\r\n\t\t\tdispatch({ type: types.VISITORS_RECORDS_LOADED_SUCCESS, visitors: response });\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tdispatch({ type: types.VISITORS_LOADED_FAIL, error });\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function storeVisitorSearch(search_data, callback = () => {}) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.VISITOR_SEARCH_STORED_SUCCESSFULLY, data: search_data });\r\n\t\t} catch (error) {}\r\n\t};\r\n}\r\n\r\nexport function visitorSearchRedirected(val) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.VISITOR_SEARCH_FROM_REDIRECT, status: val });\r\n\t\t} catch (error) {}\r\n\t};\r\n}\r\n\r\nexport function resetVisitorCheckedIn() {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.VISITOR_CHECKEDIN_RESET_SUCCESSFULLY });\r\n\t\t} catch (error) {}\r\n\t};\r\n}\r\n","import * as types from \"./actionTypes\";\r\nimport MeetingServices from \"../../services/MeetingServices\";\r\n\r\nexport function getMeetingById(id) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const result = await MeetingServices.getMeetingById(id);\r\n\r\n if (result) {\r\n dispatch({ type: types.MEETING_RECORD_LOADED_SUCCESS, result });\r\n } else {\r\n dispatch({ type: types.MEETING_RECORD_LOADED_FAIL, result });\r\n }\r\n\r\n } catch (error) {\r\n dispatch({ type: types.MEETING_RECORD_LOADED_FAIL });\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function createNewMeeting(visitor) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const data = visitor.name;\r\n const element = data.split(\" \");\r\n const visitorData = {\r\n id: visitor.tenantId,\r\n status: visitor.status,\r\n dueDate: visitor.dueDate,\r\n endDate: visitor.endDate,\r\n firstName: \"\",\r\n surname: \"\",\r\n email: visitor.email,\r\n companyName: visitor.companyName,\r\n specialInstruction: visitor.specialInstruction\r\n };\r\n\r\n if (element.length > 1) {\r\n visitorData.firstName = element[0];\r\n visitorData.surname = element[1];\r\n }\r\n\r\n console.log(visitorData);\r\n var meeting = await MeetingServices.createMeeting(visitorData);\r\n console.log(meeting);\r\n if (meeting) {\r\n dispatch({ type: types.NEW_MEETING_CREATED_SUCCESS, meeting });\r\n dispatch({ type: types.MEETING_RECORD_LOADED_SUCCESS, meeting });\r\n } else dispatch({ type: types.NEW_MEETING_CREATED_FAIL, meeting });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function createNewMeetings(val, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n var visitors = val.map((visitor, index) => {\r\n const data = visitor.name;\r\n const element = data.split(\" \");\r\n const visitorData = {\r\n id: visitor.tenantId,\r\n status: visitor.status,\r\n dueDate: visitor.dueDate,\r\n endDate: visitor.endDate,\r\n firstName: \"\",\r\n surname: \"\",\r\n email: visitor.email,\r\n companyName: visitor.companyName,\r\n specialInstruction: visitor.specialInstruction\r\n };\r\n\r\n if (element.length > 1) {\r\n for(var i=0; i { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const result = await MeetingServices.updateMeetingRecord(data);\r\n\r\n dispatch({ type: types.UPDATE_MEETING_SUCCESS, data: result });\r\n callback(true);\r\n\r\n\r\n } catch (error) {\r\n callback(false);\r\n dispatch({ type: types.UPDATE_MEETING_FAIL });\r\n }\r\n\r\n }\r\n}\r\n\r\nexport function getMeeting(meeting) {\r\n return async (dispatch, getState) => {\r\n try {\r\n if (meeting) {\r\n var meetings = [meeting];\r\n dispatch({ type: types.MEETING_RECORD_LOADED_SUCCESS, meetings });\r\n } else dispatch({ type: types.MEETING_RECORD_LOADED_FAIL, meeting });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function addMeetingToQueue(meetingList, callback = () => { }) {\r\n return (dispatch, getState) => {\r\n dispatch({\r\n type: types.NEW_METTING_ADD_TO_QUEUE,\r\n meetings: meetingList\r\n })\r\n callback(true);\r\n }\r\n}\r\n\r\nexport function removeMeetingFromQueue(index) {\r\n return {\r\n type: types.NEW_METTING_REMOVE_FROM_QUEUE,\r\n index: index\r\n };\r\n}\r\n\r\nexport function setMettingsQueue(meetingsList) {\r\n return {\r\n type: types.SET_MEETINGS_QUEUE,\r\n meetingQueue: meetingsList\r\n };\r\n}\r\n\r\nexport function clearMeetings() {\r\n let clear = [];\r\n return { type: types.CLEAR_MEETINGS, clear };\r\n}\r\n\r\nexport function getMeetingsByDate(date) {\r\n return async (dispatch, getState) => {\r\n try {\r\n var meetings = await MeetingServices.getMeetingsByDate(date);\r\n\r\n if (meetings && meetings.length > 0) {\r\n dispatch({ type: types.MEETINGS_LOADED_SCCESS, meetings });\r\n } else dispatch({ type: types.MEETINGS_LOADED_FAIL, meetings });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function getFilterMeetingsByDate(date, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n var meetings = await MeetingServices.getMeetingsByDate(date);\r\n\r\n\r\n dispatch({ type: types.MEETINGS_FILTER_LOADED_SUCCESSFULLY, meetings })\r\n\r\n callback(true);\r\n\r\n } catch (error) {\r\n dispatch({ type: types.MEETINGS_FILTER_LOADED_FAIL });\r\n callback(false);\r\n }\r\n };\r\n}\r\n\r\nexport function meetingSelected(meeting) {\r\n return {\r\n type: types.MEETING_SELECTED,\r\n meeting\r\n };\r\n}\r\n\r\nexport function addToFilterCheckIn(meeting) {\r\n return {\r\n type: types.ADD_TO_FILTER_CHECKED_IN,\r\n meeting\r\n };\r\n}\r\n\r\nexport function addToFilterCheckOut(meeting) {\r\n return {\r\n type: types.ADD_TO_FILTER_CHECKED_OUT,\r\n meeting\r\n };\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport function addToCheckedInSelectQueue(list) {\r\n return {\r\n type: types.ADD_TO_CHECKED_IN_SELECT_QUEUE,\r\n meeting: list\r\n };\r\n}\r\n\r\nexport function removeFromCheckedInSelectQueue(meeting) {\r\n return {\r\n type: types.REMOVE_FROM_CHECKED_IN_SELECT_QUEUE,\r\n meeting: meeting\r\n };\r\n}\r\nexport function addToCheckedOutSelectQueue(list) {\r\n return {\r\n type: types.ADD_TO_CHECKED_OUT_SELECT_QUEUE,\r\n meeting: list\r\n };\r\n}\r\n\r\nexport function removeFromCheckedOutSelectQueue(meeting) {\r\n return {\r\n type: types.REMOVE_FROM_CHECKED_OUT_SELECT_QUEUE,\r\n meeting: meeting\r\n };\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport function addToUncollectedSelectQueue(list) {\r\n return {\r\n type: types.ADD_TO_UNCOLLECTED_SELECT_QUEUE,\r\n meeting: list\r\n };\r\n}\r\n\r\nexport function removeFromUncollectedSelectQueue(meeting) {\r\n return {\r\n type: types.REMOVE_FROM_UNCOLLECTED_SELECT_QUEUE,\r\n meeting: meeting\r\n };\r\n}\r\nexport function addToCollectedSelectQueue(list) {\r\n return {\r\n type: types.ADD_TO_COLLECTED_SELECT_QUEUE,\r\n meeting: list\r\n };\r\n}\r\n\r\nexport function removeFromCollectedSelectQueue(meeting) {\r\n return {\r\n type: types.REMOVE_FROM_COLLECTED_SELECT_QUEUE,\r\n meeting: meeting\r\n };\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport function fetchMeetingsLog(meetings) {\r\n return {\r\n type: types.MEETINGS_LOG_FETCHED,\r\n meetingsLog: meetings\r\n };\r\n}\r\n\r\nexport function passCollectedById(id, collect = true) {\r\n return async (dispatch, getState) => {\r\n try {\r\n var meeting = await MeetingServices.passCollectedById(id, collect);\r\n\r\n if (meeting) {\r\n dispatch({\r\n type: types.MEETING_UPDATED,\r\n meeting\r\n });\r\n } /* else {\r\n dispatch({\r\n type: types.VISITOR_CHECKIN_FAIL,\r\n visitor\r\n });\r\n }*/\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////////////\r\n\r\nexport function addSpectialInstruction(data) {\r\n return async (dispatch, getState) => {\r\n if (data)\r\n dispatch({\r\n type: types.SPECIAL_INSTRUCTIONS_APPENDED_SUCCESS,\r\n specialInstruction: data\r\n });\r\n };\r\n}\r\n\r\nexport function notifyCheckedIn(meetings, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const notifyResponse = await MeetingServices.notifiCheckedIn(meetings);\r\n dispatch({\r\n type: types.SEND_CHECKIN_NOTIFICATION_SUCCESS,\r\n notifyResponse\r\n });\r\n callback(true)\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n\r\n }\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport Autosuggest from \"react-autosuggest\";\r\nimport InputComponent from \"../Input/Input\";\r\n\r\n\r\n\r\nimport _ from \"lodash\";\r\nimport autoBind from \"react-autobind\";\r\n\r\nimport \"../../sass/components/Input/index.css\";\r\nimport \"../../sass/components/VisitorAutoSuggestComponent/index.css\";\r\nimport { stringify } from \"querystring\";\r\n\r\nclass VisitorAutoSuggestComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.defaultState = {\r\n value: \"\",\r\n suggestions: [],\r\n valid: false\r\n };\r\n\r\n this.state = this.defaultState;\r\n this.emptyResponse = {\r\n visitorId: \"\",\r\n meetingId: \"\",\r\n companyName: \"\",\r\n visitor: \"\",\r\n dataMatch: undefined\r\n };\r\n\r\n this.selectedVisitorFromDefault = false;\r\n autoBind(this);\r\n }\r\n\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n\r\n if (\r\n nextProps.meetings.length > 0 &&\r\n !_.isUndefined(nextProps.defaultVisitorId) &&\r\n _.isNumber(nextProps.defaultVisitorId) &&\r\n this.selectedVisitorFromDefault === false\r\n ) {\r\n this.selectedVisitorFromDefault = true;\r\n\r\n const startVisitor = nextProps.meetings.find(meeting => {\r\n return meeting.id === nextProps.defaultVisitorId;\r\n });\r\n\r\n if(!_.isUndefined(startVisitor)){\r\n\r\n \r\n this.setState({\r\n value: `${startVisitor.visitor.firstName} ${startVisitor.visitor.surname} ${'-'} ${startVisitor.visitor.companyName}`,\r\n valid: true\r\n });\r\n\r\n this.handleVisitorSelected(startVisitor);\r\n }\r\n\r\n }\r\n\r\n if(nextProps.meetings.length > 0 && !_.isUndefined(nextProps.defaultValue) && this.selectedVisitorFromDefault === false){\r\n this.setState({\r\n value :nextProps.defaultValue ,\r\n valid : true\r\n });\r\n }\r\n\r\n \r\n }\r\n\r\n reset() {\r\n this.setState(this.defaultState);\r\n }\r\n\r\n UNSAFE_componentWillUpdate(nextProps, nextState){\r\n if(this.state.value !== nextState.value && nextState.value === \"\"){\r\n this.setState({\r\n valid : false\r\n });\r\n }\r\n }\r\n // Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n getSuggestionValue(suggestion) {\r\n // const { name } = this.state;\r\n\r\n this.handleVisitorSelected(suggestion);\r\n if (suggestion) this.setState({ disabled: \"\" });\r\n this.props.matchfound && this.props.matchfound(undefined);\r\n\r\n return `${suggestion.visitor.firstName} ${suggestion.visitor.surname} - ${(!_.isUndefined(suggestion.visitor.companyName) && suggestion.visitor.companyName !== '') ? suggestion.visitor.companyName :\" N/A \"}`;\r\n // ${suggestion.visitor.companyName}`;\r\n }\r\n\r\n handleClear(e) {\r\n this.reset();\r\n this.props.matchfound && this.props.matchfound(undefined);\r\n this.props.fieldManualCleared && this.props.fieldManualCleared(true);\r\n this.props.fieldCleared && this.props.fieldCleared(undefined);\r\n this.props.handleKeyPress && this.props.handleKeyPress({ key: \"Reset\" }, []);\r\n }\r\n getSuggestions(val) {\r\n const { meetings } = this.props;\r\n\r\n\r\n if (!meetings) return [];\r\n\r\n\r\n const inputValue = val.trim().toLowerCase();\r\n\r\n const inputParts = inputValue.split(\" \").filter(value => {\r\n return value !== \"\";\r\n });\r\n\r\n\r\n const match = _.filter(_.filter(meetings, o => {\r\n\r\n if (inputParts.length === 1) {\r\n\r\n return (_.startsWith(o.visitor.firstName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n _.startsWith(o.visitor.surname.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n _.startsWith(o.visitor.companyName.toLowerCase(), inputParts[0].toLowerCase()));\r\n } else if (inputParts.length >= 3) {\r\n\r\n return (_.startsWith(o.visitor.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n _.startsWith(o.visitor.surname.toLowerCase(), inputParts[1].toLowerCase()) &&\r\n _.startsWith(o.visitor.companyName.toLowerCase(), inputParts[inputParts.length - 1].toLowerCase()));\r\n } else if (inputParts.length >= 2 && inputParts.length < 3) {\r\n\r\n return (_.startsWith(o.visitor.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n _.startsWith(o.visitor.surname.toLowerCase(), inputParts[1].toLowerCase()));\r\n\r\n } else {\r\n\r\n return undefined\r\n }\r\n\r\n }), data => !_.isUndefined(data));\r\n\r\n\r\n\r\n // if (inputParts < 3)\r\n this.props.matchfound && this.props.matchfound(match.length > 0);\r\n\r\n\r\n this.setState({\r\n dataMatch: match\r\n });\r\n\r\n return match;\r\n }\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n\r\n this.setState({ suggestions: this.getSuggestions(value) });\r\n };\r\n\r\n onSuggestionsClearRequested = () => {\r\n\r\n\r\n //this.props.matchfound && this.props.matchfound(undefined);\r\n // if (this.state.dataMatch && this.state.dataMatch.length > 0)\r\n // this.props.matchfound && this.props.matchfound(undefined);\r\n // this.setState({\r\n // suggestions: []\r\n // });\r\n };\r\n\r\n onChange = (event, { newValue }) => {\r\n\r\n let inputVal = newValue.split(\" \").filter(value => {\r\n return value !== \"\";\r\n });\r\n\r\n\r\n\r\n if (inputVal.length === 0) {\r\n\r\n this.setState({ visitor: undefined, dataMatch: [] });\r\n this.reset();\r\n this.props.matchfound && this.props.matchfound(undefined);\r\n this.props.fieldManualCleared && this.props.fieldManualCleared(true);\r\n\r\n } else {\r\n this.props.fieldCleared && this.props.fieldCleared(undefined)\r\n }\r\n if (newValue.length > 2) {\r\n this.handleVisitorChange(newValue);\r\n }\r\n this.props.handleInputValue && this.props.handleInputValue(newValue);\r\n\r\n this.setState({\r\n value: newValue,\r\n valid: inputVal.length > 0\r\n });\r\n\r\n // setTimeout(() => {\r\n // // Delayed because parseley not ready if user selected a suggestion\r\n\r\n // this.setState({\r\n // valid: $(this.refs.autosuggest.input)\r\n // .parsley()\r\n // .isValid()\r\n // });\r\n // }, 0);\r\n\r\n //this.checkMatch(newValue);\r\n };\r\n handleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method) {\r\n\r\n }\r\n handleVisitorSelected(vis, setValue = false) {\r\n\r\n const stateChanges = {\r\n meetingId: vis.id,\r\n visitorId: vis.visitor.id,\r\n companyName: vis.visitor.companyName,\r\n visitor: vis.visitor.firstName + \" \" + vis.visitor.surname,\r\n matchfound: true,\r\n ...(setValue\r\n ? { value: vis.visitor.firstName + \" \" + vis.visitor.surname, valid: true }\r\n : {})\r\n };\r\n\r\n\r\n this.setState(stateChanges);\r\n this.props.matchfound && this.props.matchfound(true);\r\n this.props.onSelected && this.props.onSelected(stateChanges);\r\n }\r\n\r\n handleVisitorChange(value) {\r\n // const { memberId } = this.state;\r\n this.setState({\r\n name: value\r\n });\r\n }\r\n\r\n renderSuggestion(suggestion) {\r\n return (\r\n
    \r\n\r\n{suggestion.visitor.firstName} {suggestion.visitor.surname} {\"-\"} {(!_.isUndefined(suggestion.visitor.companyName) && suggestion.visitor.companyName !== '') ? suggestion.visitor.companyName :\" N/A \"}\r\n {/* {suggestion.visitor.companyName} */}\r\n\r\n
    \r\n );\r\n }\r\n\r\n checkMatch(currentValue) {\r\n\r\n\r\n const matchedVisitor = this.props.meetings.find(meeting => {\r\n if (currentValue) {\r\n const value = currentValue.toLowerCase();\r\n const parts = value.split(\" \").filter(value => {\r\n return value !== \"\";\r\n });\r\n\r\n if (parts.length > 3) {\r\n if (\r\n _.startsWith(meeting.visitor.firstName.toLowerCase(), parts[0].toLowerCase()) &&\r\n _.startsWith(meeting.visitor.surname.toLowerCase(), parts[1].toLowerCase()) &&\r\n _.startsWith(meeting.visitor.companyName.toLowerCase(), parts[3].toLowerCase())) {\r\n\r\n\r\n return true;\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n return false;\r\n });\r\n\r\n\r\n // const matchedVisitor_ = _.filter(this.props.meetings, meeting => {\r\n // if (currentValue) {\r\n // const value = currentValue.toLowerCase();\r\n // const parts = value.split(\" \").filter(value => {\r\n // return value !== \"\";\r\n // });\r\n\r\n // if (parts.length > 0) {\r\n // if (\r\n // _.startsWith(meeting.visitor.firstName.toLowerCase(), parts[0].toLowerCase()) ||\r\n // _.startsWith(meeting.visitor.surname.toLowerCase(), parts[0].toLowerCase()) ||\r\n // _.startsWith(meeting.visitor.companyName.toLowerCase(), parts[0].toLowerCase())) {\r\n\r\n\r\n // return meeting;\r\n\r\n // }\r\n // }\r\n\r\n // }\r\n\r\n // return null\r\n // });\r\n\r\n\r\n\r\n if (_.isUndefined(matchedVisitor) === false) {\r\n // if (matchedVisitor_.length === 1) {\r\n\r\n\r\n this.handleVisitorSelected(matchedVisitor);\r\n\r\n } else {\r\n\r\n if (currentValue === \"\") {\r\n //this.props.matchfound && this.props.matchfound(undefined);\r\n }\r\n\r\n\r\n //this.props.matchfound && this.props.matchfound(false);\r\n\r\n this.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n }\r\n }\r\n\r\n inputClick() {\r\n if (\r\n this.state.valid === true &&\r\n !_.isUndefined(this.props.clearableIfValid) &&\r\n this.props.clearableIfValid === true\r\n ) {\r\n this.reset();\r\n //this.props.matchfound && this.props.matchfound(undefined);\r\n this.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n this.props.handleKeyPress && this.props.handleKeyPress({ key: \"Clear\" }, []);\r\n }\r\n }\r\n\r\n render() {\r\n const { value, suggestions, valid } = this.state;\r\n\r\n const disabled =\r\n _.isUndefined(this.props.disabled) || this.props.disabled === false\r\n ? false\r\n : true;\r\n\r\n const inputProps = {\r\n placeholder: this.props.placeHolder ? this.props.placeHolder : \"Visitor\",\r\n value,\r\n onChange: this.onChange,\r\n onClick: this.inputClick\r\n };\r\n\r\n \r\n return (\r\n\r\n \r\n this.handleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method)}\r\n renderSuggestion={this.renderSuggestion}\r\n inputProps={inputProps}\r\n theme={{\r\n // maybe make global for reuse at some point\r\n container:\r\n \"auto-suggest Select \" +\r\n (!_.isUndefined(this.props.clearableIfValid) &&\r\n this.props.clearableIfValid === true\r\n ? \"is-clearable\"\r\n : \"\"),\r\n suggestionsList: \"Select-menu-outer\",\r\n suggestion: \"Select-menu\"\r\n }}\r\n renderInputComponent={inputProps => {\r\n // const iconProp =\r\n // !_.isUndefined(this.props.clearableIfValid) &&\r\n // this.props.clearableIfValid === true &&\r\n // valid === true\r\n // ? { icon: \"ion-close-round\" }\r\n // : {};\r\n\r\n const iconProp =\r\n valid === true\r\n ? { icon: \"ion-close-round\" }\r\n : {};\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n {\r\n\r\n // if (e.key === \"Enter\" && !_.isUndefined(this.props.handleKeyPress)) {\r\n\r\n // this.props.handleKeyPress(e, this.state.dataMatch);\r\n // }\r\n\r\n\r\n\r\n // }}\r\n onKeyPress={e => {\r\n\r\n\r\n if (e.key === \"Enter\" && !_.isUndefined(this.props.handleKeyPress)) {\r\n\r\n if (this.state.value || this.state.value !== \"\") {\r\n\r\n this.props.handleKeyPress(e, this.state.dataMatch);\r\n }\r\n else {\r\n if (this.props.listDefault)\r\n this.props.handleKeyPress(e, this.props.meetings);\r\n else {\r\n this.props.handleKeyPress(e, []);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n \r\n }\r\n }\r\n onBlur={e => {\r\n /* Ensures that member ID fetched even if not selected via autosuggest */\r\n\r\n // this.checkMatch(e.target.value);\r\n\r\n }\r\n\r\n }\r\n {...inputProps}\r\n // parsley={{\r\n // \"data-parsley-matches-one-of\": JSON.stringify({\r\n // allSuggestions: this.props.meetings.map(meeting => {\r\n // return { value: meeting.visitor.firstName + \" \" + meeting.visitor.surname };\r\n // })\r\n // }),\r\n // \"data-parsley-pattern\": \"/^[a-z ,.'-]+$/i\",\r\n // \"data-parsley-minlength\": 4,\r\n // \"data-parsley-required\": true,\r\n // \"data-parsley-error-message\":\r\n // \"Please enter an existing visitor name\"\r\n // }}\r\n //{...iconProp}\r\n />\r\n {valid === true &&
    this.handleClear(e)}>
    }\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n />\r\n\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default VisitorAutoSuggestComponent;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport * as configHelper from '../../helpers/configHelper';\r\nimport Button from '../../components/Button/Button';\r\nimport autoBind from 'react-autobind';\r\nimport _ from 'lodash';\r\n\r\nimport * as serviceModulesActions from '../../store/ServiceModules/actions';\r\nimport * as settingSelector from '../../store/ConciergeSetting/reducer';\r\nimport '../../sass/components/visitorLogCard/visitorSearchResult.css';\r\nimport { browserHistory } from 'react-router';\r\n\r\nconst PortalTypes = configHelper.PortalTypes;\r\nclass VisitorSearchResult extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tvisitors: [],\r\n\t\t\tbtnStatus: 'unchecked hidden',\r\n\t\t\tbtnText: 'Check-in',\r\n\t\t\tmore: 'hidden',\r\n\t\t\textra: '',\r\n\t\t\tmoreBtnText: 'More',\r\n\t\t\tchecked: 'false',\r\n\t\t\tcheckInTimeText: 'Expected',\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.setting && !_.isUndefined(this.props.setting.portalType) ? this.props.setting.portalType : ''\r\n\t\t};\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tUNSAFE_componentWillReceiveProps(nextProps, nextState) {\r\n\t\tif (this.props.setting !== nextProps.setting && !_.isUndefined(nextProps.setting)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tportalType: nextProps.setting.portalType\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thandleClick(e) {\r\n\t\tthis.setState({\r\n\t\t\tbtnStatus: 'checked unhide'\r\n\t\t});\r\n\r\n\t\t// if(this.state.btnText ==\"View\")\r\n\t\t// {}\r\n\t}\r\n\r\n\thandleNo(e) {\r\n\t\tthis.setState({\r\n\t\t\tbtnStatus: 'unchecked hidden'\r\n\t\t});\r\n\t}\r\n\r\n\thandleYes(e) {\r\n\t\tthis.setState({\r\n\t\t\tbtnStatus: 'unchecked hidden checked-in',\r\n\t\t\tbtnText: 'View',\r\n\t\t\tcheckInTimeText: 'Check-in',\r\n\t\t\tmoreBtnText: 'More'\r\n\t\t});\r\n\t}\r\n\r\n\tgetTimeNow() {\r\n\t\t// const clock = moment();\r\n\t}\r\n\r\n\thandleMore(e) {\r\n\t\tif (this.state.checked === 'false') {\r\n\t\t\tthis.setState({\r\n\t\t\t\tchecked: 'true',\r\n\t\t\t\textra: 'extra',\r\n\t\t\t\tmore: 'unhide',\r\n\t\t\t\tmoreBtnText: 'Less'\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\textra: '',\r\n\t\t\t\tmore: 'hidden',\r\n\t\t\t\tmoreBtnText: 'More',\r\n\t\t\t\tchecked: 'false'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thandleView(val) {\r\n\t\tthis.props.gotoProfile(this.props.meetingId, this.props.data);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\tcompany,\r\n\t\t\ttimeExpected,\r\n\t\t\tdueDate,\r\n\t\t\tname,\r\n\t\t\tspecialInstructions,\r\n\t\t\ttenant,\r\n\t\t\tcompanyName,\r\n\t\t\tstatus,\r\n\t\t\tisDisabled,\r\n\t\t\tid,\r\n\t\t\ttenantAddress,\r\n\t\t\tmeetingId,\r\n\t\t\thasMargin,\r\n\t\t\ttextcolor,\r\n\t\t\tstatusLabel\r\n\t\t} = this.props;\r\n\r\n\t\t\r\n\t\tif (status === 'notified') {\r\n\t\t\treturn (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tVisitor\r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{name}\r\n\t\t\t\t\t\t\t\t{company}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{statusLabel}\r\n\t\t\t\t\t\t\t\t{timeExpected}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tTenant\r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{tenant}\r\n\t\t\t\t\t\t\t\t{this.state.portalType === PortalTypes.Commercial ? (\r\n\t\t\t\t\t\t\t\t\t{companyName}\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t{tenantAddress}\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tDo you wish to check-in this visitor?\r\n\t\t\t\t\t\t\t\t{name}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{!_.isUndefined(specialInstructions) && specialInstructions !='' && specialInstructions != null ?\r\n\t\t\t\t\t\t\t\t (Special Instruction) : \"\"}\r\n\r\n\t\t\t\t\t\t\t\t{!_.isUndefined(specialInstructions) && specialInstructions !='' && specialInstructions != null ?\r\n\t\t\t\t\t\t\t\t({specialInstructions} ) : \"\"}\r\n\t\t\t\t\t\t\t\t\r\n \t\t\t\t
    \r\n\t\t\t\t\t\t\t \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t// this.handleYes();\r\n\t\t\t\t\t\t\t\t\t\tthis.props.handleSubmit(id);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t);\r\n\t\t} else if (status === 'checkedin') {\r\n\t\t\treturn (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tvisitor\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{name}\r\n\t\t\t\t\t\t\t{company}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{statusLabel}\r\n\t\t\t\t\t\t\t{timeExpected}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tTenant\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{tenant}\r\n\t\t\t\t\t\t\t{this.state.portalType === PortalTypes.Commercial ? (\r\n\t\t\t\t\t\t\t\t{companyName}\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t{tenantAddress}\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t);\r\n\t\t} else if (_.isUndefined(status) || status === '') {\r\n\t\t\treturn (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tVisitor\r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{name}\r\n\t\t\t\t\t\t\t\t{company}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{statusLabel}\r\n\t\t\t\t\t\t\t\t{timeExpected}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tTenant\r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{tenant}\r\n\t\t\t\t\t\t\t\t{this.state.portalType === PortalTypes.Commercial ? (\r\n\t\t\t\t\t\t\t\t\t{companyName}\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t{tenantAddress}\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nVisitorSearchResult.propType = {\r\n\tname: PropTypes.string,\r\n\tstatus: PropTypes.string,\r\n\tsender: PropTypes.string,\r\n\tdueDate: PropTypes.string,\r\n\tdeliveryDate: PropTypes.string,\r\n\tcompany: PropTypes.string,\r\n\tparcelDetail: PropTypes.string,\r\n\tspecialInstructions: PropTypes.string,\r\n\ttenantAddress: PropTypes.string\r\n};\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tsetting: settingSelector.loadGlobalSetting(state)\r\n\t};\r\n}\r\n\r\nexport default connect(mapStateToProps)(VisitorSearchResult);\r\n","import React, { Component } from \"react\";\r\nimport \"../../sass/components/ResponseMessage/responseMessage.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * A general purpose ResponseMessage Component for use throughout the project, where message and style is dynamic\r\n */\r\n\r\nclass ResponseMessage extends Component {\r\n render() {\r\n const { text, id, className, type } = this.props;\r\n\r\n\r\n return (\r\n \r\n {type && type === \"error\" ?\r\n

    {text}

    \r\n :\r\n {text}\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nResponseMessage.propTypes = {\r\n\r\n /** Type of Response for the component*/\r\n type: PropTypes.string,\r\n\r\n /** Text displayed on the Component*/\r\n text: PropTypes.string,\r\n\r\n /** If the component needs an id */\r\n id: PropTypes.string\r\n};\r\n\r\nexport default ResponseMessage;\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport \"../../sass/components/VisitorsExpected/VisitorsExpected.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * A general purpose Visitors Expected Component to display the day and time details of the Visitors and their Numbers\r\n */\r\n\r\nclass VisitorsExpected extends Component {\r\n render() {\r\n\r\n const { dayPeriodName, numberVisitors, timePeriod, linkValue, handleLinkSelected, moduleColor } = this.props;\r\n\r\n return (\r\n
    {\r\n handleLinkSelected && handleLinkSelected();\r\n }}>\r\n
    {dayPeriodName}
    \r\n
    \r\n

    {numberVisitors}

    \r\n
    \r\n
    \r\n\r\n {(numberVisitors > 1) ?

    visitors

    :

    visitor

    }\r\n\r\n
    \r\n
    \r\n

    are expected to arrive between

    \r\n
    \r\n
    \r\n

    {timePeriod}

    \r\n
    \r\n \r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nVisitorsExpected.propTypes = {\r\n\r\n /** Text displayed on the Component to denote the Day Period*/\r\n dayPeriodName: PropTypes.string,\r\n\r\n /** Text to display the Number of visitors Expected */\r\n numberVisitors: PropTypes.number,\r\n\r\n /** Time Period to denote the time when the visitor is Expected*/\r\n timePeriod: PropTypes.string,\r\n\r\n /** The link to redirect for more information */\r\n linkValue: PropTypes.string,\r\n\r\n /** The variable to display module color */\r\n moduleColor: PropTypes.string\r\n};\r\n\r\nexport default VisitorsExpected;\r\n","import React, { Component } from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport \"../../sass/components/PastVisitors/PastVisitors.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * A general purpose Visitors Expected Component to display the day and time details of the Visitors and their Numbers\r\n */\r\n\r\nclass PastVisitors extends Component {\r\n render() {\r\n\r\n const { dayPeriodName, expectedVisitors, checkedinVisitors, notshowvisitors, linkValue, handleLinkSelected } = this.props;\r\n\r\n\r\n return (\r\n
    {\r\n handleLinkSelected && handleLinkSelected();\r\n }}>\r\n
    {dayPeriodName}
    \r\n
    {expectedVisitors}
    \r\n
    visitors were expected
    \r\n
    {checkedinVisitors}
    \r\n
    visitors were checked-in
    \r\n
    {notshowvisitors}
    \r\n
    visitors that did not arrive
    \r\n
    \r\n handleLinkSelected(linkValue)}> Find out more\r\n { /**Find out more */}\r\n
    \r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nPastVisitors.propTypes = {\r\n\r\n /** Text displayed on the Component to denote the Day Period*/\r\n dayPeriodName: PropTypes.string,\r\n\r\n /** Text to display the Number of visitors Expected */\r\n numberVisitors: PropTypes.string,\r\n\r\n /** Time Period to denote the time when the visitor is Expected*/\r\n timePeriod: PropTypes.string,\r\n\r\n /** The link to redirect for more information */\r\n linkValue: PropTypes.string\r\n};\r\n\r\nexport default PastVisitors;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport autoBind from 'react-autobind';\r\nimport moment from 'moment';\r\nimport dateFormat from 'dateformat';\r\nimport Datepicker from 'react-datepicker';\r\nimport {withRouter} from 'react-router-dom';\r\n//import CheckinVisitorForm from \"../../component/CheckinVisitorForm/CheckinVisitorForm\";\r\nimport * as meetingSelector from '../../../store/Meetings/reducer';\r\nimport * as visitorsAction from '../../../store/Visitors/actions';\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\nimport * as meetingsActions from '../../../store/Meetings/actions';\r\nimport * as meetingActions from '../../../store/Meetings/actions';\r\nimport * as visitorActions from '../../../store/Visitors/actions';\r\nimport * as residentAction from '../../../store/Residents/actions';\r\nimport * as residentSelectors from '../../../store/Residents/reducer';\r\nimport Button from '../../../components/Button/Button';\r\nimport InputComponent from '../../../components/Input/Input';\r\nimport VisitorAutoSuggest from '../../../components/VisitorAutoSuggest/VisitorAutoSuggestComponent';\r\nimport _ from 'lodash';\r\nimport '../../../sass/containers/visitors/index.css';\r\n// import VisitorLogCard from \"../../../components/visitorLogCard/visitorLogCard\";\r\nimport VisitorSearchResult from '../../../components/visitorLogCard/visitorSearchResult';\r\nimport * as $ from 'jquery';\r\nimport ResponseMessage from '../../../components/ResponseMessage/ResponseMessage';\r\nimport VisitorsExpected from '../../../components/VisitorsExpected/VisitorsExpected';\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport PastVisitors from '../../../components/PastVisitors/PastVisitors';\r\n\r\n//Log time Hrs\r\nconst TimeLogHelper = {\r\n\tMorningLogTime: 11,\r\n\tNoonLogTime: 12,\r\n\tNoonLogTimeTo: 13,\r\n\tEveningLogTime: 23\r\n};\r\nconst VisitorStatuses = {\r\n\tCheckedIn: 'checkedin',\r\n\tCheckedOut: 'checkedout',\r\n\tNotified: 'notified'\r\n};\r\n\r\nclass CheckinVisitorScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tvalue: '',\r\n\t\t\tname: '',\r\n\t\t\tvisitorName: '',\r\n\t\t\tstartDate: moment(),\r\n\t\t\tvisitorCompany: '',\r\n\t\t\tdisabled: 'disabled',\r\n\t\t\trows: [ 0 ],\r\n\t\t\ttype: 'visitors',\r\n\t\t\tformSubmitted: false,\r\n\t\t\tnow: moment(),\r\n\t\t\tstatus: visitorActions.getVisitorStauses(),\r\n\t\t\tfound: true,\r\n\t\t\tmorningLog: [],\r\n\t\t\tnoonLog: [],\r\n\t\t\tafterNoonLog: [],\r\n\t\t\tisPastVisitorEnable: false\r\n\t\t};\r\n\t\tthis.addVisitorValidation = null;\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t// const { now } = this.state;\r\n\t\t// const { startDate } = this.state;\r\n\r\n\t\t// const { startDate } = this.state;\r\n\r\n\t\tthis.addValidation();\r\n\t\tthis.props.dispatch(visitorsAction.cancelMeetingLoad());\r\n\t}\r\n\tUNSAFE_componentWillMount() {\r\n\t\tconst { now } = this.state;\r\n\r\n\t\tthis.props.dispatch(meetingActions.getMeetingsByDate(moment(now).format('YYYY-MM-DD')));\r\n\t\tthis.props.dispatch(meetingsActions.getFilterMeetingsByDate(dateFormat(now, 'isoDate')));\r\n\r\n\t\tthis.props.dispatch(residentAction.getAllResidents());\r\n\r\n\t\t// this.props.dispatch(\r\n\t\t// meetingsActions.getMeetingsByDate(dateFormat(startDate, \"isoDate\"))\r\n\t\t// );\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tthis.addVisitorValidation.destroy();\r\n\t\tthis.props.dispatch(visitorActions.resetVisitorCheckedIn());\r\n\t\tthis.formReset();\r\n\t}\r\n\r\n\tUNSAFE_componentWillReceiveProps(nextProps, nextState) {\r\n\t\tif (this.props.meetings !== nextProps.meetings) {\r\n\t\t\t//visitor status changed on action, set new data on action completed\r\n\t\t\tif (!_.isUndefined(this.state.selectedMeeting) && nextProps.meetings.length > 0) {\r\n\t\t\t\tvar selectedMeetingUpdated = _.find(nextProps.meetings, { id: this.state.selectedMeeting.id });\r\n\r\n\t\t\t\tif (selectedMeetingUpdated) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tselectedMeeting: selectedMeetingUpdated\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//visitor list haschange due to action on visitor result cards, update with ne data\r\n\t\t\tif (\r\n\t\t\t\t!_.isUndefined(this.state.visitorMeetingOptions) &&\r\n\t\t\t\tthis.state.visitorMeetingOptions.length > 0 &&\r\n\t\t\t\tnextProps.meetings.length > 0\r\n\t\t\t) {\r\n\t\t\t\tvar visMeetingsUpdated = _.map(this.state.visitorMeetingOptions, (val) => {\r\n\t\t\t\t\tlet newObj = _.find(nextProps.meetings, { id: val.id });\r\n\t\t\t\t\tif (newObj && newObj.id === val.id) {\r\n\t\t\t\t\t\treturn newObj;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn val;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tvisitorMeetingOptions: _.filter(visMeetingsUpdated, (o) => !_.isUndefined(o))\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tUNSAFE_componentWillUpdate(nextProps, nextState) {\r\n\t\tif (this.props.meetingsFilter !== nextProps.meetingsFilter) {\r\n\t\t\tthis.setMeetingLog(nextProps.meetingsFilter);\r\n\t\t}\r\n\r\n\t\t//fix for visitor found result return from visitor autosuggest\r\n\t\t//this is due to input field holding more values than expected for match condition in th component implementation\r\n\t\tif (this.state.visitorFound !== nextState.visitorFound && _.isUndefined(nextState.visitorFound)) {\r\n\t\t\t//if (this.state.selectedMeeting || (this.state.visitorMeetingOptions && this.state.visitorMeetingOptions.length > 0)) { }\r\n\t\t\t// this.setState({\r\n\t\t\t// selectedMeeting: undefined,\r\n\t\t\t// visitorMeetingOptions: []\r\n\t\t\t// })\r\n\t\t}\r\n\t}\r\n\r\n\taddValidation() {\r\n\t\tthis.addVisitorValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tvalidate(fromSubmit = false) {\r\n\t\tthis.addVisitorValidation.validate({ force: true });\r\n\r\n\t\tconst valid = this.addVisitorValidation.isValid();\r\n\r\n\t\tthis.setState({\r\n\t\t\taddVisitorFormValid: valid,\r\n\t\t\taddVisitorFormUsed: true,\r\n\t\t\trows: this.state.rows.concat([ this.state.rows.length ])\r\n\t\t});\r\n\r\n\t\tif (valid === true && fromSubmit === true) {\r\n\t\t\t//this.handleVisitorSearch();\r\n\t\t\tthis.formReset();\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\taddVisitorFormUsed: false,\r\n\t\t\t\tformSubmitted: true\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tformReset() {\r\n\t\tthis.setState({\r\n\t\t\tname: '',\r\n\t\t\tvisitorCompany: '',\r\n\t\t\tselecetMeetingId: '',\r\n\t\t\tselectedMeeting: undefined\r\n\t\t});\r\n\t}\r\n\r\n\thandleBookVisitorsClick(e) {\r\n\t\r\n\t\tthis.props.history.push('/concierge/visitor-booking');\r\n\t\twindow.scrollTo(0, 0);\r\n\t}\r\n\r\n\thandleVisitorSearch(e) {\r\n\t\tconst { visitorCompany, name } = this.state;\r\n\t\tvar now = new Date();\r\n\r\n\t\t//if (e.charCode == 13) {}\r\n\t\tconst data = {\r\n\t\t\tstatus: 'notified',\r\n\t\t\tcompanyName: visitorCompany,\r\n\t\t\tdueDate: dateFormat(now, 'isoDate'),\r\n\t\t\tname: name\r\n\t\t};\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tvisitorActions.searchVisitor(data, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.props.dispatch(visitorActions.getVisitorSearchInput(data));\r\n\t\t\t\t\tthis.props.history.push({\r\n\t\t\t\t\t\tpathname: '/concierge/visitor-checkin-review',\r\n\t\t\t\t\t\tstate: { visitorData: data }\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tfound: false\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.props.history.push({\r\n\t\t\t\t\t\t\tpathname: '/concierge/visitor-management',\r\n\t\t\t\t\t\t\tstate: { visitorData: data }\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}, 2000);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\thandleInputChange(e) {\r\n\t\tconst field = e.target.name;\r\n\t\tconst value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\t}\r\n\r\n\t//handle selected visitor / meeting from auto suggest\r\n\thandleSelectedVisitor(data) {\r\n\t\tthis.setState({\r\n\t\t\tselecetMeetingId: data.meetingId,\r\n\t\t\tvisitorId: data.visitorId,\r\n\t\t\tvisitorCompany: data.companyName,\r\n\t\t\tname: data.visitor,\r\n\t\t\tselectedMeeting: _.find(this.props.meetings, { id: data.meetingId }),\r\n\t\t\t//visitorFound: data ? true : false,\r\n\t\t\tvisitorMeetingOptions: undefined\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => document.activeElement.blur());\r\n\t}\r\n\r\n\tgetAddress(memberId) {\r\n\t\tconst { residents } = this.props;\r\n\t\tvar resident = _.find(residents, { id: memberId });\r\n\t\tif (_.isUndefined(resident)) return '';\r\n\r\n\t\t\r\n\t\treturn `${resident.addressLine1 == null ? '':resident.addressLine1}${resident.addressLine2 == null ? '': (resident.addressLine1 == null ? '':', ') + resident.addressLine2}${resident.postCode == null ? '': ( resident.addressLine1 == null && resident.addressLine2 == null ? '':', ') + resident.postCode}`;\r\n\t}\r\n\r\n\thandleSumbit(val) {\r\n\t\tconst { meetings } = this.props;\r\n\t\tlet selectedMeeting = _.filter(meetings, (meeting) => meeting.id === val);\r\n\t\tthis.props.dispatch(\r\n\t\t\tvisitorActions.checkinVisitor(selectedMeeting, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.props.dispatch(meetingsActions.getMeetingsByDate(dateFormat(this.state.startDate, 'isoDate')));\r\n\t\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\t\tmeetingActions.notifyCheckedIn(selectedMeeting, (status) => {\r\n\t\t\t\t\t\t\tif (status === true) {\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\thandleDateChange(date) {\r\n\t\t// this.setState({\r\n\t\t// startDate: date,\r\n\t\t// isPastVisitorEnable:true\r\n\t\t// });\r\n\t\t// if (moment(date).format(\"YYYY-MM-DD\") !== moment(new Date()).format(\"YYYY-MM-DD\")) {\r\n\r\n\t\tif (moment(date).format('YYYY-MM-DD') < moment(new Date()).format('YYYY-MM-DD')) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tstartDate: date,\r\n\t\t\t\tisPastVisitorEnable: true\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\tstartDate: date,\r\n\t\t\t\tisPastVisitorEnable: false\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.props.dispatch(meetingsActions.getFilterMeetingsByDate(dateFormat(date, 'isoDate')));\r\n\r\n\t\tsetTimeout(() => document.activeElement.blur());\r\n\t\t// this.props.dispatch(\r\n\t\t// meetingsActions.getMeetingsByDate(dateFormat(date, \"isoDate\"))\r\n\t\t// );\r\n\t}\r\n\r\n\t//handle enter key used on visitor auto suggest\r\n\thandleAutoKeyPress(e, data) {\r\n\t\tif (e.Key === 'Enter') {\r\n\t\t\tconsole.log('enter key used: ', data);\r\n\t\t}\r\n\t}\r\n\r\n\tsetMeetingLog(meetings) {\r\n\t\tvar morningLog = [];\r\n\t\tvar noonLog = [];\r\n\t\tvar afterNoonLog = [];\r\n\t\tvar eveningLog = [];\r\n\r\n\t\t// if (meetings && meetings.length > 0) {}\r\n\r\n\t\tmorningLog = _.filter(meetings, (meeting) => {\r\n\t\t\tlet mins = new Date(meeting.start).getUTCHours() * 60 + new Date(meeting.start).getUTCMinutes();\r\n\r\n\t\t\t//convert to mins\r\n\t\t\tlet mrn = TimeLogHelper.MorningLogTime * 60 + 59;\r\n\t\t\treturn mins <= mrn;\r\n\t\t});\r\n\r\n\t\tnoonLog = _.filter(meetings, (meeting) => {\r\n\t\t\tlet mins = new Date(meeting.start).getUTCHours() * 60 + new Date(meeting.start).getUTCMinutes();\r\n\r\n\t\t\t//convert to mins\r\n\t\t\tlet mrn = TimeLogHelper.MorningLogTime * 60 + 59;\r\n\t\t\tlet noon = TimeLogHelper.NoonLogTime * 60 + 59;\r\n\t\t\tlet noonTo = TimeLogHelper.NoonLogTimeTo * 60 + 59;\r\n\t\t\treturn mins > mrn && mins <= noonTo;\r\n\t\t});\r\n\r\n\t\tafterNoonLog = _.filter(meetings, (meeting) => {\r\n\t\t\tlet mins = new Date(meeting.start).getUTCHours() * 60 + new Date(meeting.start).getUTCMinutes();\r\n\r\n\t\t\t//convert to mins\r\n\t\t\tlet noon = TimeLogHelper.NoonLogTimeTo * 60 + 59;\r\n\t\t\tlet aftnoon = TimeLogHelper.EveningLogTime * 60 + 59;\r\n\r\n\t\t\treturn mins > noon && mins <= aftnoon;\r\n\t\t});\r\n\r\n\t\tthis.setState({\r\n\t\t\tmorningLog: morningLog,\r\n\t\t\tnoonLog: noonLog,\r\n\t\t\tafterNoonLog: afterNoonLog\r\n\t\t});\r\n\t}\r\n\tformatStatusString(status) {\r\n\t\tlet val;\r\n\t\tswitch (status) {\r\n\t\t\tcase VisitorStatuses.CheckedIn:\r\n\t\t\t\tval = 'Checked-in';\r\n\t\t\t\tbreak;\r\n\t\t\tcase VisitorStatuses.CheckedOut:\r\n\t\t\t\tval = 'Checked-out';\r\n\t\t\t\tbreak;\r\n\t\t\tcase VisitorStatuses.Notified:\r\n\t\t\t\tval = 'Expected';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tval = '';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn val;\r\n\t}\r\n\r\n\tNavigateToVisitorManagement() {\r\n\t\tthis.props.dispatch(visitorActions.visitorSearchRedirected(undefined));\r\n\t\t\r\n\t\tthis.props.history.push({\r\n\t\t\tpathname: '/concierge/visitor-management',\r\n\t\t\tstate: { startDate: this.state.startDate.toDate() }\r\n\t\t});\r\n\r\n\t\twindow.scrollTo(0, 0);\r\n\t}\r\n\r\n\tGotoProfile(meetingId, data) {\r\n\t\tthis.props.history.push({\r\n\t\t\tpathname: '/concierge/visitor-profile',\r\n\t\t\tstate: {\r\n\t\t\t\tmeetingId: meetingId,\r\n\t\t\t\tmeeting: data\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.scrollTo(0, 0);\r\n\t}\r\n\trender() {\r\n\t\tconst { disabled, formSubmitted, visitorCompany, status, visitorName, startDate } = this.state;\r\n\t\tconst { meetings } = this.props;\r\n\r\n\t\tvar renderDate = new Date();\r\n\t\tlet visitors = [];\r\n\t\tlet meeting = [];\r\n\t\tif (this.props.meetings && this.props.meetings !== null && this.props.meetings.length > 0) {\r\n\t\t\tmeeting = _.filter(this.props.meetings, (o) => o.visitor && o.visitor.status === status.notified);\r\n\t\t\tvisitors = _.map(meeting, (m) => {\r\n\t\t\t\treturn m.visitor;\r\n\t\t\t});\r\n\t\t}\r\n\t\tconst { tempLog } = this.state;\r\n\r\n\t\tconst early = _.sortBy(meeting, [ 'meeting', 'time' ], [ 'asc', 'asc' ]);\r\n\r\n\t\tconst { modules } = this.props;\r\n\t\tconst currentModule = _.find(modules, (o) => o.title === 'Visitors');\r\n\r\n\t\tconst overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\t\tconst h1_style = {\r\n\t\t\tcolor: overlayColor\r\n\t\t};\r\n\r\n\t\t//to be removed on later confirmation ERP-2982\r\n\t\tlet searchMeetings = [];\r\n\t\t\r\n\t\tif (meetings && meetings.length > 0) {\r\n\t\t\tlet cleanMeetingsList = _.filter(\r\n\t\t\t\tmeetings,\r\n\t\t\t\t(meeting) => meeting.visitor !== null\r\n\t\t\t);\r\n\r\n\t\t\t\r\n\t\t\tsearchMeetings = _.filter(\r\n\t\t\t\tcleanMeetingsList,\r\n\t\t\t\t(meeting) => meeting && meeting.visitor.status === 'notified' || meeting.visitor.status === 'checkedin'\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tlet expectedVisitorsMorning = _.filter(this.state.morningLog, (log) => log.visitor !== null && log.visitor.status === 'notified');\r\n\t\tlet expectedVisitorsNoon = _.filter(this.state.noonLog, (log) => log.visitor !== null && log.visitor.status === 'notified');\r\n\t\tlet expectedVisitorsAfterNoon = _.filter(this.state.afterNoonLog, (log) =>log.visitor !== null && log.visitor.status === 'notified');\r\n\t\tlet checkinVisitorsMorning = _.filter(this.state.morningLog, (log) =>log.visitor !== null && log.visitor.status === 'checkedin');\r\n\t\tlet checkinVisitorsNoon = _.filter(this.state.noonLog, (log) => log.visitor !== null &&log.visitor.status === 'checkedin');\r\n\t\tlet checkinVisitorsAfterNoon = _.filter(this.state.afterNoonLog, (log) =>log.visitor !== null && log.visitor.status === 'checkedin');\r\n\t\tlet checkoutVisitorsMorning = _.filter(this.state.morningLog, (log) =>log.visitor !== null && log.visitor.status === 'checkedout');\r\n\t\tlet checkoutVisitorsNoon = _.filter(this.state.noonLog, (log) =>log.visitor !== null && log.visitor.status === 'checkedout');\r\n\t\tlet checkoutVisitorsAfterNoon = _.filter(this.state.afterNoonLog, (log) =>log.visitor !== null && log.visitor.status === 'checkedout');\r\n\t\tlet noShowVisitors = _.filter(\r\n\t\t\tthis.props.meetingsFilter,\r\n\t\t\t(val) => val.visitor !== null && val.visitor.status === VisitorStatuses.Notified\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\tvisitorFound: this.state.selectedMeeting == undefined ? val : true\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\thandleKeyPress={(e, data) => {\r\n\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter') {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!_.isUndefined(this.state.selectedMeeting)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvisitorMeetingOptions: [ this.state.selectedMeeting ],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedMeeting: undefined\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvisitorMeetingOptions: data\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => document.activeElement.blur());\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (e.key === 'Clear') {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tvisitorMeetingOptions: data,\r\n\t\t\t\t\t\t\t\t\t\t\t\tvisitorFound: undefined\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tfieldManualCleared={(o) => {\r\n\t\t\t\t\t\t\t\t\t\tif (o === true) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tselectedMeeting: undefined,\r\n\t\t\t\t\t\t\t\t\t\t\t\tvisitorMeetingOptions: []\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t{!_.isUndefined(this.state.selectedMeeting) &&\r\n\t\t\t\t\t\t\t\t(this.state.visitorFound === true || _.isUndefined(this.state.visitorFound)) &&\r\n\t\t\t\t\t\t\t\t(_.isUndefined(this.state.visitorMeetingOptions) ||\r\n\t\t\t\t\t\t\t\t\tthis.state.visitorMeetingOptions.length === 0) ? (\r\n\t\t\t\t\t\t\t\t\t this.handleSumbit(val)}\r\n\t\t\t\t\t\t\t\t\t\ttenant={\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.selectedMeeting.tenant.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.selectedMeeting.tenant.lastName\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\ttenantAddress={this.getAddress(this.state.selectedMeeting.tenant.id)}\r\n\t\t\t\t\t\t\t\t\t\tcompanyName={this.state.selectedMeeting.tenant.companyName}\r\n\t\t\t\t\t\t\t\t\t\tspecialInstructions={this.state.selectedMeeting.specialInstructions}\r\n\t\t\t\t\t\t\t\t\t\tdueDate={moment\r\n\t\t\t\t\t\t\t\t\t\t\t.utc(this.state.selectedMeeting.visitor.dueDate)\r\n\t\t\t\t\t\t\t\t\t\t\t.format('HH:mm A')}\r\n\t\t\t\t\t\t\t\t\t\tisDisabled={\r\n\t\t\t\t\t\t\t\t\t\t\tmoment(this.state.selectedMeeting.date).utc().format('YYYY-MM-DD') !==\r\n\t\t\t\t\t\t\t\t\t\t\tmoment(this.state.today).utc().format('YYYY-MM-DD')\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tstatusLabel={this.formatStatusString(this.state.selectedMeeting.visitor.status)}\r\n\t\t\t\t\t\t\t\t\t\ttimeExpected={\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.selectedMeeting.visitor.status === VisitorStatuses.Notified ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\tmoment.utc(this.state.selectedMeeting.start).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t) : this.state.selectedMeeting.visitor.status ===\r\n\t\t\t\t\t\t\t\t\t\t\tVisitorStatuses.CheckedIn ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\tmoment.utc(this.state.selectedMeeting.visitor.dueDate).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t) : this.state.selectedMeeting.visitor.status ===\r\n\t\t\t\t\t\t\t\t\t\t\tVisitorStatuses.CheckedOut ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\tmoment\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.utc(this.state.selectedMeeting.visitor.checkedOutDate)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\tmoment.utc(this.state.selectedMeeting.date).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tdata={this.state.selectedMeeting}\r\n\t\t\t\t\t\t\t\t\t\tgotoProfile={this.GotoProfile}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t(_.isUndefined(this.state.selectedMeeting) ||\r\n\t\t\t\t\t\t\t\t\t\t!_.isUndefined(this.state.selectedMeeting)) &&\r\n\t\t\t\t\t\t\t\t\t(this.state.visitorFound || _.isUndefined(this.state.visitorFound)) &&\r\n\t\t\t\t\t\t\t\t\t!_.isUndefined(this.state.visitorMeetingOptions) &&\r\n\t\t\t\t\t\t\t\t\tthis.state.visitorMeetingOptions.length > 0 &&\r\n\t\t\t\t\t\t\t\t\t_.map(this.state.visitorMeetingOptions, (meeting, index) => {\r\n\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t this.handleSumbit(val)}\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenant={meeting.tenant.firstName + ' ' + meeting.tenant.lastName}\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantAddress={this.getAddress(meeting.tenant.id)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tcompanyName={meeting.tenant.companyName}\r\n\t\t\t\t\t\t\t\t\t\t\t\tspecialInstructions={meeting.specialInstructions}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdueDate={moment.utc(meeting.visitor.dueDate).format('HH:mm A')}\r\n\t\t\t\t\t\t\t\t\t\t\t\tisDisabled={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdateFormat(meeting.date, 'isoDate') !==\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdateFormat(this.state.today, 'isoDate')\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tstatusLabel={this.formatStatusString(meeting.visitor.status)}\r\n\t\t\t\t\t\t\t\t\t\t\t\ttimeExpected={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmeeting.visitor.status === VisitorStatuses.Notified ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmoment.utc(meeting.start).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : meeting.visitor.status === VisitorStatuses.CheckedIn ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmoment.utc(meeting.visitor.dueDate).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : meeting.visitor.status === VisitorStatuses.CheckedOut ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmoment.utc(meeting.visitor.checkedOutDate).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmoment.utc(meeting.date).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdata={meeting}\r\n\t\t\t\t\t\t\t\t\t\t\t\tgotoProfile={this.GotoProfile}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{this.state.addVisitorFormValid && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{/*

    Sending Parcel To Server...

    */}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t//this.state.found === true ? \"\" :\r\n\t\t\t\t\t\t\t\t\t//

    This visitor has not been found, you will now be redirected to visitor check-in

    \r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// _.isUndefined(this.state.visitorFound) &&\r\n\t\t\t\t\t\t\t//
    You can book future visitors or check-in unexpected ones by clicking below
    \r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t{/*

    Visitor Management

    */}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.props.history.push('/concierge/visitor-express-checkin');\r\n\t\t\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    Visitors Expected

    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t{this.state.isPastVisitorEnable ? (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tmeetings: meetingSelector.getMeetings(state),\r\n\t\tresidents: residentSelectors.getResidents(state),\r\n\t\tmeetingsFilter: meetingSelector.getMeetingsFilter(state)\r\n\t};\r\n}\r\nexport default withRouter(connect(mapStateToProps)(CheckinVisitorScreen));\r\n","import React, { Component } from \"react\";\r\n// import { connect } from \"react-redux\";\r\n// import * as resourceActions from \"../../store/Resources/actions\";\r\n// import * as resourceSelector from \"../../store/Resources/reducer\";\r\nimport autoBind from \"react-autobind\";\r\nimport _ from 'lodash';\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\nclass ListItem extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n active: false,\r\n // maxLimit: false\r\n }\r\n\r\n autoBind(this);\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n {\r\n this.setState(prevState => {\r\n let newState = !prevState.active;\r\n let eventIDs = this.props.event_ids;\r\n\r\n if (eventIDs.length === 3 && !prevState.active) {\r\n return;\r\n }\r\n else {\r\n eventIDs = [...eventIDs, this.props.event_id];\r\n }\r\n if (prevState.active) {\r\n eventIDs = eventIDs.filter(e => e !== this.props.event_id);\r\n }\r\n\r\n\r\n\r\n this.props.handleClick(newState, this.props.value, this.props.event_id);\r\n this.props.onClick(eventIDs)\r\n return { active: newState }\r\n })\r\n }}\r\n\r\n className={!this.state.active && !this.props.active ? '' : 'selected'}\r\n >\r\n {this.props.value}\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nclass ServiceListMulti extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showList: false,\r\n value: this.props.selectedOption ? _.map(this.props.selectedOption, val => {\r\n return val.eventName\r\n }) : [],\r\n event_id: this.props.selectedOption ? _.map(this.props.selectedOption, val => {\r\n return val.eventId\r\n }) : [],\r\n // showSpinner: this.props.processing,\r\n showDownList: _.isUndefined(this.props.processing) ? true : undefined,\r\n iconClass: \"fa-angle-down\"\r\n\r\n }\r\n\r\n this.handleItemClick = this.handleItemClick.bind(this)\r\n }\r\n\r\n renderValue() {\r\n let { value } = this.state;\r\n if (!value.length) return \"Select...\"\r\n else return value.length + \" selected\";\r\n // return value.join(', ')\r\n }\r\n toggleList() {\r\n let { showList } = this.state;\r\n if (!showList) {\r\n this.setState({\r\n iconClass: \"fa-angle-up\"\r\n });\r\n }\r\n else {\r\n this.setState({\r\n iconClass: \"fa-angle-down\"\r\n });\r\n }\r\n this.setState(prevState => ({ showList: !prevState.showList }));\r\n }\r\n\r\n toggleSpiiner() {\r\n let { showList } = this.state;\r\n if (showList) {\r\n //var millisecondsToWait = 500;\r\n var CurruntContext = this;\r\n setTimeout(function () {\r\n // Whatever you want to do after the wait\r\n CurruntContext.setState(prevState => ({ showUparrow: prevState.showList }))\r\n CurruntContext.setState(prevState => ({ showSpinner: false }))\r\n }, 500);\r\n }\r\n }\r\n\r\n handleItemClick(active, val, evntid) {\r\n\r\n let { value, event_id } = this.state;\r\n if (active && value.length < 3) {\r\n value = [...value, val];\r\n if (!_.includes(event_id, (evntid))) {\r\n event_id = [...event_id, evntid];\r\n }\r\n }\r\n else {\r\n value = value.filter(e => e !== val);\r\n event_id = event_id.filter(e => e !== evntid);\r\n }\r\n this.setState({ value })\r\n this.setState({ event_id })\r\n\r\n\r\n }\r\n\r\n\r\n render() {\r\n const { handleSelectionChange, selectedOption } = this.props;\r\n\r\n const options = this.props.services.map((item, index) => {\r\n\r\n return (\r\n { label: item.name, value: item.eventid, key: index, _handleItemClick: this.handleItemClick, _event_ids: this.state.event_id });\r\n });\r\n\r\n\r\n return (\r\n\r\n this.node = node}\r\n className=\"select\">\r\n\r\n \r\n\r\n \r\n\r\n {options && options.length > 0 && options.map(function (item, index) {\r\n\r\n return \r\n })}\r\n\r\n\r\n \r\n\r\n\r\n \r\n )\r\n }\r\n}\r\n\r\nServiceListMulti.propTypes = {\r\n serviceId: PropTypes.string,\r\n date: PropTypes.string,\r\n services: PropTypes.array,\r\n handleSelectionChange: PropTypes.func\r\n};\r\n\r\n// function mapStateToProps(state, ownProps) {\r\n// return {\r\n// // services: resourceSelector.getServices(state)\r\n// };\r\n// }\r\nexport default ServiceListMulti;","import React, { Component } from \"react\";\r\n\r\nclass CustomDayWrapper extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { event: undefined };\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n return (\r\n
    this.props.handleClick()} />\r\n );\r\n }\r\n}\r\n\r\nexport default CustomDayWrapper;\r\n","import React, { Component } from \"react\";\r\n\r\nimport \"../../sass/components/ToggleButton/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\n\r\n/**\r\n * Switch toggle button \r\n */\r\nclass ToggleButton extends Component {\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n { }} checked={this.props.active} />\r\n
    \r\n
    \r\n Yes\r\n No\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\nToggleButton.propTypes = {\r\n /**Value holds current checked status of button, true / false */\r\n active: PropTypes.bool.isRequired,\r\n\r\n /**Function to return switch status */\r\n handleClick: PropTypes.func.isRequired\r\n};\r\n\r\nexport default ToggleButton;","\r\nimport React, { Component } from \"react\";\r\nimport _ from \"lodash\";\r\n\r\nimport \"../../fonts/font-awesome/css/font-awesome.css\";\r\nimport \"../../sass/components/DotNav/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\nclass DotNav extends Component {\r\n\r\n\r\n\r\n render() {\r\n\r\n const { items, currentItem } = this.props;\r\n\r\n return (\r\n
    \r\n
    \r\n
      \r\n {\r\n\r\n _.map(items, (item, index) => {\r\n let tag = item === currentItem ? \"fa fa-circle\" : \"fa fa-circle-o\";\r\n\r\n return (
    • \r\n \r\n
    • );\r\n })\r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\n\r\nDotNav.propTypes = {\r\n\r\n /** Collection of strings in an array */\r\n items: PropTypes.array,\r\n\r\n /** Indicates the active item in list */\r\n currentItem: PropTypes.string\r\n};\r\n\r\nexport default DotNav;","export const TENANT_LOADED_SUCCESS = \"TENANT_LOADED_SUCCESS\";\r\nexport const TENANTS_LOADED_SUCCESS = \"TENANTS_LOADED_SUCCESS\";\r\nexport const TENANT_SELECTED = \"TENANT_SELECTED\";\r\nexport const TENANTS_LOADED_FAIL = \"TENANTS_LOADED_FAIL\";\r\n","import * as config from \"./config\";\r\nimport authService from './loginService';\r\n\r\nclass TenantServices {\r\n async getTenants() {\r\n const url = `${config.TENANTS_ENDPOINT}`;\r\n const memberType = \"Residents\";\r\n const authToken = authService.getToken();\r\n var requestHeader = new Headers();\r\n requestHeader.append('Authorization', 'Bearer ' + authToken);\r\n\r\n const response = await fetch(url + \"?type=\" + memberType, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) { \r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `getTenants service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default new TenantServices();\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\nconst initialState = Immutable({\r\n tenant: undefined,\r\n tenants: [],\r\n selectedTenant: undefined\r\n});\r\n\r\nexport default function tenantReducer(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.TENANT_LOADED_SUCCESS:\r\n return state.merge({\r\n tenant: action.tenant\r\n });\r\n case types.TENANTS_LOADED_SUCCESS:\r\n return state.merge({\r\n tenants: action.tenants\r\n });\r\n case types.TENANT_SELECTED:\r\n return state.merge({\r\n selectedTenant: action.selectedTenant\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getTenant(state) {\r\n return state.tenants.tenant;\r\n}\r\n\r\nexport function getAllTenants(state) {\r\n return state.tenants.tenants;\r\n}\r\n\r\nexport function getSelectedTenant(state) {\r\n return state.tenants.selectedTenant;\r\n}\r\n","import * as types from \"./actionTypes\";\r\nimport TenantServices from \"../../services/TenantServices\";\r\nimport _ from \"lodash\";\r\n\r\nimport * as tenantSelectors from \"../Tenants/reducer\";\r\n\r\nexport function getAllTenants() {\r\n return async (dispatch, getState) => {\r\n try {\r\n const tenants = await TenantServices.getTenants();\r\n\r\n dispatch({ type: types.TENANTS_LOADED_SUCCESS, tenants: tenants });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function getSelectedTenant(memberId) {\r\n return async (dispatch, getState) => {\r\n const tenants = tenantSelectors.getAllTenants(getState());\r\n const selectedTenant = _.find(tenants, { id: memberId });\r\n dispatch({ type: types.TENANT_SELECTED, selectedTenant });\r\n };\r\n}\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Autosuggest from 'react-autosuggest';\r\nimport InputComponent from '../../components/Input/Input';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport * as tenantActions from '../../store/Tenants/actions';\r\nimport * as tenantSelector from '../../store/Tenants/reducer';\r\nimport _ from 'lodash';\r\nimport autoBind from 'react-autobind';\r\nimport * as $ from 'jquery';\r\n\r\n/**\r\n * Pairs up an 0 &&\r\n\t\t\t!_.isUndefined(nextProps.defaultTenantId) &&\r\n\t\t\tthis.selectedTenantFromDefault === false\r\n\t\t) {\r\n\t\t\tthis.selectedTenantFromDefault = true;\r\n\r\n\t\t\tconst startTenant = nextProps.tenants.find((tenant) => {\r\n\t\t\t\treturn tenant.id === nextProps.defaultTenantId;\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleTenantSelected(startTenant);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalue: startTenant.firstName + ' ' + startTenant.lastName,\r\n\t\t\t\tvalid: true\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.setState(this.defaultState);\r\n\t}\r\n\r\n\t// Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n\tgetSuggestionValue(suggestion) {\r\n\t\t// const { name } = this.state;\r\n\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t\tif (suggestion) this.setState({ disabled: '' });\r\n\r\n\t\treturn `${suggestion.firstName} ${suggestion.lastName}`;\r\n\t}\r\n\r\n\tgetSuggestions(val) {\r\n\t\tconst { tenants } = this.props;\r\n\t\tif (!tenants) return [];\r\n\r\n\t\t//safe guard residents data return null value in some records\r\n\t\tvar data_ = _.filter(tenants, (obj) => {\r\n\t\t\treturn obj.firstName !== null || obj.lastName !== null;\r\n\t\t});\r\n\t\tconst match = _.filter(data_, (o) => {\r\n\t\t\tlet nameSearch = _.startsWith(o.firstName.toLowerCase(), val.toLowerCase());\r\n\r\n\t\t\tif (nameSearch === false) {\r\n\t\t\t\tif (_.isUndefined(o) || o === null || _.isUndefined(o.companyName) || o.companyName === null)\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\tlet companySearch = _.startsWith(o.companyName.toLowerCase(), val.toLowerCase());\r\n\r\n\t\t\t\tif (companySearch === true) {\r\n\t\t\t\t\treturn companySearch;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn nameSearch;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tonSuggestionsFetchRequested = ({ value }) => {\r\n\t\tthis.setState({ suggestions: this.getSuggestions(value) });\r\n\t};\r\n\r\n\tonSuggestionsClearRequested = () => {};\r\n\r\n\tonChange = (event, { newValue }) => {\r\n\t\tif (newValue.length === 0) this.setState({ tenant: undefined });\r\n\t\tif (newValue.length > 2) {\r\n\t\t\tthis.handleTenantChange(newValue);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tvalue: newValue\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t// Delayed because parseley not ready if user selected a suggestion\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalid: $(this.refs.autosuggest.input).parsley().isValid()\r\n\t\t\t});\r\n\t\t}, 0);\r\n\r\n\t\tthis.checkMatch(newValue);\r\n\t};\r\n\r\n\thandleTenantSelected(ten, setValue = false) {\r\n\t\tconst stateChanges = {\r\n\t\t\tmemberId: ten.id,\r\n\t\t\tcompanyName: ten.companyName,\r\n\t\t\ttenant: ten.firstName + ' ' + ten.lastName,\r\n\t\t\tbookingBugMemberId: ten.bookingBugMemberId,\r\n\t\t\t...(setValue ? { value: ten.firstName + ' ' + ten.lastName, valid: true } : {})\r\n\t\t};\r\n\r\n\t\tthis.setState(stateChanges);\r\n\r\n\t\tthis.props.onSelected && this.props.onSelected(stateChanges);\r\n\t}\r\n\r\n\thandleTenantChange(value) {\r\n\t\t// const { memberId } = this.state;\r\n\t\tthis.setState({\r\n\t\t\tname: value\r\n\t\t});\r\n\t}\r\n\r\n\trenderSuggestion(suggestion) {\r\n\r\n\t\tlet x = suggestion.companyName ? suggestion.companyName : suggestion.address1\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{suggestion.firstName} {suggestion.lastName} {x}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tcheckMatch(currentValue) {\r\n\t\tconst matchedTenant = this.props.tenants.find((tenant) => {\r\n\t\t\tconst value = currentValue.toLowerCase();\r\n\t\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\t\treturn value !== '';\r\n\t\t\t});\r\n\r\n\t\t\tif (\r\n\t\t\t\tparts.length === 2 &&\r\n\t\t\t\ttenant.firstName.toLowerCase() === parts[0].trim() &&\r\n\t\t\t\ttenant.lastName.toLowerCase() === parts[1].trim()\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(matchedTenant) === false) {\r\n\t\t\tthis.handleTenantSelected(matchedTenant);\r\n\t\t} else {\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\tinputClick() {\r\n\t\tif (\r\n\t\t\tthis.state.valid === true &&\r\n\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\tthis.props.clearableIfValid === true\r\n\t\t) {\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { value, suggestions, valid } = this.state;\r\n\r\n\t\tconst disabled = _.isUndefined(this.props.disabled) || this.props.disabled === false ? false : true;\r\n\r\n\t\tconst inputProps = {\r\n\t\t\tplaceholder: 'Tenant',\r\n\t\t\tvalue,\r\n\t\t\tonChange: this.onChange,\r\n\t\t\tonClick: this.inputClick\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t {}}\r\n\t\t\t\trenderSuggestion={this.renderSuggestion}\r\n\t\t\t\tinputProps={inputProps}\r\n\t\t\t\ttheme={{\r\n\t\t\t\t\t// maybe make global for reuse at some point\r\n\t\t\t\t\tcontainer:\r\n\t\t\t\t\t\t'auto-suggest Select ' +\r\n\t\t\t\t\t\t(!_.isUndefined(this.props.clearableIfValid) && this.props.clearableIfValid === true\r\n\t\t\t\t\t\t\t? 'is-clearable'\r\n\t\t\t\t\t\t\t: ''),\r\n\t\t\t\t\tsuggestionsList: 'Select-menu-outer',\r\n\t\t\t\t\tsuggestion: 'Select-menu'\r\n\t\t\t\t}}\r\n\t\t\t\trenderInputComponent={(inputProps) => {\r\n\t\t\t\t\tconst iconProp =\r\n\t\t\t\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\t\t\t\tthis.props.clearableIfValid === true &&\r\n\t\t\t\t\t\tvalid === true\r\n\t\t\t\t\t\t\t? { icon: 'ion-close-round' }\r\n\t\t\t\t\t\t\t: ''; //{ icon: \"ion-chevron-down\" };\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\r\n\t\t\t\t\t\t\t\tthis.checkMatch(e.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t'data-parsley-matches-one-of': JSON.stringify({\r\n\t\t\t\t\t\t\t\t\tallSuggestions: this.props.tenants.map((tenant) => {\r\n\t\t\t\t\t\t\t\t\t\treturn { value: tenant.firstName + ' ' + tenant.lastName };\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t'data-parsley-pattern': \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/8059370/\r\n\t\t\t\t\t\t\t\t'data-parsley-minlength': 4,\r\n\t\t\t\t\t\t\t\t'data-parsley-required': true,\r\n\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter an existing tenant name'\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t{...iconProp}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\ttenants: tenantSelector.getAllTenants(state)\r\n\t};\r\n}\r\n\r\nTenantCompanyAutoSuggest.propTypes = {\r\n\t/* Optional initial tenant id to start with, (used when navigating back etc...) */\r\n\tdefaultTenantId: PropTypes.number,\r\n\t/* Callback function for when item is selected */\r\n\tonSelected: PropTypes.func,\r\n\t/* Optional disable the input field */\r\n\tdisabled: PropTypes.bool,\r\n\t/* Specifies if a X icon shows and the input field becomes clickable if the autosuggest is valid */\r\n\tclearableIfValid: PropTypes.bool\r\n};\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(TenantCompanyAutoSuggest);\r\n","export const SERVICES_FETCHED = \"SERVICES_FETCHED\";\r\nexport const RESOURCES_QUERY = \"RESOURCES_QUERY\";\r\nexport const SERVICES_SLOTS_FETCHED = \"SERVICES_SLOTS_FETCHED\";\r\nexport const SLOTS_FETCHED = \"SLOTS_FETCHED\";\r\nexport const SERVICE_DETAIL_FETCHED = \"SERVICE_DETAIL_FETCHED\";\r\nexport const SLOT_SELECTED = \"SLOT_SELECTED\";\r\nexport const SLOT_DESELECTED = \"SLOT_DESELECTED\";\r\nexport const ADD_TO_BASKET_QUEUE = \"ADD_TO_BASKET_QUEUE\";\r\nexport const REMOVE_FROM_BASKET_QUEUE = \"REMOVE_FROM_BASKET_QUEUE\";\r\nexport const SERVICE_ID_SELECTED = \"SERVICE_ID_SELECTED\";\r\nexport const EVENT_DATE_SELECTED = \"EVENT_DATE_SELECTED\";\r\nexport const SELECTED_SERVICE_SLOT = \"SELECTED_SERVICE_SLOT\";\r\nexport const CLEAR_BASKET_QUEUE = \"CLEAR_BASKET_QUEUE\";\r\nexport const RESOURCE_BOOKINGS_FETCHED = \"RESOURCE_BOOKINGS_FETCHED\";\r\nexport const ADD_TO_BOOKINGS_SELECTION_QUEUE =\r\n \"ADD_TO_BOOKINGS_SELECTION_QUEUE\";\r\nexport const CANCEL_BOOKINGS_REASONS = \"CANCEL_BOOKINGS_REASONS\";\r\nexport const BOOKINGS_CANCELED_SUCCESS = \"BOOKINGS_CANCELED_SUCCESS\";\r\nexport const BLOCK_SLOT_SELECTED = \"BLOCK_SLOT_SELECTED\";\r\nexport const BLOCK_SLOT_DESELECTED = \"BLOCK_SLOT_DESELECTED\";\r\nexport const RESOURCE_TIME_AVAILABLE_FETCHED =\r\n \"RESOURCE_TIME_AVAILABLE_FETCHED\";\r\nexport const UPDATE_BOOKING_SUCCESS = \"UPDATE_BOOKING_SUCCESS\";\r\nexport const BOOKING_ERRORS_LOAD_SUCCESS = \"BOOKING_ERRORS_LOAD_SUCCESS\";\r\nexport const BOOKING_DETAIL_LOAD_SUCCESS = \"BOOKING_DETAIL_LOAD_SUCCESS\";\r\nexport const BOOKING_CANCELLED_NOTIFY_SUCCESS =\r\n \"BOOKING_CANCELLED_NOTIFY_SUCCESS\";\r\nexport const BOOKING_UPDATED_NOTIFY_SUCCESS = \"BOOKING_UPDATED_NOTIFY_SUCCESS\";\r\nexport const BOOKING_CREATED_NOTIFY_SUCCESS = \"BOOKING_CREATED_NOTIFY_SUCCESS\";\r\nexport const BOOKING_CREATED_NOTIFY_FAIL = \"BOOKING_CREATED_NOTIFY_FAIL\";\r\nexport const EVENTS_SLOTS_FETCHED = \"EVENTS_SLOTS_FETCHED\";\r\nexport const EVENTS_RESOURCE_SELECTED = \"EVENTS_RESOURCE_SELECTED\";\r\nexport const BOOKED_EVENT_SLOT_IS_SELECTED = \"BOOKED_EVENT_SLOT_IS_SELECTED\";\r\nexport const BOOKING_QUESTIONS_LOAD_SUCCESS = \"BOOKING_QUESTIONS_LOAD_SUCCESS\";\r\nexport const BOOKING_QUESTIONS_LOAD_FAIL = \"BOOKING_QUESTIONS_LOAD_FAIL\";\r\nexport const RESOURCE_BLOCKED_SUCCESS = \"RESOURCE_BLOCKED_SUCCESS\";\r\nexport const RESOURCE_BLOCKED_FAIL = \"RESOURCE_BLOCKED_FAIL\";\r\nexport const RESOURCE_EVENT_SET = \"RESOURCE_EVENT_SET\";\r\nexport const RESOURCE_BOOKED_SUCCESS = \"RESOURCE_BOOKED_SUCCESS\";\r\nexport const RESOURCE_BOOKED_FAIL = \"RESOURCE_BOOKED_FAIL\";\r\nexport const RESOURCE_EVENTS_CLEARED = \"RESOURCE_EVENTS_CLEARED\";\r\nexport const SERVICE_UNIT_CHANGED = \"SERVICE_UNIT_CHANGED\";\r\nexport const RESOURCE_EVENT_SELECTED = \"RESOURCE_EVENT_SELECTED\";\r\nexport const SELECTED_TENANT_SET_SUCCESS = \"SELECTED_TENANT_SET_SUCCESS\";\r\nexport const ACTION_REDIRCECT_SUCCESS = \"ACTION_REDIRCECT_SUCCESS\";\r\nexport const PAYMENT_ACTION_SUCCESS = \"PAYMENT_ACTION_SUCCESS\";\r\nexport const PAYMENT_ACTION_FAIL = \"PAYMENT_ACTION_FAIL\";\r\nexport const SET_BBOOKING_SUCCESS = \"SET_BBOOKING_SUCCESS\";\r\nexport const CALENDAR_SETTINGS_SET = \"CALENDAR_SETTINGS_SET\";\r\nexport const PROCESSING_RESOURCE_REQUEST = \"PROCESSING_RESOURCE_REQUEST\";\r\nexport const BASKET_QUEUE_UPDATED_SUCCESSFULLY = \"BASKET_QUEUE_UPDATED_SUCCESSFULLY\";","import _ from \"lodash\";\r\nimport * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\nimport moment from \"moment\";\r\n\r\n\r\nconst initialState = Immutable({\r\n resources: undefined,\r\n services: [],\r\n query: {},\r\n servicesSlots: [],\r\n eventId: undefined,\r\n selectedServiceSlot: [],\r\n service: {},\r\n basketQueue: [],\r\n selectedSlots: [],\r\n serviceId: \"\",\r\n eventDate: undefined,\r\n selectedSlot: undefined,\r\n bookings: [],\r\n bookingsSelectionQueue: [],\r\n cancelReasons: [],\r\n bookingsCancelled: [],\r\n blockSlotSelected: [],\r\n timeAvailable: [],\r\n bookingUpdated: {},\r\n bookingErrors: [],\r\n selectedBookingDetail: {},\r\n notify: {},\r\n selectedEventsSlots: [],\r\n selectedEventResources: [],\r\n bookedEventSelected: undefined,\r\n bookingQuestions: [],\r\n resourceBlocked: undefined,\r\n bookingCreated: {},\r\n serviceUnit: undefined,\r\n resourceEvents: [],\r\n selectedTenant: undefined,\r\n actionRedirect: undefined,\r\n paymentAction: undefined,\r\n booking: undefined,\r\n calendarSettings: undefined,\r\n processingResourceRequest: undefined,\r\n itemQueue: []\r\n});\r\n\r\nexport default function reducer(state = initialState, action = {}) {\r\n\r\n switch (action.type) {\r\n case types.SERVICES_FETCHED:\r\n return state.merge({\r\n services: action.services\r\n });\r\n case types.RESOURCES_QUERY:\r\n return state.merge({\r\n query: action.query\r\n });\r\n case types.SERVICES_SLOTS_FETCHED:\r\n return state.merge({\r\n servicesSlots: action.servicesSlots\r\n });\r\n case types.SLOTS_FETCHED:\r\n return state.merge({\r\n eventId: action.slotsData.eventId,\r\n selectedServiceSlot: action.slotsData.slots\r\n });\r\n case types.RESOURCE_EVENT_SET:\r\n return state.merge({\r\n eventId: action.eventId\r\n });\r\n case types.SERVICE_DETAIL_FETCHED:\r\n return state.merge({\r\n service: action.service\r\n });\r\n case types.ADD_TO_BASKET_QUEUE:\r\n //handling multiple selection\r\n // let current_basket = state.basketQueue;\r\n // let newBasket = _.compact(\r\n // _.map(current_basket, o => {\r\n // if (\r\n // o.start_min >= action.slot.start_min &&\r\n // o.end_min <= action.slot.end_min\r\n // )\r\n // return null;\r\n // else return o;\r\n // })\r\n // );\r\n\r\n // return state.merge({\r\n // basketQueue: newBasket.concat(action.slot)\r\n // });\r\n return state.merge({\r\n basketQueue: [action.slot]\r\n });\r\n case types.REMOVE_FROM_BASKET_QUEUE:\r\n return state.merge({\r\n basketQueue: state.basketQueue.filter(slot => {\r\n return slot.id !== action.slot.id;\r\n })\r\n });\r\n case types.SLOT_SELECTED:\r\n return state.merge({\r\n selectedSlots: state.selectedSlots.concat(action.slot),\r\n selectedServiceSlot: state.selectedServiceSlot.map((s, i) => {\r\n if (s.id === action.slot.id) {\r\n return {\r\n isAvailable: false,\r\n inBasket: true,\r\n id: s.id,\r\n start: s.start,\r\n end: s.end,\r\n price: s.price,\r\n type: action.slot.type,\r\n start_min: action.slot.start_min,\r\n end_min: action.slot.end_min,\r\n duration: !_.isUndefined(action.stlot.duration) ? action.stlot.duration : 0\r\n };\r\n } else return s;\r\n })\r\n });\r\n\r\n case types.SLOT_DESELECTED:\r\n return state.merge({\r\n selectedServiceSlot: state.selectedServiceSlot.map((s, i) => {\r\n if (s.id === action.slot.id) {\r\n return {\r\n isAvailable: true,\r\n inBasket: false,\r\n id: s.id,\r\n start: s.start,\r\n end: s.end,\r\n price: s.price,\r\n start_min: s.start_min,\r\n end_min: s.end_min\r\n };\r\n } else return s;\r\n }),\r\n selectedSlots: state.selectedSlots.filter(s => s.id !== action.slot.id)\r\n });\r\n case types.SERVICE_ID_SELECTED:\r\n return state.merge({\r\n serviceId: action.serviceId\r\n });\r\n case types.EVENT_DATE_SELECTED:\r\n return state.merge({\r\n eventDate: action.eventDate\r\n });\r\n\r\n case types.SELECTED_SERVICE_SLOT:\r\n return state.merge({\r\n selectedServiceSlot: action.selectedServiceSlot\r\n });\r\n case types.CLEAR_BASKET_QUEUE:\r\n return state.merge({\r\n basketQueue: action.clear,\r\n selectedSlots: action.clear,\r\n selectedServiceSlot: action.clear\r\n });\r\n case types.RESOURCE_BOOKINGS_FETCHED:\r\n return state.merge({\r\n bookings: action.bookings\r\n });\r\n case types.ADD_TO_BOOKINGS_SELECTION_QUEUE:\r\n return state.merge({\r\n bookingsSelectionQueue: action.booking\r\n });\r\n case types.CANCEL_BOOKINGS_REASONS:\r\n return state.merge({\r\n cancelReasons: action.cancelReasons\r\n });\r\n case types.BOOKINGS_CANCELED_SUCCESS:\r\n return state.merge({\r\n bookingsCancelled: action.bookingsCancelled\r\n });\r\n case types.BLOCK_SLOT_SELECTED:\r\n let current_block = state.blockSlotSelected;\r\n\r\n let new_block = _.compact(\r\n _.map(current_block, o => {\r\n if (\r\n o.start_min >= action.slot.start_min &&\r\n o.end_min <= action.slot.end_min\r\n )\r\n return null;\r\n else return o;\r\n })\r\n );\r\n\r\n return state.merge({\r\n blockSlotSelected: new_block.concat(action.slot),\r\n\r\n selectedEventsSlot: _.map(state.selectedEventsSlot, (s, i) => {\r\n let blk_start_min = action.slot.start_min;\r\n let blk_end_min = action.slot.end_min;\r\n\r\n if (s.start_min >= blk_start_min && s.end_min <= blk_end_min) {\r\n return {\r\n isAvailable: false,\r\n inBasket: true,\r\n id: s.id,\r\n start: s.start,\r\n end: s.end,\r\n price: s.price,\r\n start_min: s.start_min,\r\n type: action.slot.type,\r\n end_min: s.end_min\r\n };\r\n } else return s;\r\n }),\r\n selectedSlots: _.compact(\r\n _.map(state.selectedSlots, s => {\r\n if (\r\n s.start_min >= action.slot.start_min &&\r\n s.end_min <= action.slot.end_min\r\n )\r\n return null;\r\n else return s;\r\n })\r\n )\r\n });\r\n case types.BLOCK_SLOT_DESELECTED:\r\n let slot_deselected = action.slot;\r\n let curr_basket = state.basketQueue;\r\n let basket = _.compact(\r\n _.map(curr_basket, o => {\r\n if (\r\n o.start_min >= slot_deselected.start_min &&\r\n o.end_min <= slot_deselected.end_min\r\n )\r\n return null;\r\n else return o;\r\n })\r\n );\r\n return state.merge({\r\n selectedEventsSlots: _.map(state.selectedEventsSlots, o => {\r\n if (\r\n o.start_min >= slot_deselected.start_min &&\r\n o.end_min <= slot_deselected.end_min\r\n ) {\r\n return {\r\n isAvailable: true,\r\n inBasket: false,\r\n id: o.id,\r\n start: o.start,\r\n end: o.end,\r\n price: o.price,\r\n start_min: o.start_min,\r\n end_min: o.end_min\r\n };\r\n } else return o;\r\n }),\r\n blockSlotSelected: _.filter(\r\n state.blockSlotSelected,\r\n blockItem => blockItem.id !== slot_deselected.id\r\n ),\r\n basketQueue: basket\r\n });\r\n case types.RESOURCE_TIME_AVAILABLE_FETCHED:\r\n return state.merge({\r\n timeAvailable: action.timesAvail\r\n });\r\n case types.UPDATE_BOOKING_SUCCESS:\r\n return state.merge({\r\n bookingUpdated: action.bookingStatus\r\n });\r\n\r\n case types.BOOKING_ERRORS_LOAD_SUCCESS:\r\n return state.merge({\r\n bookingErrors: action.errors\r\n });\r\n case types.BOOKING_DETAIL_LOAD_SUCCESS:\r\n return state.merge({\r\n selectedBookingDetail: action.detail\r\n });\r\n case types.BOOKING_CANCELLED_NOTIFY_SUCCESS:\r\n return state.merge({\r\n notify: action.status\r\n });\r\n case types.EVENTS_SLOTS_FETCHED:\r\n return state.merge({\r\n selectedEventResources: action.slotsData.events,\r\n selectedEventsSlots: action.slotsData.slots\r\n });\r\n case types.BOOKED_EVENT_SLOT_IS_SELECTED:\r\n let selected_event = action.event;\r\n let temp_slot = _.findLast(state.selectedEventsSlots, o => {\r\n let date = moment(o.start).format(\"YYYY-MM-DD\");\r\n let sdate = moment(selected_event.start).format(\"YYYY-MM-DD\");\r\n return date === sdate && o.booked === true\r\n });\r\n let new_slots = _.map(state.selectedEventsSlots, data => {\r\n if (data.id === selected_event.id) {\r\n return temp_slot;\r\n }\r\n if (data.id === temp_slot.id) {\r\n return selected_event;\r\n }\r\n return data;\r\n });\r\n\r\n return state.merge({\r\n selectedEventsSlots: new_slots\r\n });\r\n\r\n case types.BOOKING_QUESTIONS_LOAD_SUCCESS:\r\n return state.merge({\r\n bookingQuestions: action.questions\r\n });\r\n case types.RESOURCE_BLOCKED_SUCCESS:\r\n return state.merge({\r\n resourceBlocked: action.resource\r\n });\r\n case types.RESOURCE_BOOKED_SUCCESS:\r\n return state.merge({\r\n bookingCreated: action.booking\r\n });\r\n case types.RESOURCE_EVENTS_CLEARED:\r\n return state.merge({\r\n selectedEventResources: action.slotsData.events,\r\n selectedEventsSlots: action.slotsData.slots,\r\n bookings: action.slotsData.bookings\r\n });\r\n case types.SERVICE_UNIT_CHANGED:\r\n return state.merge({\r\n serviceUnit: action.unit\r\n });\r\n case types.RESOURCE_EVENT_SELECTED:\r\n return state.merge({\r\n resourceEvents: action.events\r\n });\r\n case types.SELECTED_TENANT_SET_SUCCESS:\r\n return state.merge({\r\n selectedTenant: action.tenant\r\n });\r\n case types.ACTION_REDIRCECT_SUCCESS:\r\n return state.merge({\r\n actionRedirect: action.status\r\n });\r\n case types.PAYMENT_ACTION_SUCCESS:\r\n return state.merge({\r\n paymentAction: action.paymentStatus\r\n });\r\n case types.SET_BBOOKING_SUCCESS:\r\n return state.merge({\r\n booking: action.booking\r\n });\r\n case types.CALENDAR_SETTINGS_SET:\r\n return state.merge({\r\n calendarSettings: action.settings\r\n });\r\n case types.PROCESSING_RESOURCE_REQUEST:\r\n return state.merge({\r\n processingResourceRequest: action.status\r\n });\r\n case types.BASKET_QUEUE_UPDATED_SUCCESSFULLY:\r\n // let updateQueue = state.basketQueue;\r\n // console.log(\"before que update\", updateQueue);\r\n // let blockSlot = state.blockSlotSelected\r\n // if (action.queueData) {\r\n // updateQueue = _.map(state.basketQueue, o => {\r\n\r\n // if (o.id === action.queueData.id) {\r\n // return action.queueData;\r\n // }\r\n\r\n // return o;\r\n // });\r\n\r\n // blockSlot = _.map(state.blockSlotSelected, bl => {\r\n\r\n // if (bl.id === action.queueData.id) {\r\n // return action.queueData;\r\n // }\r\n\r\n // return bl;\r\n // });\r\n\r\n // console.log(\"after que update\", updateQueue);\r\n // }\r\n return state.merge({\r\n itemQueue: [action.data],\r\n //blockSlotSelected: blockSlot\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getServices(state) {\r\n return state.resources.services;\r\n}\r\n\r\nexport function getResourceQuery(state) {\r\n return state.resources.query;\r\n}\r\nexport function getServicesSlots(state) {\r\n return state.resources.servicesSlots;\r\n}\r\n\r\nexport function getSelectedServiceSlot(state) {\r\n return state.resources.selectedServiceSlot;\r\n}\r\nexport function getService(state) {\r\n return state.resources.service;\r\n}\r\n\r\nexport function getSelectedSlots(state) {\r\n return state.resources.selectedSlots;\r\n}\r\n\r\nexport function getBasketQueue(state) {\r\n return state.resources.basketQueue;\r\n}\r\n\r\nexport function getEventId(state) {\r\n return state.resources.eventId;\r\n}\r\n\r\nexport function getServiceId(state) {\r\n return state.resources.serviceId;\r\n}\r\n\r\nexport function getEventDate(state) {\r\n return state.resources.eventDate;\r\n}\r\n\r\nexport function getBookings(state) {\r\n return state.resources.bookings;\r\n}\r\n\r\nexport function getBookingsSelectionQueue(state) {\r\n return state.resources.bookingsSelectionQueue;\r\n}\r\n\r\nexport function getBookingsCancelReasons(state) {\r\n return state.resources.cancelReasons;\r\n}\r\n\r\nexport function getBookingsCancelled(state) {\r\n return state.resources.bookingsCancelled;\r\n}\r\n\r\nexport function getBlockSlotSelected(state) {\r\n return state.resources.blockSlotSelected;\r\n}\r\n\r\nexport function getBookingErrors(state) {\r\n return state.resources.bookingErrors;\r\n}\r\n\r\nexport function getTimeAvailable(state) {\r\n return state.resources.timeAvailable;\r\n}\r\n\r\nexport function getSelectedBookingDetail(state) {\r\n return state.resources.selectedBookingDetail;\r\n}\r\n\r\nexport function getBookingUpdated(state) {\r\n return state.resources.bookingUpdated;\r\n}\r\nexport function vision_type(state) {\r\n return state.resources.vision_type;\r\n}\r\nexport function current_view(state) {\r\n return state.resources.current_view;\r\n}\r\n\r\n\r\nexport function getSelectedEventsSlots(state) {\r\n return state.resources.selectedEventsSlots;\r\n}\r\n\r\nexport function getSelectedEventResources(state) {\r\n return state.resources.selectedEventResources;\r\n}\r\n\r\nexport function getBookingQuestions(state) {\r\n return state.resources.bookingQuestions;\r\n}\r\n\r\nexport function getResourceBlocked(state) {\r\n return state.resources.resourceBlocked;\r\n}\r\n\r\nexport function getBookingCreated(state) {\r\n return state.resources.bookingCreated;\r\n}\r\n\r\nexport function getServiceUnit(state) {\r\n return state.resources.serviceUnit;\r\n}\r\n\r\nexport function getResourceEvents(state) {\r\n return state.resources.resourceEvents;\r\n}\r\n\r\nexport function getSelectedTenant(state) {\r\n return state.resources.selectedTenant;\r\n}\r\n\r\nexport function getActionRedirect(state) {\r\n return state.resources.actionRedirect;\r\n}\r\n\r\nexport function getPaymentAction(state) {\r\n return state.resources.paymentAction;\r\n}\r\n\r\nexport function getSetBooking(state) {\r\n return state.resources.booking;\r\n}\r\n\r\n\r\nexport function getCalendarSettings(state) {\r\n return state.resources.calendarSettings;\r\n}\r\n\r\nexport function getResourceProcessingStatus(state) {\r\n return state.resources.processingResourceRequest;\r\n}\r\nexport function getItemQueue(state){\r\n return state.resources.itemQueue;\r\n}","import _ from \"lodash\";\r\nimport * as config from \"../config\";\r\nimport authService from \"../BookingBugServices/LoginService\";\r\n\r\nclass ResourceService {\r\n\r\n async getServices() {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${config.BOOKING_BUG_API}/${companyId}/services`;\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: reqHeaders\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourcesService getServices failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.services\");\r\n\r\n }\r\n\r\n async getResourceServices(serviceId, startDate, endDate) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${\r\n config.BOOKING_BUG_API\r\n }/${companyId}/time_data?service_id=${serviceId}&date=${startDate}&end_date=${endDate}`;\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n // reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: reqHeaders\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourcesService getResourceSlots failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.events\");\r\n }\r\n\r\n async getBookings(start_date, end_date) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${config.BOOKINGBUG_ADMIN_ENDPOINT}/${companyId}/bookings`;\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n // reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(\r\n url + \"?start_date=\" + start_date + \"&end_date=\" + end_date,\r\n {\r\n method: \"GET\",\r\n headers: reqHeaders\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourcesService getBookings failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.bookings\");\r\n }\r\n\r\n async getBookingCancelReasons() {\r\n //implementation would have to retrieve reasons from concierge api configuration\r\n //ie umbraco back office\r\n const result = [\r\n { value: 1, label: \"Not needed\" },\r\n { value: 2, label: \"Wrong Booking\" },\r\n { value: 3, label: \"Meeting canceled\" }\r\n ];\r\n\r\n return await result;\r\n }\r\n\r\n async cancelBooking(id, reason) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${\r\n config.BOOKINGBUG_ADMIN_ENDPOINT\r\n }/${companyId}/bookings/${id}/cancel`;\r\n\r\n let data = {\r\n notify: false,\r\n cancel_reason: reason\r\n };\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: reqHeaders,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `ResourcesService cancelBookings failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async updateBooking(id, date, time, duration) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${\r\n config.BOOKINGBUG_ADMIN_ENDPOINT\r\n }/${companyId}/bookings/${id}`;\r\n\r\n let data = {\r\n date: date,\r\n time: time,\r\n duration: duration,\r\n notify: false\r\n };\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"PUT\",\r\n headers: reqHeaders,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `ResourcesService updateBookings failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async updateBookingResource(id, data) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${\r\n config.BOOKINGBUG_ADMIN_ENDPOINT\r\n }/${companyId}/bookings/${id}`;\r\n\r\n // let data = {\r\n // date: date,\r\n // time: time,\r\n // duration: duration,\r\n // notify: false\r\n // };\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"PUT\",\r\n headers: reqHeaders,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `ResourcesService updateBookingResource failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n async timeAvailability(serviceId, date) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${\r\n config.BOOKING_BUG_API\r\n }/${companyId}/time_data?service_id=${serviceId}&date=${date}`;\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: reqHeaders\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `ResourcesService timeAvailability failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.events\");\r\n }\r\n\r\n async getBookingErrors() {\r\n const response = [\r\n { value: 1, label: \"Time exceeds allowed booking\" },\r\n { value: 2, label: \"Cancellation time limit has passed\" },\r\n { value: 3, label: \"Time selected not available\" }\r\n ];\r\n\r\n return await response;\r\n }\r\n\r\n async getBookingDetails(memberId, bookingId) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${\r\n config.BOOKING_BUG_API\r\n }/${companyId}/members/${memberId}/bookings/${bookingId}`;\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: reqHeaders\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `ResourcesService timeAvailability failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return data;\r\n }\r\n\r\n async getBookingQuestions(groupId) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n\r\n const url = `${\r\n config.BOOKING_BUG_API\r\n }/${companyId}/questions?detail_group_id=${groupId}`;\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n\r\n const response = await fetch(\r\n url,\r\n {\r\n method: \"GET\",\r\n headers: reqHeaders\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourcesService getBookingQuestions failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"questions\");\r\n }\r\n\r\n async blockResource(resourceId, start_date, end_date) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n\r\n const url = `${\r\n config.BOOKINGBUG_ADMIN_ENDPOINT\r\n }/${companyId}/resources/${resourceId}/block?start_time=${start_date}&end_time=${end_date}`;\r\n\r\n // let data = {\r\n // start_time: start_date,\r\n // end_time: end_date\r\n // };\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n\r\n\r\n const response = await fetch(url, {\r\n method: \"PUT\",\r\n headers: reqHeaders,\r\n //body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `ResourcesService blockResource failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n /**Engage bookingbug api start */\r\n\r\n}\r\n\r\nexport default new ResourceService();\r\n","// import _ from \"lodash\";\r\n// import * as config from \"../config\";\r\n\r\nclass ServicesService {\r\n // async getServices(serviceId) {\r\n // const companyId = `${config.COMPANY_ID}`;\r\n\r\n // const url = `${\r\n // config.BOOKING_BUG_API\r\n // }/${companyId}/services?id=${serviceId}`;\r\n\r\n // var reqHeaders = new Headers();\r\n // reqHeaders.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n // reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n // reqHeaders.append(\"App-Id\", config.APP_ID);\r\n\r\n // const response = await fetch(url, {\r\n // method: \"GET\",\r\n // headers: reqHeaders\r\n // });\r\n\r\n // if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `ServicesService getServices failed, HTTP status ${response.status}`\r\n // );\r\n // }\r\n\r\n // const data = await response.json();\r\n // return _.get(data, \"_embedded.services\");\r\n // }\r\n\r\n _validateUrl(url = \"\") {\r\n return url.startsWith(\"http\") ? url : undefined;\r\n }\r\n}\r\n\r\nexport default new ServicesService();\r\n","import * as config from \"../config\";\r\nimport authService from \"../loginService\";\r\nimport bbauthService from \"../BookingBugServices/LoginService\";\r\nimport _ from \"lodash\";\r\n\r\nclass EngageBookingServices {\r\n\r\n async getServices() {\r\n const url = `${config.ENGAGE_BOOKINGBUG_SERVICES_ENDPOINT}`;\r\n const authToken = bbauthService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `getServices service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return _.get(result, \"service\");\r\n }\r\n\r\n async getResources(page, perpage) {\r\n const url = `${config.ENGAGE_BOOKINGBUG_RESOURCES_ENDPOINT}${\"?page=\" + page}${\"&perpage=\" + perpage}`;\r\n const authToken = bbauthService.getToken();\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `getResources service failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return _.get(result, \"resources\");\r\n }\r\n\r\n async getBookings(start_date, end_date) {\r\n\r\n const authToken = bbauthService.getToken();\r\n\r\n const url = config.ENGAGE_BOOKINGBUG_BOOKINGS_ENDPOINT;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n\r\n\r\n const response = await fetch(\r\n url + \"?startDate=\" + start_date + \"&endDate=\" + end_date,\r\n {\r\n method: \"GET\",\r\n headers: requestHeader\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourcesService getBookings failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.bookings\");\r\n }\r\n\r\n async getServiceDayData(service_id, start_date, end_date) {\r\n\r\n const url = config.ENGAGE_BOOKINGBUG_SERVICE_DAYDATA_ENDPOINT;\r\n const authToken = bbauthService.getToken();\r\n\r\n\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n\r\n\r\n const response = await fetch(\r\n url + \"?serviceId=\" + service_id + \"&startDate=\" + start_date + \"&endDate=\" + end_date,\r\n {\r\n method: \"GET\",\r\n headers: requestHeader\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `getServiceDayData daydata failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"days\");\r\n }\r\n\r\n async getResourceDayData(events, service_id, start_date, end_date, page, perpage) {\r\n\r\n const url = config.ENGAGE_BOOKINGBUG_RESOURCE_DAYDATA_ENDPOINT;\r\n const authToken = bbauthService.getToken();\r\n\r\n\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(\r\n url + \"?serviceId=\" + service_id + \"&startDate=\" + start_date + \"&endDate=\" + end_date + \"&page=\" + page + \"&perpage=\" + perpage,\r\n {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(events)\r\n\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `getResourceDayData daydata failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"days\");\r\n }\r\n\r\n\r\n async getBookingQuestions(group_id) {\r\n\r\n const url = config.ENGAGE_BOOKINGBUG_BOOKING_QUESTIONS;\r\n const authToken = bbauthService.getToken();\r\n\r\n\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n\r\n\r\n const response = await fetch(\r\n url + \"?detailGroupId=\" + group_id,\r\n {\r\n method: \"GET\",\r\n headers: requestHeader\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `getBookingQuestions questions failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"questions\");\r\n\r\n\r\n }\r\n\r\n async getBlockedBookings(resourcesIds, startDate, endDate, page, perpage) {\r\n const authToken = bbauthService.getToken();\r\n\r\n const url = config.ENGAGE_BOOKINGBUG_BLOCKED_BOOKINGS_ENDPOINT + `${\"?startDate=\"}${startDate}${\"&endDate=\"}${endDate}${\"&page=\"}${page}${\"&perPage=\"}${perpage}`;\r\n\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(\r\n url,\r\n {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(resourcesIds)\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `EngageBookingService getBlockedBookings failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.bookings\");\r\n }\r\n async getBookedBookings(resourcesIds, startDate, endDate, page, perpage) {\r\n const authToken = bbauthService.getToken();\r\n\r\n const url = config.ENGAGE_BOOKINGBUG_BOOKED_BOOKINGS_ENDPOINT + `${\"?startDate=\"}${startDate}${\"&endDate=\"}${endDate}${\"&page=\"}${page}${\"&perPage=\"}${perpage}`;\r\n\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(\r\n url,\r\n {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(resourcesIds)\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `EngageBookingService getBookedBookings failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.bookings\");\r\n }\r\n async getResourceBookings(resourcesIds, startDate, endDate, page, perpage) {\r\n\r\n const authToken = bbauthService.getToken();\r\n\r\n const url = config.ENGAGE_BOOKINGBUG_RESOURCE_BOOKINGS_ENDPOINT + `${\"?startDate=\"}${startDate}${\"&endDate=\"}${endDate}${\"&page=\"}${page}${\"&perPage=\"}${perpage}`;\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n const response = await fetch(\r\n url,\r\n {\r\n method: \"POST\",\r\n headers: requestHeader,\r\n body: JSON.stringify(resourcesIds)\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `EngageBookingService getBookedBookings failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return data;\r\n }\r\n\r\n\r\n async getResourceTimeData(serviceId, startDate, endDate) {\r\n const url = config.ENGAGE_BOOKINGBUG_RESOURCE_TIMEDATA_ENDPOINT;\r\n const authToken = bbauthService.getToken();\r\n\r\n\r\n\r\n var requestHeader = new Headers();\r\n requestHeader.append(\"Authorization\", authToken);\r\n requestHeader.append(\"Content-Type\", \"application/json\");\r\n\r\n\r\n const response = await fetch(url + `${\"?serviceId=\"}${serviceId}${\"&date=\"}${startDate}${\"&endDate=\"}${endDate}`, {\r\n method: \"GET\",\r\n headers: requestHeader\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `EngageBookingService getResourceServices failed, HTTP status ${\r\n response.status\r\n }`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.events\");\r\n }\r\n\r\n async updateBookingResource(id, data) {\r\n const url = `${config.ENGAGE_BOOKINGBUG_UPDATE_BOOKING_RESOURCE_ENDPOINT}${\"?id=\"}${id}`;\r\n const authToken = bbauthService.getToken();\r\n\r\n var reqHeaders = new Headers();\r\n\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"PUT\",\r\n headers: reqHeaders,\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourceService updateBookingResource failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async cancelBooking(id, reason) {\r\n const url = `${config.ENGAGE_BOOKINGBUG_CANCEL_BOOKING_ENDPOINT}${\"?id=\"}${id}${\"&reason=\"}${reason}`;\r\n const authToken = bbauthService.getToken();\r\n\r\n var reqHeaders = new Headers();\r\n\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: reqHeaders,\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourceService cancelbooking failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n async blockResource(resourceId, start_date, end_date) {\r\n\r\n const url = `${config.ENGAGE_BOOKINGBUG_BLOCK_RESOURCE_ENDPOINT}${\"?resourceid=\"}${resourceId}${\"&startdate=\"}${start_date}${\"&enddate=\"}${end_date}`\r\n const authToken = bbauthService.getToken();\r\n\r\n var reqHeaders = new Headers();\r\n\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"PUT\",\r\n headers: reqHeaders,\r\n });\r\n\r\n if (!response.ok) {\r\n //config.errorPageRedirect(response);\r\n throw new Error(\r\n `EngageBookingService blockResource failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const result = await response.json();\r\n\r\n return result;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport default new EngageBookingServices();","import _ from \"lodash\";\r\nimport * as config from \"../config\";\r\nimport authService from \"../EngageBookingBugServices/LoginService\";\r\n\r\n\r\nclass CheckoutService {\r\n async addToBasket(serviceId, date, eventId, time, memberId) {\r\n const companyId = `${config.COMPANY_ID}`;\r\n const authToken = authService.getToken();\r\n const url = `${config.BOOKING_BUG_API}/${\r\n companyId\r\n }/basket/add_item?service_id=${serviceId}&date=${date}&event_id=${\r\n eventId\r\n }&time=${time}&member_id=${memberId}`;\r\n\r\n var reqHeaders = new Headers();\r\n reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n reqHeaders.append(\"App-Id\", config.APP_ID);\r\n reqHeaders.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n reqHeaders.append(\"Auth-Token\", authToken);\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: reqHeaders\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `ResourcesService addToBasket failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.items\");\r\n }\r\n\r\n // async addToBasketGroup(eventId, memberId, serviceId, bookingData) {\r\n // const companyId = `${config.COMPANY_ID}`;\r\n // const authToken = authService.getToken();\r\n // const url = `${config.BOOKING_BUG_API}/${companyId}/basket/add_item`;\r\n\r\n // //?service_id=${serviceId}&date=${date}&event_id=${eventId}&time=${time}&member_id=${memberId}\r\n // var reqHeaders = new Headers();\r\n // reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n // reqHeaders.append(\"App-Id\", config.APP_ID);\r\n // reqHeaders.append(\"Content-Type\", \"application/json\");\r\n // reqHeaders.append(\"Auth-Token\", authToken);\r\n // const response = await fetch(url, {\r\n // method: \"POST\",\r\n // headers: reqHeaders,\r\n // body: JSON.stringify(bookingData)\r\n // });\r\n\r\n // if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `ResourcesService addToBasket failed, HTTP status ${response.status}`\r\n // );\r\n // }\r\n\r\n // const data = await response.json();\r\n\r\n // return _.get(data, \"_embedded.items\");\r\n // }\r\n // async removeFromBasket(itemBasketId) {\r\n // const companyId = `${config.COMPANY_ID}`;\r\n // const authToken = authService.getToken();\r\n // const url = `${config.BOOKING_BUG_API}/${companyId}/basket/${itemBasketId}`;\r\n\r\n // var reqHeaders = new Headers();\r\n // reqHeaders.append(\"Content-Type\", \"application/json\");\r\n // reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n // reqHeaders.append(\"App-Id\", config.APP_ID);\r\n // reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n // reqHeaders.append(\"Auth-Token\", authToken);\r\n\r\n // const response = await fetch(url, {\r\n // method: \"DELETE\",\r\n // headers: reqHeaders\r\n // });\r\n\r\n // if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `CheckoutService removeFromBasket failed, HTTP status ${\r\n // response.status\r\n // }`\r\n // );\r\n // }\r\n\r\n // const data = await response.json();\r\n // return _.find(data, \"items\");\r\n // }\r\n\r\n // async getBasket() {\r\n // const companyId = `${config.COMPANY_ID}`;\r\n // const authToken = authService.getToken();\r\n\r\n // const url = `${config.BOOKING_BUG_API}/${companyId}/basket`;\r\n\r\n // var reqHeaders = new Headers();\r\n // reqHeaders.append(\"Content-Type\", \"application/json\");\r\n // reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n // reqHeaders.append(\"App-Id\", config.APP_ID);\r\n // //reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n // reqHeaders.append(\"Auth-Token\", authToken);\r\n\r\n // const response = await fetch(url, {\r\n // method: \"GET\",\r\n // headers: reqHeaders\r\n // });\r\n\r\n // if (!response.ok) {\r\n // //config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `CheckoutService getBasket failed, HTTP status ${response.status}`\r\n // );\r\n // }\r\n\r\n // const data = await response.json();\r\n // //return data;\r\n // return _.get(data, \"_embedded.items\");\r\n // }\r\n\r\n // async checkout(memberId) {\r\n // const companyId = `${config.COMPANY_ID}`;\r\n // const authToken = authService.getToken();\r\n // const url = `${config.BOOKING_BUG_API}/${companyId}/basket/checkout`;\r\n\r\n // const reqBody = {\r\n // member_id: memberId,\r\n // take_from_wallet: false\r\n // };\r\n\r\n // var reqHeaders = new Headers();\r\n // reqHeaders.append(\"Content-Type\", \"application/json\");\r\n // reqHeaders.append(\"App-Key\", config.APP_KEY);\r\n // reqHeaders.append(\"App-Id\", config.APP_ID);\r\n // reqHeaders.append(\"Cache-Control\", \"no-cache\");\r\n // reqHeaders.append(\"Auth-Token\", authToken);\r\n\r\n // const response = await fetch(url, {\r\n // method: \"POST\",\r\n // headers: reqHeaders,\r\n // body: JSON.stringify(reqBody)\r\n // });\r\n\r\n // if (!response.ok) {\r\n // config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `CheckoutService checkout failed, HTTP status ${response.status}`\r\n // );\r\n // }\r\n\r\n // const data = await response.json();\r\n\r\n // return _.get(data, \"_embedded\");\r\n // }\r\n\r\n\r\n async addToBasketGroup(eventId, memberId, serviceId, bookingData) {\r\n\r\n\r\n const url = `${config.ENGAGE_BOOKINGBUG_ADD_TO_BASKET_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var reqHeaders = new Headers();\r\n\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: reqHeaders,\r\n body: JSON.stringify(bookingData)\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `CheckoutService addToBasketGroup failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.items\");\r\n }\r\n\r\n async checkout(memberId) {\r\n\r\n\r\n const url = `${config.ENGAGE_BOOKINGBUG_CHECKOUT_ENDPOINT}${\"?bbmemberId=\"}${memberId}`;\r\n const authToken = authService.getToken();\r\n\r\n var reqHeaders = new Headers();\r\n\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: reqHeaders,\r\n\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `CheckoutService checkout failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded\");\r\n }\r\n async getBasket() {\r\n\r\n\r\n const url = `${config.ENGAGE_BOOKINGBUG_BASKET_ENDPOINT}`;\r\n const authToken = authService.getToken();\r\n\r\n var reqHeaders = new Headers();\r\n\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: reqHeaders,\r\n\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `CheckoutService getBasket failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.items\");\r\n }\r\n\r\n\r\n async removeFromBasket(itemBasketId) {\r\n const url = `${config.ENGAGE_BOOKINGBUG_DELETE_ITEM_FROM_BASKET_ENDPOINT}${\"?id=\"}${itemBasketId}`;\r\n const authToken = authService.getToken();\r\n\r\n var reqHeaders = new Headers();\r\n\r\n reqHeaders.append(\"Content-Type\", \"application/json\");\r\n reqHeaders.append(\"Authorization\", authToken);\r\n\r\n const response = await fetch(url, {\r\n method: \"DELETE\",\r\n headers: reqHeaders,\r\n });\r\n\r\n if (!response.ok) {\r\n config.errorPageRedirect(response);\r\n throw new Error(\r\n `CheckoutService removeFromBasket failed, HTTP status ${response.status}`\r\n );\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return _.get(data, \"_embedded.items\");\r\n\r\n }\r\n // async makePayment(data) {\r\n\r\n // //https://www.npmjs.com/package/js2xmlparser used \r\n // const url = config.WorldPayURL;\r\n // const instId = config.WorldPayInstID;\r\n\r\n // var contentObj = {\r\n // \"@\": { version: \"1.4\", \"merchantCode\": \"TESTING_MERCHANT_CODE\" },\r\n // \"submit\": {\r\n // \"order\": {\r\n // \"@\": { \"orderCode\": \"XPPDJDHDDGDGDGDGDG_OUR_ORDER_CODE\", \"installationId\": instId },\r\n\r\n // \"description\": \"Testing payment on concierge\",\r\n // \"amount\": {\r\n // \"@\": { \"currencyCode\": \"GBP\" },\r\n // \"@\": { \"exponent\": \"2\" },\r\n // \"@\": { \"value\": \"5000\" }\r\n // },\r\n // \"orderContent\": \"\",\r\n // \"paymentMethodMask\": {\r\n // \"include\": { \"@\": { \"code\": \"ALL\" } }\r\n // },\r\n // \"shopper\": { \"shopperEmailAddress\": \"resident@engageproptech\" },\r\n // \"shippingAddress\": {\r\n // \"address\": {\r\n // \"address1\": \"47A\",\r\n // \"address2\": \"Queensbridge Road\",\r\n // \"address3\": \"Suburbia\",\r\n // \"postalCode\": \"CB94BQ\",\r\n // \"city\": \"Cambridge\",\r\n // \"state\": \"Cambridgeshire\",\r\n // \"countryCode\": \"GB\"\r\n // }\r\n // },\r\n // \"billingAddress\": {\r\n // \"address\": {\r\n // \"address1\": \"47A\",\r\n // \"address2\": \"Queensbridge Road\",\r\n // \"address3\": \"Suburbia\",\r\n // \"postalCode\": \"CB94BQ\",\r\n // \"city\": \"Cambridge\",\r\n // \"state\": \"Cambridgeshire\",\r\n // \"countryCode\": \"GB\"\r\n // }\r\n // }\r\n // }\r\n // }\r\n // };\r\n\r\n\r\n\r\n // var content = js2xmlparser.parse(\"paymentService\", contentObj);\r\n\r\n // // var response;\r\n // // var xhr = new XMLHttpRequest();\r\n // // xhr.open(\"POST\", url, true);\r\n // // xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\r\n // // // xhr.setRequestHeader(\"Content-Type\", \"application/xml\");\r\n\r\n // // xhr.onreadystatechange = function () { // Call a function when the state changes.\r\n // // if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {\r\n\r\n // // response = xhr.responseText;\r\n // // console.log(xhr.responseText);\r\n // // }\r\n // // }\r\n\r\n // // xhr.send(content);\r\n\r\n // var reqHeaders = new Headers();\r\n // reqHeaders.append(\"Access-Control-Allow-Origin\", \"*\");\r\n // //reqHeaders.append(\"Access-Control-Allow-Headers\", \"X-Requested-With\");\r\n // //reqHeaders.append(\"Content-Type\", \"application/xml\");\r\n\r\n // // reqHeaders.append(\"Accept\", \"*\");\r\n // // reqHeaders.append(\"Accept-Language\", \"en-GB\");\r\n // // reqHeaders.append(\"Accept-Encoding\", \"gzip, deflate\");\r\n\r\n // const response = await fetch(url, {\r\n // method: \"POST\",\r\n // mode: \"cors\",\r\n // headers: reqHeaders,\r\n // body: content,\r\n\r\n // // cache: 'default'\r\n // });\r\n\r\n\r\n // if (!response.ok) {\r\n // //config.errorPageRedirect(response);\r\n // throw new Error(\r\n // `makepayment checkout failed, HTTP status ${response.status}`\r\n // );\r\n // }\r\n\r\n // return response;\r\n\r\n // }\r\n\r\n\r\n}\r\n\r\nexport default new CheckoutService();\r\n","export const INITIAL_STATE = \"INITIAL_STATE\";\r\nexport const ITEM_ADDED_TO_BASKET = \"ITEM_ADDED_TO_BASKET\";\r\nexport const BASKET_LOADED_FROM_CACHE = \"BASKET_LOADED_FROM_CACHE\";\r\nexport const ITEM_REMOVED_FROM_BASKET = \"ITEM_REMOVED_FROM_BASKET\";\r\nexport const CHECKOUT_COMPLETED = \"CHECKOUT_COMPLETED\";\r\nexport const BOOKING_COMPLETED = \"BOOKING_COMPLETED\";\r\nexport const NOTIFICATION_SENT_SUCCESS = \"NOTIFICATION_SENT_SUCCESS\";\r\nexport const NOTIFICATION_SENT_FAIL = \"NOTIFICATION_SENT_FAIL\";\r\nexport const ITEM_SELECTED = \"ITEM_SELECTED\";\r\nexport const CHECKOUT_FAIL = \"CHECKOUT_FAIL\";\r\nexport const CHARGE_TYPE_SET = \"CHARGE_TYPE_SET\";\r\nexport const ACTION_SUCCESS = \"ACTION_SUCCESS\";\r\nexport const ACTION_TYPE = \"ACTION_TYPE\";\r\nexport const ACTION_MESSAGE_SET = \"ACTION_MESSAGE_SET\";\r\nexport const HM_NOTIFICATION_SENT_SUCCESS = \"HM_NOTIFICATION_SENT_SUCCESS\";\r\nexport const FM_NOTIFICATION_SENT_SUCCESS = \"FM_NOTIFICATION_SENT_SUCCESS\";\r\nexport const HM_NOTIFICATION_SENT_FAIL = \"HM_NOTIFICATION_SENT_FAIL\";\r\nexport const FM_NOTIFICATION_SENT_FAIL = \"FM_NOTIFICATION_SENT_FAIL\";\r\n","export const PAGE_EVENT_CHANGED = \"PAGE_EVENT_CHANGED\";\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\n\r\nconst initialState = Immutable({\r\n event: \"\"\r\n});\r\n\r\nexport default function pageEventReducer(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.PAGE_EVENT_CHANGED:\r\n return state.merge({\r\n event: action.event\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getPageEvent(state) {\r\n return state.events.event;\r\n}\r\n","\r\nexport const MONTHLY_SERVICES_SLOTS_FETCHED = \"MONTHLY_SERVICES_SLOTS_FETCHED\";\r\nexport const MONTHLY_RESOURCE_BOOKINGS_FETCHED = \"MONTHLY_RESOURCE_BOOKINGS_FETCHED\";\r\nexport const RESOURCES_FETCHED_SUCCESSFULLY = \"RESOURCES_FETCHED_SUCCESSFULLY\";\r\nexport const SERVICE_DAYDATA_FETCHED_SCCESSFULLY = \"SERVICE_DAYDATA_FETCHED_SCCESSFULLY\";\r\n\r\n\r\n\r\n\r\nexport const RESOURCES_FETCHED_FAIL = \"RESOURCES_FETCHED_FAIL\";\r\nexport const SERVICE_DAYDATA_FETCHED_FAIL = \"SERVICE_DAYDATA_FETCHED_FAIL\";\r\nexport const RESOURCE_DAYDATA_FETCH_SUCCESS = \" RESOURCE_DAYDATA_FETCH_SUCCESS\";\r\nexport const RESOURCE_DAYDATA_FETCH_FAIL = \" RESOURCE_DAYDATA_FETCH_FAIL\";","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\n\r\n\r\nconst initialState = Immutable({\r\n resources: [],\r\n monthServicesSlots: [],\r\n bookings: [],\r\n serviceDayData: [],\r\n resourceDayData: []\r\n\r\n});\r\n\r\nexport default function resourcesMonthlyReducer(state = initialState, action = {}) {\r\n\r\n switch (action.type) {\r\n\r\n case types.MONTHLY_SERVICES_SLOTS_FETCHED:\r\n return state.merge({\r\n monthServicesSlots: action.servicesSlots\r\n });\r\n case types.MONTHLY_RESOURCE_BOOKINGS_FETCHED:\r\n return state.merge({\r\n bookings: action.bookings\r\n });\r\n case types.RESOURCES_FETCHED_SUCCESSFULLY:\r\n return state.merge({\r\n resources: action.resources\r\n });\r\n case types.SERVICE_DAYDATA_FETCHED_SCCESSFULLY:\r\n return state.merge({\r\n serviceDayData: action.dayData\r\n });\r\n case types.RESOURCE_DAYDATA_FETCH_SUCCESS:\r\n return state.merge({\r\n resourceDayData: action.data\r\n })\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getServicesSlots(state) {\r\n return state.resourcesMonthly.monthServicesSlots;\r\n}\r\n\r\nexport function getBookings(state) {\r\n return state.resourcesMonthly.bookings;\r\n}\r\n\r\nexport function getResources(state) {\r\n return state.resourcesMonthly.resources;\r\n}\r\n\r\nexport function getServiceDayData(state) {\r\n return state.resourcesMonthly.serviceDayData;\r\n}\r\n\r\nexport function getResourceDayData(state) {\r\n return state.resourcesMonthly.resourceDayData;\r\n}","import _ from 'lodash';\r\nimport * as types from './actionTypes';\r\nimport moment from 'moment';\r\nimport dateFormat from 'dateformat';\r\nimport * as resourcesSelectors from './reducer';\r\nimport resourcesService from '../../services/BookingBugServices/ResourceService';\r\nimport serviceServices from '../../services/BookingBugServices/ServicesService.js';\r\nimport engageBookingServices from '../../services/EngageBookingBugServices/EngageBookingServices';\r\n\r\nimport meetingServices from '../../services/MeetingServices';\r\nimport checkoutService from '../../services/BookingBugServices/CheckoutService';\r\nimport * as checkoutTypes from '../Checkout/actionTypes';\r\nimport * as tenantSelector from '../../store/Tenants/reducer';\r\nimport * as meetingsSelector from '../../store/Meetings/reducer';\r\nimport * as eventsSelector from '../../store/PageEvents/reducer';\r\nimport * as serviceModuleSelectors from '../../store/ServiceModules/reducer';\r\nimport * as resourceMonthlySelectors from '../../store/ResourcesMonthly/reducer';\r\n\r\nimport * as config from '../../services/config';\r\n\r\nexport function getServices(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\t// const result = await resourcesService.getServices();\r\n\r\n\t\t\tconst result = await engageBookingServices.getServices();\r\n\r\n\t\t\tdispatch({ type: types.SERVICES_FETCHED, services: result });\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setServiceUnit(unit, callback = () => {}) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.SERVICE_UNIT_CHANGED, unit: unit });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n//Get details for service\r\nexport function fetchServiceDetail(serviceId, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst services = resourcesSelectors.getServices(getState());\r\n\r\n\t\t\t// const services = await serviceServices.getServices(serviceId);\r\n\r\n\t\t\t// const selectedService = _.filter(services, s => Number(s.id) === Number(serviceId));\r\n\r\n\t\t\t// const serviceData = selectedService.map(serv => {\r\n\t\t\t// return {\r\n\t\t\t// time_step: serv.booking_time_step,\r\n\t\t\t// service_name: serv.name,\r\n\t\t\t// detail_group_id: serv.detail_group_id\r\n\t\t\t// };\r\n\t\t\t// });\r\n\t\t\t// const service = serviceData[0];\r\n\r\n\t\t\tconst selectedService = _.find(services, { id: Number(serviceId) });\r\n\r\n\t\t\tif (selectedService) {\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.SERVICE_DETAIL_FETCHED,\r\n\t\t\t\t\tservice: selectedService\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcallback(true);\r\n\t\t\t}\r\n\r\n\t\t\tcallback(false);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function getResourceQuery() {\r\n\tconst query = {\r\n\t\troomsServiceHrId: `${config.MEETING_ROOM_SERVICE_HR_ID}`,\r\n\t\tparkingServiceHrId: `${config.PARKING_SERVICE_HR_ID}`\r\n\t};\r\n\treturn {\r\n\t\ttype: types.RESOURCES_QUERY,\r\n\t\tquery\r\n\t};\r\n}\r\n\r\nexport function fetchServicesSlots(serviceId, startDate, endDate, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\t// const servicesSlots = await resourcesService.getResourceServices(\r\n\t\t\t// serviceId,\r\n\t\t\t// startDate,\r\n\t\t\t// endDate\r\n\t\t\t// );\r\n\r\n\t\t\tconst servicesSlots = await engageBookingServices.getResourceTimeData(serviceId, startDate, endDate);\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.SERVICES_SLOTS_FETCHED,\r\n\t\t\t\tservicesSlots\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function fetchBookingQuestions(group_id, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tif (!_.isUndefined(group_id)) {\r\n\t\t\t\t// const booking_questions = await resourcesService.getBookingQuestions(group_id);\r\n\t\t\t\tconst booking_questions = await engageBookingServices.getBookingQuestions(group_id);\r\n\t\t\t\tdispatch({ type: types.BOOKING_QUESTIONS_LOAD_SUCCESS, questions: booking_questions });\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tdispatch({ type: types.BOOKING_QUESTIONS_LOAD_FAIL, status: 'error' });\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setResourceEventsSelected(events, callback = () => {}) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.RESOURCE_EVENT_SELECTED, events: events });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function setEventSelected(eventId) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.RESOURCE_EVENT_SET,\r\n\t\t\t\teventId\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function getSelectedEventSlot(eventId, startDate, serviceId, eventName, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst bookings = await resourcesService.getBookings(\r\n\t\t\t\tdateFormat(startDate, 'isoDate'),\r\n\t\t\t\tdateFormat(startDate, 'isoDate')\r\n\t\t\t);\r\n\r\n\t\t\tconst serviceBooking = _.filter(\r\n\t\t\t\tbookings,\r\n\t\t\t\t(booking) => booking.service_id === serviceId && booking.resource_name === eventName\r\n\t\t\t);\r\n\t\t\tconst tenants = tenantSelector.getAllTenants(getState());\r\n\t\t\tconst meetings = meetingsSelector.getMeetings(getState());\r\n\t\t\tconst pageEvent = eventsSelector.getPageEvent(getState());\r\n\r\n\t\t\tconst basket = await checkoutService.getBasket();\r\n\t\t\t// const services = await serviceServices.getServices(serviceId);\r\n\t\t\tconst servicesSlots = getState().resources.servicesSlots;\r\n\r\n\t\t\t//const selectedService = _.find(services, s => s.id == serviceId);\r\n\t\t\tconst service = resourcesSelectors.getService(getState());\r\n\r\n\t\t\tif (!_.isUndefined(service)) {\r\n\t\t\t\tvar time_step = service.time_step;\r\n\r\n\t\t\t\tconst serviceSlot = _.filter(servicesSlots, (o) => o.event_id === eventId);\r\n\r\n\t\t\t\tconst daySlots = serviceSlot.map((day) => day.times);\r\n\r\n\t\t\t\tvar slots = [];\r\n\r\n\t\t\t\tconst timeSlots = daySlots.map((daySlot) => {\r\n\t\t\t\t\t_.map(daySlot, (s, i) => {\r\n\t\t\t\t\t\tlet today = startDate;\r\n\r\n\t\t\t\t\t\tif (startDate.getDate() === new Date().getDate()) {\r\n\t\t\t\t\t\t\ttoday.setHours(new Date().getHours());\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet start = new Date(today.getFullYear(), today.getMonth(), today.getDate());\r\n\r\n\t\t\t\t\t\tstart.setMinutes(start.getMinutes() + s.time);\r\n\r\n\t\t\t\t\t\tlet end = new Date(today.getFullYear(), today.getMonth(), today.getDate());\r\n\r\n\t\t\t\t\t\tend.setMinutes(end.getMinutes() + s.time + time_step);\r\n\r\n\t\t\t\t\t\tlet start_min = s.time;\r\n\t\t\t\t\t\tlet end_min = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\t\tif (s.avail === 1) {\r\n\t\t\t\t\t\t\tlet availSlot = {\r\n\t\t\t\t\t\t\t\tisAvailable: false,\r\n\t\t\t\t\t\t\t\tstart: new Date(start),\r\n\t\t\t\t\t\t\t\tend: new Date(end),\r\n\t\t\t\t\t\t\t\tprice: s.price,\r\n\t\t\t\t\t\t\t\tid: i,\r\n\t\t\t\t\t\t\t\tstart_min: start_min,\r\n\t\t\t\t\t\t\t\tend_min: end_min\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tif (today.getDate() === new Date().getDate() && s.time / 60 <= today.getHours()) {\r\n\t\t\t\t\t\t\t\tavailSlot.isAvailable = false;\r\n\t\t\t\t\t\t\t\tslots.push(availSlot);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tavailSlot.isAvailable = true;\r\n\t\t\t\t\t\t\t\tslots.push(availSlot);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlet inBasket = false;\r\n\t\t\t\t\t\t\tfor (var index = 0; index < basket.length; index++) {\r\n\t\t\t\t\t\t\t\tvar el = basket[index];\r\n\t\t\t\t\t\t\t\tif (el.event_id === Number(eventId) && el.time === s.time) {\r\n\t\t\t\t\t\t\t\t\tinBasket = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tlet unavailSlot = {\r\n\t\t\t\t\t\t\t\tisAvailable: false,\r\n\t\t\t\t\t\t\t\tstart: new Date(start),\r\n\t\t\t\t\t\t\t\tend: new Date(end),\r\n\t\t\t\t\t\t\t\tinBasket: inBasket,\r\n\t\t\t\t\t\t\t\tid: i,\r\n\t\t\t\t\t\t\t\ttime: s.time,\r\n\t\t\t\t\t\t\t\tstart_min: start_min,\r\n\t\t\t\t\t\t\t\tend_min: end_min\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tslots.push(unavailSlot);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet lastId = slots.length ? slots[slots.length - 1].id : 0;\r\n\r\n\t\t\t\tconst bookedSlot = _.map(serviceBooking, (booked, i) => {\r\n\t\t\t\t\tlet bookedDate = new Date(booked.datetime);\r\n\t\t\t\t\tlet bookedEndDate = new Date(booked.end_datetime);\r\n\t\t\t\t\tconst tenant = _.find(tenants, (member) => member.email === booked.client_email);\r\n\r\n\t\t\t\t\tlet parkingDetails = _.find(\r\n\t\t\t\t\t\tmeetings,\r\n\t\t\t\t\t\t(meeting) =>\r\n\t\t\t\t\t\t\tmeeting.tenant.email === tenant.email &&\r\n\t\t\t\t\t\t\tnew Date(meeting.start).getHours() === new Date(booked.datetime).getHours()\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tlet slotDetail = tenant\r\n\t\t\t\t\t\t? `${tenant.firstName} ${' '} ${tenant.lastName} - ${tenant.companyName} ${pageEvent ===\r\n\t\t\t\t\t\t\t\t'parking' &&\r\n\t\t\t\t\t\t\tparkingDetails &&\r\n\t\t\t\t\t\t\tparkingDetails.visitor.parkingReg\r\n\t\t\t\t\t\t\t\t? ' - Visitor Details: ' +\r\n\t\t\t\t\t\t\t\t\tparkingDetails.visitor.firstName +\r\n\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\tparkingDetails.visitor.surname +\r\n\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\tparkingDetails.visitor.parkingReg\r\n\t\t\t\t\t\t\t\t: ''}`\r\n\t\t\t\t\t\t: '';\r\n\r\n\t\t\t\t\tlet bookedAvailSlot = {\r\n\t\t\t\t\t\tisAvailable: false,\r\n\t\t\t\t\t\tstart: new Date(bookedDate),\r\n\t\t\t\t\t\tend: new Date(bookedEndDate),\r\n\t\t\t\t\t\tprice: booked.price,\r\n\t\t\t\t\t\tid: lastId > 0 ? lastId + 1 + i : i,\r\n\t\t\t\t\t\tdesc: slotDetail,\r\n\t\t\t\t\t\tbooked: true\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tslots.push(bookedAvailSlot);\r\n\t\t\t\t\treturn bookedAvailSlot;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst slotsData = {\r\n\t\t\t\t\tslots: slots,\r\n\t\t\t\t\teventId: serviceSlot[0].event_id\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst eventDate = startDate;\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.SLOTS_FETCHED,\r\n\t\t\t\t\tslotsData\r\n\t\t\t\t});\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.EVENT_DATE_SELECTED,\r\n\t\t\t\t\teventDate\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.SELECTED_SERVICE_SLOT,\r\n\t\t\t\t\tselectedServiceSlot: slots\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getSelectedEventsSlots(events, startDate, endDate, serviceId, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst tenants = tenantSelector.getAllTenants(getState());\r\n\t\t\tconst meetings = meetingsSelector.getMeetings(getState());\r\n\t\t\t// const pageEvent = eventsSelector.getPageEvent(getState());\r\n\r\n\t\t\tconst basket = await checkoutService.getBasket();\r\n\r\n\t\t\tconst servicesSlots = getState().resources.servicesSlots;\r\n\r\n\t\t\tconst service = resourcesSelectors.getService(getState());\r\n\r\n\t\t\tconst dateRange = getDatesRange(startDate, endDate);\r\n\r\n\t\t\t// const bookings_ = resourcesSelectors.getBookings(getState());\r\n\t\t\t// const bookings = _.map(bookings_, item => item);\r\n\t\t\t//var servicesSlots_grp = _.groupBy(servicesSlots, serv => serv.resource_id);\r\n\r\n\t\t\tvar resourceIds = _.filter(\r\n\t\t\t\t_.map(events, (eventData) => {\r\n\t\t\t\t\tlet resourceData = _.find(servicesSlots, { event_id: eventData.eventId });\r\n\t\t\t\t\tif (resourceData) {\r\n\t\t\t\t\t\treturn { resourceId: resourceData.resource_id };\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}),\r\n\t\t\t\t(x) => !_.isUndefined(x)\r\n\t\t\t);\r\n\r\n\t\t\tconst resourceObj = {\r\n\t\t\t\tevents: resourceIds\r\n\t\t\t};\r\n\r\n\t\t\tlet bookings = [];\r\n\t\t\tlet bookings_range = [];\r\n\r\n\t\t\tif (events && events.length > 0) {\r\n\t\t\t\tbookings = await engageBookingServices.getResourceBookings(\r\n\t\t\t\t\tresourceObj,\r\n\t\t\t\t\tmoment(startDate).format('YYYY-MM-DD'),\r\n\t\t\t\t\tmoment(endDate).format('YYYY-MM-DD'),\r\n\t\t\t\t\t1,\r\n\t\t\t\t\t397\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tvar bookedBookings = _.get(bookings, 'booked._embedded.bookings');\r\n\t\t\tvar blockedBookings = _.get(bookings, 'blocked._embedded.bookings');\r\n\r\n\t\t\t//const resourceBookings = await resourcesService.getBookings(moment(startDate).format(\"YYYY-MM-DD\"), moment(endDate).format(\"YYYY-MM-DD\"));\r\n\t\t\t//const resourceBookings = await engageBookingServices.getBookings(moment(startDate).format(\"YYYY-MM-DD\"), moment(endDate).format(\"YYYY-MM-DD\"));\r\n\r\n\t\t\t// if (resourceBookings);\r\n\t\t\t// bookings = resourceBookings;\r\n\r\n\t\t\tif (!_.isUndefined(service)) {\r\n\t\t\t\tvar slots = [];\r\n\t\t\t\tvar bookedSlots = [];\r\n\t\t\t\tlet card = 0;\r\n\r\n\t\t\t\tconst eventsSlots = _.map(events, (event, index) => {\r\n\t\t\t\t\tcard = index + 1;\r\n\r\n\t\t\t\t\t// const serviceBooking = _.filter(\r\n\t\t\t\t\t// bookings,\r\n\t\t\t\t\t// booking =>\r\n\t\t\t\t\t// booking.service_id == serviceId && booking.resource_name === event.eventName && !_.isUndefined(booking.client_id)\r\n\t\t\t\t\t// );\r\n\r\n\t\t\t\t\t//const blockedResourceBooking = _.filter(bookings, resource => resource.resource_name === event.eventName && _.isUndefined(resource.client_id));\r\n\r\n\t\t\t\t\tconst serviceBooking = _.filter(\r\n\t\t\t\t\t\tbookedBookings,\r\n\t\t\t\t\t\t(booking) => booking.service_id === serviceId && booking.resource_name === event.eventName\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tconst blockedResourceBooking = _.filter(\r\n\t\t\t\t\t\tblockedBookings,\r\n\t\t\t\t\t\t(resource) => resource.resource_name === event.eventName\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tvar time_step = service.booking_time_step;\r\n\r\n\t\t\t\t\tconst serviceSlot = _.filter(servicesSlots, (o) => o.event_id === event.eventId);\r\n\r\n\t\t\t\t\t_.map(serviceSlot, (slotService) => {\r\n\t\t\t\t\t\tlet daySlot = slotService.times;\r\n\r\n\t\t\t\t\t\t_.map(dateRange, (dteRange, index) => {\r\n\t\t\t\t\t\t\t_.map(daySlot, (s, i) => {\r\n\t\t\t\t\t\t\t\tif (moment(s.datetime).format('YYYY-MM-DD') === moment(dteRange).format('YYYY-MM-DD')) {\r\n\t\t\t\t\t\t\t\t\tlet today = dteRange;\r\n\r\n\t\t\t\t\t\t\t\t\tif (dteRange.getDate() === new Date().getDate()) {\r\n\t\t\t\t\t\t\t\t\t\ttoday.setHours(new Date().getHours());\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tlet start = new Date(today.getFullYear(), today.getMonth(), today.getDate());\r\n\r\n\t\t\t\t\t\t\t\t\tstart.setMinutes(start.getMinutes() + s.time);\r\n\r\n\t\t\t\t\t\t\t\t\tlet end = new Date(today.getFullYear(), today.getMonth(), today.getDate());\r\n\r\n\t\t\t\t\t\t\t\t\tend.setMinutes(end.getMinutes() + s.time + time_step);\r\n\r\n\t\t\t\t\t\t\t\t\tlet start_min = s.time;\r\n\t\t\t\t\t\t\t\t\tlet end_min = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\t\t\t\t\tlet lastEntryId = slots.length ? slots[slots.length - 1].id + 1 : 0;\r\n\r\n\t\t\t\t\t\t\t\t\t// let dupl = _.find(slots, { id: i });\r\n\t\t\t\t\t\t\t\t\t// if (!_.isUndefined(dupl))\r\n\t\t\t\t\t\t\t\t\t// i = lastEntryId + 1;\r\n\r\n\t\t\t\t\t\t\t\t\tif (s.avail === 1) {\r\n\t\t\t\t\t\t\t\t\t\tlet availSlot = {\r\n\t\t\t\t\t\t\t\t\t\t\tisAvailable: false,\r\n\t\t\t\t\t\t\t\t\t\t\tstart: new Date(start),\r\n\t\t\t\t\t\t\t\t\t\t\tend: new Date(end),\r\n\t\t\t\t\t\t\t\t\t\t\tprice: s.price,\r\n\t\t\t\t\t\t\t\t\t\t\tid: lastEntryId,\r\n\t\t\t\t\t\t\t\t\t\t\tstart_min: start_min,\r\n\t\t\t\t\t\t\t\t\t\t\tend_min: end_min,\r\n\t\t\t\t\t\t\t\t\t\t\teventId: event.eventId\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\ttoday.getDate() === new Date().getDate() &&\r\n\t\t\t\t\t\t\t\t\t\t\ts.time / 60 <= today.getHours()\r\n\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tavailSlot.isAvailable = false;\r\n\t\t\t\t\t\t\t\t\t\t\tslots.push(availSlot);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tavailSlot.isAvailable = true;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t//check past dates are not available\r\n\t\t\t\t\t\t\t\t\t\t\tlet now = new Date();\r\n\t\t\t\t\t\t\t\t\t\t\tif (start < now) availSlot.isAvailable = false;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tslots.push(availSlot);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tlet inBasket = false;\r\n\t\t\t\t\t\t\t\t\t\tfor (var index = 0; index < basket.length; index++) {\r\n\t\t\t\t\t\t\t\t\t\t\tvar el = basket[index];\r\n\t\t\t\t\t\t\t\t\t\t\tif (el.event_id === Number(event.eventId) && el.time === s.time) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinBasket = true;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tlet unavailSlot = {\r\n\t\t\t\t\t\t\t\t\t\t\tisAvailable: false,\r\n\t\t\t\t\t\t\t\t\t\t\tstart: new Date(start),\r\n\t\t\t\t\t\t\t\t\t\t\tend: new Date(end),\r\n\t\t\t\t\t\t\t\t\t\t\tinBasket: inBasket,\r\n\t\t\t\t\t\t\t\t\t\t\tid: i,\r\n\t\t\t\t\t\t\t\t\t\t\ttime: s.time,\r\n\t\t\t\t\t\t\t\t\t\t\tstart_min: start_min,\r\n\t\t\t\t\t\t\t\t\t\t\tend_min: end_min,\r\n\t\t\t\t\t\t\t\t\t\t\teventId: event.eventId\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\tslots.push(unavailSlot);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}); //end daySlotArray\r\n\t\t\t\t\t}); //end service slot\r\n\r\n\t\t\t\t\t// const daySlots = serviceSlot.map(day => day.times);\r\n\r\n\t\t\t\t\t// // const timeSlots = daySlots.map(daySlot => {\r\n\r\n\t\t\t\t\t// // });\r\n\t\t\t\t\t// console.log(bookings);\r\n\t\t\t\t\t// console.log(blockedResourceBooking);\r\n\r\n\t\t\t\t\tconst blockedSlot = _.map(blockedResourceBooking, (blocked, index) => {\r\n\t\t\t\t\t\tif (blocked.resource_name === event.eventName) {\r\n\t\t\t\t\t\t\tlet last_id = slots.length ? slots[slots.length - 1].id : 0;\r\n\t\t\t\t\t\t\tlet blockedDate = new Date(blocked.datetime);\r\n\t\t\t\t\t\t\tlet blockedEndDate = new Date(blocked.end_datetime);\r\n\t\t\t\t\t\t\tlet blockedDate_start_min = blockedDate.getHours() * 60 + blockedDate.getMinutes();\r\n\t\t\t\t\t\t\tlet blockedDate_end_min = blockedEndDate.getHours() * 60 + blockedEndDate.getMinutes();\r\n\t\t\t\t\t\t\tlet today = new Date();\r\n\t\t\t\t\t\t\tlet today_min = today.getHours() * 60 + today.getMinutes();\r\n\t\t\t\t\t\t\tlet status;\r\n\r\n\t\t\t\t\t\t\tif (blockedDate < today) {\r\n\t\t\t\t\t\t\t\tstatus = true;\r\n\t\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\t\tmoment(blockedDate).format('YYYY/MM/DD') === moment(today).format('YYYY/MM/DD') &&\r\n\t\t\t\t\t\t\t\tblockedDate_start_min < today_min\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\tstatus = true;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tstatus = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlet blockedAvailSlot = {\r\n\t\t\t\t\t\t\t\tisAvailable: false,\r\n\t\t\t\t\t\t\t\tstart: new Date(blockedDate),\r\n\t\t\t\t\t\t\t\tend: new Date(blockedEndDate),\r\n\t\t\t\t\t\t\t\tprice: blocked.price,\r\n\t\t\t\t\t\t\t\tid: blocked.id, // last_id > 0 ? last_id + 1 : index,\r\n\t\t\t\t\t\t\t\tdesc: blocked.full_describe,\r\n\t\t\t\t\t\t\t\tblocked: true,\r\n\t\t\t\t\t\t\t\teventId: event.eventId,\r\n\t\t\t\t\t\t\t\teventName: event.eventName,\r\n\t\t\t\t\t\t\t\tresourceId: blocked.resource_id,\r\n\t\t\t\t\t\t\t\tpast: status,\r\n\t\t\t\t\t\t\t\tstart_min: blockedDate_start_min,\r\n\t\t\t\t\t\t\t\tend_min: blockedDate_end_min,\r\n\t\t\t\t\t\t\t\ttitle: event.eventName,\r\n\t\t\t\t\t\t\t\tcard: 0,\r\n\t\t\t\t\t\t\t\tblocked_card: card,\r\n\t\t\t\t\t\t\t\tduration: blocked.duration,\r\n\t\t\t\t\t\t\t\ttype: service.duration_unit\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tslots.push(blockedAvailSlot);\r\n\r\n\t\t\t\t\t\t\treturn blockedAvailSlot;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn blocked;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tconst bookedSlot = _.map(serviceBooking, (booked, i) => {\r\n\t\t\t\t\t\t// let lastId = slots.length ? slots[slots.length - 1].id : 0;\r\n\t\t\t\t\t\tlet today = new Date();\r\n\t\t\t\t\t\tlet today_min = today.getHours() * 60 + today.getMinutes();\r\n\t\t\t\t\t\tlet status;\r\n\t\t\t\t\t\tlet bookedDate = new Date(booked.datetime);\r\n\t\t\t\t\t\tlet bookedEndDate = new Date(booked.end_datetime);\r\n\t\t\t\t\t\tlet bookedDate_start_min = bookedDate.getHours() * 60 + bookedDate.getMinutes();\r\n\t\t\t\t\t\tlet bookedDate_end_min = bookedEndDate.getHours() * 60 + bookedEndDate.getMinutes();\r\n\r\n\t\t\t\t\t\tconst tenant = _.find(tenants, (member) => member.email === booked.client_email);\r\n\t\t\t\t\t\tlet slotDetail = tenant ? `${tenant.firstName} ${' '} ${tenant.lastName}` : '';\r\n\r\n\t\t\t\t\t\tif (bookedDate < today) {\r\n\t\t\t\t\t\t\tstatus = true;\r\n\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\tmoment(bookedDate).format('YYYY/MM/DD') === moment(today).format('YYYY/MM/DD') &&\r\n\t\t\t\t\t\t\tbookedDate_start_min < today_min\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tstatus = true;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tstatus = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet bookedAvailSlot = {\r\n\t\t\t\t\t\t\tisAvailable: false,\r\n\t\t\t\t\t\t\tstart: new Date(bookedDate),\r\n\t\t\t\t\t\t\tend: new Date(bookedEndDate),\r\n\t\t\t\t\t\t\tprice: booked.price,\r\n\t\t\t\t\t\t\tid: booked.id, // lastId > 0 ? lastId + 1 : i,\r\n\t\t\t\t\t\t\tdesc: slotDetail,\r\n\t\t\t\t\t\t\tbooked: true,\r\n\t\t\t\t\t\t\teventId: event.eventId,\r\n\t\t\t\t\t\t\teventName: event.eventName,\r\n\t\t\t\t\t\t\tpast: status,\r\n\t\t\t\t\t\t\tstart_min: bookedDate_start_min,\r\n\t\t\t\t\t\t\tend_min: bookedDate_end_min,\r\n\t\t\t\t\t\t\tcard: card,\r\n\t\t\t\t\t\t\ttenant: tenant,\r\n\t\t\t\t\t\t\ttitle: event.eventName,\r\n\t\t\t\t\t\t\tquestions: booked.questions,\r\n\t\t\t\t\t\t\tanswers: booked.answers_summary,\r\n\t\t\t\t\t\t\tservice_name: booked.service_name,\r\n\t\t\t\t\t\t\tduration: booked.duration,\r\n\t\t\t\t\t\t\ttype: service.duration_unit\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tslots.push(bookedAvailSlot);\r\n\t\t\t\t\t\treturn bookedAvailSlot;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst eventsSlotsData = {\r\n\t\t\t\t\t\tslots: slots\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\treturn eventsSlotsData;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet slotsData = [];\r\n\r\n\t\t\t\tlet booked_taged = 0;\r\n\t\t\t\tconst eventsSlot = _.map(slots, (slot) => {\r\n\t\t\t\t\tif (!_.isUndefined(slot.booked) && slot.booked === true) {\r\n\t\t\t\t\t\tbooked_taged = booked_taged + 1;\r\n\t\t\t\t\t\tlet data = {\r\n\t\t\t\t\t\t\tid: slot.id,\r\n\t\t\t\t\t\t\tisAvailable: slot.isAvailable,\r\n\t\t\t\t\t\t\tbooked: slot.booked,\r\n\t\t\t\t\t\t\tdesc: slot.desc,\r\n\t\t\t\t\t\t\tend: slot.end,\r\n\t\t\t\t\t\t\tstart: slot.start,\r\n\t\t\t\t\t\t\tstart_min: slot.start_min,\r\n\t\t\t\t\t\t\tend_min: slot.end_min,\r\n\t\t\t\t\t\t\teventId: slot.eventId,\r\n\t\t\t\t\t\t\teventName: slot.eventName,\r\n\t\t\t\t\t\t\ttenant: slot.tenant,\r\n\t\t\t\t\t\t\ttag: booked_taged,\r\n\t\t\t\t\t\t\tpast: slot.past,\r\n\t\t\t\t\t\t\tcard: slot.card,\r\n\t\t\t\t\t\t\ttitle: slot.eventName,\r\n\t\t\t\t\t\t\tquestions: slot.questions,\r\n\t\t\t\t\t\t\tanswers: slot.answers,\r\n\t\t\t\t\t\t\tprice: slot.price,\r\n\t\t\t\t\t\t\tservice_name: slot.service_name,\r\n\t\t\t\t\t\t\tduration: slot.duration,\r\n\t\t\t\t\t\t\ttype: service.duration_unit\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tslotsData.push(data);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t//end if\r\n\t\t\t\t\t\t//uncoment to remove duplicate from slots list\r\n\t\t\t\t\t\t// let slot_dupl = _.find(slotsData, { start: slot.start, end: slot.end, start_min: slot.start_min, end_min: slot.end_min });\r\n\r\n\t\t\t\t\t\t// if (_.isUndefined(slot_dupl))\r\n\t\t\t\t\t\t// slotsData.push(slot);\r\n\r\n\t\t\t\t\t\tslotsData.push(slot);\r\n\t\t\t\t\t}\r\n\t\t\t\t}); //end eventsSlot\r\n\r\n\t\t\t\tlet bookingList = _.map(_.union(bookedBookings, blockedBookings), (o) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\temail: o.client_email,\r\n\t\t\t\t\t\tserviceId: o.service_id,\r\n\t\t\t\t\t\tname: o.client_name,\r\n\t\t\t\t\t\tresourceName: o.resource_name,\r\n\t\t\t\t\t\tstartDate: dateFormat(o.datetime, 'dd/mm/yyyy'),\r\n\t\t\t\t\t\tendDate: o.end_datetime,\r\n\t\t\t\t\t\tduration: o.duration,\r\n\t\t\t\t\t\ttimeFrom: dateFormat(o.datetime, 'shortTime'),\r\n\t\t\t\t\t\ttimeTo: dateFormat(o.end_datetime, 'shortTime'),\r\n\t\t\t\t\t\tquestions: o.questions,\r\n\t\t\t\t\t\tanswers: o.answers_summary,\r\n\t\t\t\t\t\ttenant: _.find(tenants, {\r\n\t\t\t\t\t\t\temail: o.client_email\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tprice: o.price\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar slotData = {\r\n\t\t\t\t\tevents: events,\r\n\t\t\t\t\tslots: _.sortBy(slotsData, [ 'start' ])\r\n\t\t\t\t};\r\n\r\n\t\t\t\tdispatch({ type: types.EVENTS_SLOTS_FETCHED, slotsData: slotData });\r\n\t\t\t\tdispatch({ type: types.RESOURCE_BOOKINGS_FETCHED, bookings: bookingList });\r\n\t\t\t\tcallback(true);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setSelectedSlot(slot, serviceId, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst basket = await checkoutService.getBasket();\r\n\r\n\t\t\tconst selectedEventsSlots = resourcesSelectors.getSelectedServiceSlot(getState());\r\n\r\n\t\t\tconst slotSelected = _.find(selectedEventsSlots, {\r\n\t\t\t\tid: slot.id\r\n\t\t\t});\r\n\r\n\t\t\tif (slot && slot.type === 'click')\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.SLOT_SELECTED,\r\n\t\t\t\t\tslot: slot\r\n\t\t\t\t});\r\n\r\n\t\t\tif (slot && slot.type === 'select')\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.BLOCK_SLOT_SELECTED,\r\n\t\t\t\t\tslot: slot\r\n\t\t\t\t});\r\n\r\n\t\t\tdispatch(addToBasketQueue(slot));\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setBlockSelectedSlot(slots, serviceId) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst selectedServiceSlots = resourcesSelectors.getSelectedServiceSlot(getState());\r\n\r\n\t\t\tlet start = new Date(slots.start);\r\n\t\t\tlet start_min = start.getHours() * 60 + start.getMinutes();\r\n\t\t\tlet end = new Date(slots.end);\r\n\t\t\tlet end_min = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\tlet selectedSlots = {\r\n\t\t\t\tstart: slots.start,\r\n\t\t\t\tend: slots.end,\r\n\t\t\t\tslots: slots.slots,\r\n\t\t\t\tstart_min: start_min,\r\n\t\t\t\tend_min: end_min,\r\n\t\t\t\tslotsTime: _.map(\r\n\t\t\t\t\t_.filter(slots.slots, (s, i) => {\r\n\t\t\t\t\t\tlet slotTime = new Date(s);\r\n\t\t\t\t\t\tlet time = slotTime.getHours() * 60 + slotTime.getMinutes();\r\n\r\n\t\t\t\t\t\treturn time >= start_min && time < end_min;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(time_slot) => {\r\n\t\t\t\t\t\tlet slot_Time = new Date(time_slot);\r\n\t\t\t\t\t\tlet tme = slot_Time.getHours() * 60 + slot_Time.getMinutes();\r\n\t\t\t\t\t\treturn tme;\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t};\r\n\r\n\t\t\tlet prep_slots = _.map(selectedSlots.slotsTime, (timeSlot) => {\r\n\t\t\t\tlet selectedSlot = _.find(selectedServiceSlots, (servSlot) => servSlot.start_min === timeSlot);\r\n\t\t\t\treturn selectedSlot;\r\n\t\t\t});\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.BLOCK_SLOT_SELECTED,\r\n\t\t\t\tslotsinfo: selectedSlots\r\n\t\t\t});\r\n\t\t\tfor (var index = 0; index < prep_slots.length; index++) {\r\n\t\t\t\tdispatch(addToBasketQueue(prep_slots[index]));\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function deSelectSlot(slot) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst eventId = getState().resources.eventId;\r\n\r\n\t\t\tlet block_item = [];\r\n\t\t\tlet blockSelected = resourcesSelectors.getBlockSlotSelected(getState());\r\n\r\n\t\t\tblock_item = _.find(blockSelected, (o) => {\r\n\t\t\t\treturn slot.start_min >= o.start_min && slot.end_min <= o.end_min;\r\n\t\t\t});\r\n\r\n\t\t\tif (slot.type === 'click')\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.SLOT_DESELECTED,\r\n\t\t\t\t\tslot\r\n\t\t\t\t});\r\n\r\n\t\t\tif (slot.type === 'select')\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.BLOCK_SLOT_DESELECTED,\r\n\t\t\t\t\tslot: block_item\r\n\t\t\t\t});\r\n\t\t\t// const basket = await checkoutService.getBasket();\r\n\r\n\t\t\t// const itemToRemove = _.find(\r\n\t\t\t// basket.items,\r\n\t\t\t// o => o.time == slot.start.getHours() * 60 && o.event_id === eventId\r\n\t\t\t// );\r\n\r\n\t\t\t// if (itemToRemove) {\r\n\t\t\t// //propcess remove item from basket queue here\r\n\t\t\t// dispatch(checkoutActions.removeItemFromBasket(itemToRemove.id));\r\n\t\t\t// }\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.REMOVE_FROM_BASKET_QUEUE,\r\n\t\t\t\tslot\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function deselectBlockSlot(slot) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tlet blockSelected = resourcesSelectors.getBlockSlotSelected(getState());\r\n\t\t\tlet current_basket = resourcesSelectors.getBasketQueue(getState());\r\n\r\n\t\t\tlet new_basket = _.filter(current_basket, (item) => {\r\n\t\t\t\tlet obj = _.find(blockSelected, (block_item) => {\r\n\t\t\t\t\treturn _.isUndefined(_.find(blockSelected.slotsTime, (o) => o === block_item.start_min));\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn _.isUndefined(\r\n\t\t\t\t\t_.find(obj.slotsTime, (s) => {\r\n\t\t\t\t\t\treturn s === item.start_min;\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.BLOCK_SLOT_DESELECTED,\r\n\t\t\t\tslot\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function addToBasketQueue(slot) {\r\n\treturn {\r\n\t\ttype: types.ADD_TO_BASKET_QUEUE,\r\n\t\tslot\r\n\t};\r\n}\r\n\r\nexport function updateBasketQueue(slot, callback = () => {}) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tif (slot) {\r\n\t\t\t\tdispatch({ type: types.BASKET_QUEUE_UPDATED_SUCCESSFULLY, data: slot });\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function removeFromBasketQueue(slot) {\r\n\treturn {\r\n\t\ttype: types.REMOVE_FROM_BASKET_QUEUE,\r\n\t\tslot\r\n\t};\r\n}\r\n\r\nexport function setServiceId(serviceId) {\r\n\treturn async (dispatch, getState) => {\r\n\t\tdispatch({\r\n\t\t\ttype: types.SERVICE_ID_SELECTED,\r\n\t\t\tserviceId\r\n\t\t});\r\n\t};\r\n}\r\nexport function setRoomsServiceHr() {\r\n\treturn async (dispatch, getState) => {\r\n\t\tconst serviceId = config.MEETING_ROOM_SERVICE_HR_ID;\r\n\r\n\t\tdispatch({\r\n\t\t\ttype: types.SERVICE_ID_SELECTED,\r\n\t\t\tserviceId\r\n\t\t});\r\n\t};\r\n}\r\n\r\nexport function getRoomsServiceId() {\r\n\treturn config.MEETING_ROOM_SERVICE_HR_ID;\r\n}\r\n\r\nexport function setParkingServiceHr() {\r\n\treturn async (dispatch, getState) => {\r\n\t\tconst serviceId = config.PARKING_SERVICE_HR_ID;\r\n\r\n\t\tdispatch({\r\n\t\t\ttype: types.SERVICE_ID_SELECTED,\r\n\t\t\tserviceId\r\n\t\t});\r\n\t};\r\n}\r\n\r\nexport function getParkingServiceId() {\r\n\treturn config.PARKING_SERVICE_HR_ID;\r\n}\r\nexport function getEventDate() {\r\n\treturn async (dispatch, getState) => {\r\n\t\tconst eventDate = resourcesSelectors.getEventDate(getState());\r\n\r\n\t\tdispatch({\r\n\t\t\ttype: types.EVENT_DATE_SELECTED,\r\n\t\t\teventDate\r\n\t\t});\r\n\t};\r\n}\r\n\r\nexport function clearBasketQueue() {\r\n\treturn async (dispatch, getState) => {\r\n\t\tlet clear = [];\r\n\t\tdispatch({\r\n\t\t\ttype: types.CLEAR_BASKET_QUEUE,\r\n\t\t\tclear: clear\r\n\t\t});\r\n\t};\r\n}\r\n\r\nexport function getServiceBookings(serviceId, date, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst response = await engageBookingServices.getBookings(date, date);\r\n\r\n\t\t\tconst list = _.filter(response, (o) => o.service_id === Number(`${serviceId}`));\r\n\r\n\t\t\tconst tenants = tenantSelector.getAllTenants(getState());\r\n\r\n\t\t\tlet bookings = _.map(list, (o) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: o.id,\r\n\t\t\t\t\temail: o.client_email,\r\n\t\t\t\t\tserviceId: o.service_id,\r\n\t\t\t\t\tname: o.client_name,\r\n\t\t\t\t\tresourceName: o.resource_name,\r\n\t\t\t\t\tstartDate: dateFormat(o.datetime, 'dd/mm/yyyy'),\r\n\t\t\t\t\tendDate: o.end_datetime,\r\n\t\t\t\t\tduration: o.duration,\r\n\t\t\t\t\ttimeFrom: dateFormat(o.datetime, 'shortTime'),\r\n\t\t\t\t\ttimeTo: dateFormat(o.end_datetime, 'shortTime'),\r\n\t\t\t\t\ttenant: _.find(tenants, {\r\n\t\t\t\t\t\temail: o.client_email\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.RESOURCE_BOOKINGS_FETCHED,\r\n\t\t\t\tbookings: bookings\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getServiceBookings_range(serviceId, startDate, endDate, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst dateRange = getDatesRange(startDate, endDate);\r\n\r\n\t\t\tlet bookingsList = [];\r\n\r\n\t\t\tlet bookings_range = [];\r\n\r\n\t\t\t//const booking = await resourcesService.getBookings(startDate, endDate);\r\n\r\n\t\t\tconst booking = await engageBookingServices.getBookings(startDate, endDate);\r\n\r\n\t\t\tif (booking) bookings_range = booking;\r\n\r\n\t\t\t// for (var b = 0; b < dateRange.length; b++) {\r\n\r\n\t\t\t// const booking = await resourcesService.getBookings(dateFormat(dateRange[b], \"isoDate\"), dateFormat(dateRange[b], \"isoDate\"));\r\n\r\n\t\t\t// // const booking = await engageBookingServices.getBookings(dateFormat(dateRange[b], \"isoDate\"), dateFormat(dateRange[b], \"isoDate\"));\r\n\t\t\t// if (booking) {\r\n\t\t\t// bookings_range.push(booking);\r\n\t\t\t// }\r\n\t\t\t// }\r\n\r\n\t\t\t_.map(bookings_range, (booking_item) => {\r\n\t\t\t\t_.map(booking_item, (item) => {\r\n\t\t\t\t\tbookingsList.push(item);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t// const response = await resourcesService.getBookings(date, date);\r\n\t\t\tconst list = _.filter(bookingsList, (o) => {\r\n\t\t\t\treturn o !== null && o.service_id === Number(`${serviceId}`);\r\n\t\t\t});\r\n\r\n\t\t\tconst tenants = tenantSelector.getAllTenants(getState());\r\n\r\n\t\t\tlet bookings = _.map(list, (o) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: o.id,\r\n\t\t\t\t\temail: o.client_email,\r\n\t\t\t\t\tserviceId: o.service_id,\r\n\t\t\t\t\tname: o.client_name,\r\n\t\t\t\t\tresourceName: o.resource_name,\r\n\t\t\t\t\tstartDate: dateFormat(o.datetime, 'dd/mm/yyyy'),\r\n\t\t\t\t\tendDate: o.end_datetime,\r\n\t\t\t\t\tduration: o.duration,\r\n\t\t\t\t\ttimeFrom: dateFormat(o.datetime, 'shortTime'),\r\n\t\t\t\t\ttimeTo: dateFormat(o.end_datetime, 'shortTime'),\r\n\t\t\t\t\ttenant: _.find(tenants, {\r\n\t\t\t\t\t\temail: o.client_email\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.RESOURCE_BOOKINGS_FETCHED,\r\n\t\t\t\tbookings: bookings\r\n\t\t\t});\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function addToBookingsSelectionQueue(booking) {\r\n\treturn {\r\n\t\ttype: types.ADD_TO_BOOKINGS_SELECTION_QUEUE,\r\n\t\tbooking\r\n\t};\r\n}\r\n\r\nexport function getBookingsCancelReasons() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst cancelReasons = await resourcesService.getBookingCancelReasons();\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.CANCEL_BOOKINGS_REASONS,\r\n\t\t\t\tcancelReasons\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function cancelBooking(reason, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst bookings = resourcesSelectors.getBookingsSelectionQueue(getState());\r\n\t\t\tlet cancelled = [];\r\n\t\t\tfor (var index = 0; index < bookings.length; index++) {\r\n\t\t\t\tconst cancelBooking = await resourcesService.cancelBooking(bookings[index].id, reason);\r\n\r\n\t\t\t\tcancelled.push({\r\n\t\t\t\t\tid: cancelBooking.id,\r\n\t\t\t\t\tcancelled: cancelBooking.is_cancelled,\r\n\t\t\t\t\tcancelReason: cancelBooking.settings.cancel_reason\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tlet bookingsCancelled = _.map(cancelled, (item, index) => {\r\n\t\t\t\tlet o = _.find(bookings, (booking) => booking.id === item.id && item.cancelled === true);\r\n\t\t\t\treturn {\r\n\t\t\t\t\tbooking: o,\r\n\t\t\t\t\tcancel_reason: item.cancelReason\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.BOOKINGS_CANCELED_SUCCESS,\r\n\t\t\t\tbookingsCancelled\r\n\t\t\t});\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setBookingsSelectionQueue(booking) {\r\n\treturn {\r\n\t\ttype: types.RESOURCE_BOOKINGS_FETCHED,\r\n\t\tbooking\r\n\t};\r\n}\r\n\r\nexport function getServiceAvailability(service_id, date, eventId) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst timesAvailable = await resourcesService.timeAvailability(service_id, date);\r\n\t\t\tlet resource_availability = [];\r\n\r\n\t\t\tif (eventId && !_.isUndefined(eventId) && timesAvailable) {\r\n\t\t\t\tresource_availability = _.find(timesAvailable, {\r\n\t\t\t\t\tevent_id: Number(eventId)\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet times_avail = _.map(resource_availability.times, (o) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdate: resource_availability.date,\r\n\t\t\t\t\t\ttime: o.time,\r\n\t\t\t\t\t\tavailable: o.avail === 1 ? true : false,\r\n\t\t\t\t\t\tprice: o.price\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet resource_time = {\r\n\t\t\t\t\tname: resource_availability.name,\r\n\t\t\t\t\tdate: resource_availability.date,\r\n\t\t\t\t\tevent_id: resource_availability.event_id,\r\n\t\t\t\t\tresource_id: resource_availability.resource_id,\r\n\t\t\t\t\ttimes: times_avail\r\n\t\t\t\t};\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.RESOURCE_TIME_AVAILABLE_FETCHED,\r\n\t\t\t\t\ttimesAvail: resource_time\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function upDateBooking(booking, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst bookings = resourcesSelectors.getBookings(getState());\r\n\r\n\t\t\tconst status = await resourcesService.updateBooking(\r\n\t\t\t\tbooking.id,\r\n\t\t\t\tbooking.date,\r\n\t\t\t\tbooking.time,\r\n\t\t\t\tbooking.duration\r\n\t\t\t);\r\n\r\n\t\t\tif (status) {\r\n\t\t\t\tlet dateFrom = moment(status.datetime);\r\n\t\t\t\tlet dateTo = moment(status.end_datetime);\r\n\t\t\t\tlet from_min = dateFrom.hours() * 60 + dateFrom.minutes();\r\n\t\t\t\tlet to_min = dateTo.hours() * 60 + dateTo.minutes();\r\n\t\t\t\tvar updatedBooking = {\r\n\t\t\t\t\tid: status.id,\r\n\t\t\t\t\tdate: status.datetime,\r\n\t\t\t\t\tend_date: status.end_datetime,\r\n\t\t\t\t\tduration: to_min - from_min,\r\n\t\t\t\t\tresourceName: status.resourceName,\r\n\t\t\t\t\ttimeFrom: dateFrom.format('HH:mm A'),\r\n\t\t\t\t\ttimeTo: dateTo.format('HH:mm A')\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet updated = _.map(bookings, (o) => {\r\n\t\t\t\t\tif (o.id === updatedBooking.id) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\t\temail: o.email,\r\n\t\t\t\t\t\t\tserviceId: o.serviceId,\r\n\t\t\t\t\t\t\tname: o.name,\r\n\t\t\t\t\t\t\tresourceName: updatedBooking.resourceName,\r\n\t\t\t\t\t\t\tstartDate: moment(updatedBooking.date).format('DD/MM/YYYY'),\r\n\t\t\t\t\t\t\tendDate: updatedBooking.end_date,\r\n\t\t\t\t\t\t\ttimeFrom: updatedBooking.timeFrom,\r\n\t\t\t\t\t\t\ttimeTo: updatedBooking.timeTo,\r\n\t\t\t\t\t\t\ttenant: o.tenant\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t});\r\n\t\t\t\tlet bookingUpdated = _.filter(updated, (b) => {\r\n\t\t\t\t\treturn b !== null;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.UPDATE_BOOKING_SUCCESS,\r\n\t\t\t\t\tbookingStatus: {\r\n\t\t\t\t\t\tbooking: bookingUpdated,\r\n\t\t\t\t\t\tstatus: bookingUpdated.length > 0\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tcallback(true);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\t//console.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function updateBookingResource(booking, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst bookings = resourcesSelectors.getBookings(getState());\r\n\t\t\tlet data = {\r\n\t\t\t\tquestions: booking.questions\r\n\t\t\t};\r\n\t\t\tconst status = await engageBookingServices.updateBookingResource(booking.id, data);\r\n\r\n\t\t\tconsole.log(status);\r\n\t\t\tconsole.log(booking);\r\n\t\t\t// const status = await resourcesService.updateBookingResource(booking.id, data);\r\n\r\n\t\t\tif (status) {\r\n\t\t\t\tlet dateFrom = moment(status.datetime);\r\n\t\t\t\tlet dateTo = moment(status.end_datetime);\r\n\t\t\t\tlet from_min = dateFrom.hours() * 60 + dateFrom.minutes();\r\n\t\t\t\tlet to_min = dateTo.hours() * 60 + dateTo.minutes();\r\n\t\t\t\tvar updatedBooking = {\r\n\t\t\t\t\tid: status.id,\r\n\t\t\t\t\tdate: status.datetime,\r\n\t\t\t\t\tend_date: status.end_datetime,\r\n\t\t\t\t\tduration: to_min - from_min,\r\n\t\t\t\t\tresourceName: status.resource_name,\r\n\t\t\t\t\ttimeFrom: dateFrom.format('HH:mm A'),\r\n\t\t\t\t\ttimeTo: dateTo.format('HH:mm A')\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet updated = _.map(bookings, (o) => {\r\n\t\t\t\t\tif (o.id === updatedBooking.id) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\t\temail: o.email,\r\n\t\t\t\t\t\t\tserviceId: o.serviceId,\r\n\t\t\t\t\t\t\tname: o.name,\r\n\t\t\t\t\t\t\tresourceName: updatedBooking.resourceName,\r\n\t\t\t\t\t\t\tstartDate: moment(updatedBooking.date).format('DD/MM/YYYY'),\r\n\t\t\t\t\t\t\tendDate: updatedBooking.end_date,\r\n\t\t\t\t\t\t\ttimeFrom: updatedBooking.timeFrom,\r\n\t\t\t\t\t\t\ttimeTo: updatedBooking.timeTo,\r\n\t\t\t\t\t\t\ttenant: o.tenant\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t});\r\n\t\t\t\tlet bookingUpdated = _.filter(updated, (b) => {\r\n\t\t\t\t\treturn b !== null;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.UPDATE_BOOKING_SUCCESS,\r\n\t\t\t\t\tbookingStatus: {\r\n\t\t\t\t\t\tbooking: bookingUpdated,\r\n\t\t\t\t\t\tstatus: bookingUpdated.length > 0\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\nexport function cancelBookingSingle(id, reason, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst bookings = resourcesSelectors.getBookings(getState());\r\n\r\n\t\t\r\n\t\t\tlet cancelSingleBooking = await engageBookingServices.cancelBooking(id, reason);\r\n\r\n\t\t\tlet cancelled = [];\r\n\r\n\t\t\tif (cancelSingleBooking && !_.isUndefined(cancelSingleBooking)) {\r\n\t\t\t\tcancelled.push({\r\n\t\t\t\t\tid: cancelSingleBooking.id,\r\n\t\t\t\t\tcancelled: cancelSingleBooking.is_cancelled,\r\n\t\t\t\t\tcancelReason: cancelSingleBooking.settings.cancel_reason\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet bookingsCancelled = _.find(bookings, (item) => item.id === cancelSingleBooking.id);\r\n\r\n\t\t\t\tlet val = {\r\n\t\t\t\t\tbooking: bookingsCancelled,\r\n\t\t\t\t\tcancel_reason: reason\r\n\t\t\t\t};\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.BOOKINGS_CANCELED_SUCCESS,\r\n\t\t\t\t\tbookingsCancelled: [ val ]\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getBookingErrors() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst errors = await resourcesService.getBookingErrors();\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: types.BOOKING_ERRORS_LOAD_SUCCESS,\r\n\t\t\t\terrors\r\n\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getBookingDetail(mem_id, booking_id, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst detail = await resourcesService.getBookingDetails(mem_id, booking_id);\r\n\r\n\t\t\tdispatch({ type: types.BOOKING_DETAIL_LOAD_SUCCESS, detail: detail });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setBooking(booking, callback = () => {}) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.SET_BBOOKING_SUCCESS, booking: booking });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.log(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function nofifyCancelBooking(booking, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst portalSettings = serviceModuleSelectors.loadPortalSttings(getState());\r\n\t\t\tconst resource_type = eventsSelector.getPageEvent(getState());\r\n\t\t\tconst cancelation_period =\r\n\t\t\t\t!_.isUndefined(portalSettings) && !_.isUndefined(portalSettings.cancellation_period)\r\n\t\t\t\t\t? portalSettings.cancellation_period\r\n\t\t\t\t\t: 0;\r\n\t\t\tif (booking) {\r\n\t\t\t\tlet date = moment.utc(booking.startDate + ' ' + booking.timeFrom, 'DD/MM/YYYY HH:mm A');\r\n\t\t\t\tlet date2 = moment.utc(booking.startDate + ' ' + booking.timeTo, 'DD/MM/YYYY HH:mm A');\r\n\r\n\t\t\t\tlet now = new Date();\r\n\t\t\t\tlet cancel_time_exceded = false;\r\n\r\n\t\t\t\tif (moment(now).isBefore(date)) {\r\n\t\t\t\t\tlet current_diff = moment.duration(date.diff(moment(now)));\r\n\t\t\t\t\tlet diff_min = Number(current_diff.asMinutes().toFixed(0));\r\n\r\n\t\t\t\t\t//check if time in minutes is within cancellation span in minutes\r\n\t\t\t\t\tif (diff_min > cancelation_period) {\r\n\t\t\t\t\t\t//within calcellation period\r\n\r\n\t\t\t\t\t\tcancel_time_exceded = false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcancel_time_exceded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet data = {\r\n\t\t\t\t\tbookings: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: booking.id,\r\n\t\t\t\t\t\t\tdate: date,\r\n\t\t\t\t\t\t\ttimeTo: date2,\r\n\t\t\t\t\t\t\tresourceName: booking.resourceName,\r\n\t\t\t\t\t\t\ttimeFrom: date,\r\n\t\t\t\t\t\t\tprice:\r\n\t\t\t\t\t\t\t\tNumber(booking.price) > 0\r\n\t\t\t\t\t\t\t\t\t? parseFloat(Number(booking.price) / 100).toFixed(2)\r\n\t\t\t\t\t\t\t\t\t: booking.price\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\ttype: resource_type,\r\n\t\t\t\t\ttenant: booking.tenant,\r\n\t\t\t\t\tcancelTimeExceeded: cancel_time_exceded\r\n\t\t\t\t};\r\n\t\t\t\tconst notify = await meetingServices.resourceBookingCancelledNotification(data);\r\n\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.BOOKING_CANCELLED_NOTIFY_SUCCESS,\r\n\t\t\t\t\tstatus: notify\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function notifyEditBooking(id, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst resource_type = eventsSelector.getPageEvent(getState());\r\n\t\t\tlet booking_prev = resourcesSelectors.getBookings(getState());\r\n\t\t\tlet booking_curr = resourcesSelectors.getBookingUpdated(getState());\r\n\t\t\tconst prevBooking = _.find(booking_prev, (s) => s.id === id);\r\n\t\t\tconst updatedBooking = _.find(booking_curr.booking, (o) => o.id === id);\r\n\r\n\t\t\tif (updatedBooking) {\r\n\t\t\t\tlet date = moment(updatedBooking.startDate + ' ' + updatedBooking.timeFrom, 'DD/MM/YYYY HH:mm A');\r\n\t\t\t\tlet prevDate = moment(prevBooking.startDate + ' ' + prevBooking.timeFrom, 'DD/MM/YYYY HH:mm A');\r\n\t\t\t\tlet prevDateTo = moment(prevBooking.startDate + ' ' + prevBooking.timeTo, 'DD/MM/YYYY HH:mm A');\r\n\t\t\t\tlet data = {\r\n\t\t\t\t\tbookings: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: updatedBooking.id,\r\n\t\t\t\t\t\t\tdate: date,\r\n\t\t\t\t\t\t\ttimeTo: updatedBooking.endDate,\r\n\t\t\t\t\t\t\tresourceName: updatedBooking.resourceName,\r\n\t\t\t\t\t\t\ttimeFrom: date,\r\n\t\t\t\t\t\t\tprevTimeFrom: prevDate,\r\n\t\t\t\t\t\t\tprevTimeTo: prevDateTo\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t],\r\n\t\t\t\t\ttype: resource_type,\r\n\t\t\t\t\ttenant: updatedBooking.tenant\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst notify = await meetingServices.resourceBookingUpdatedNotification(data);\r\n\r\n\t\t\t\tdispatch({\r\n\t\t\t\t\ttype: types.BOOKING_UPDATED_NOTIFY_SUCCESS,\r\n\t\t\t\t\tstatus: notify\r\n\t\t\t\t});\r\n\t\t\t\tcallback(true);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function notifyCreateBooking(booking, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tif (booking) {\r\n\t\t\t\tvar bookingDetails = [ booking ]; //resourcesSelectors.getBookingCreated(getState());\r\n\t\t\t\tconst serviceUnit = resourcesSelectors.getServiceUnit(getState());\r\n\t\t\t\tconst block_selection = resourcesSelectors.getBlockSlotSelected(getState());\r\n\t\t\t\tconst resources = resourcesSelectors.getServicesSlots(getState());\r\n\t\t\t\tconst tenants = tenantSelector.getAllTenants(getState());\r\n\r\n\t\t\t\tlet bookings = [];\r\n\t\t\t\tlet temp_booking = [];\r\n\r\n\t\t\t\tif (serviceUnit === 'day') {\r\n\t\t\t\t\tbookings = _.map(bookingDetails, (booking) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tresourceName: booking.resource_name,\r\n\t\t\t\t\t\t\tprice: booking.price,\r\n\t\t\t\t\t\t\tdate: booking.start,\r\n\t\t\t\t\t\t\ttimeFrom: booking.start,\r\n\t\t\t\t\t\t\ttimeTo: booking.end,\r\n\t\t\t\t\t\t\tserviceType: serviceUnit\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t_.map(bookings, (item) => {\r\n\t\t\t\t\t\ttemp_booking.push(item);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (serviceUnit === 'minute') {\r\n\t\t\t\t\tvar resource = _.find(resources, {\r\n\t\t\t\t\t\tevent_id: booking.eventId,\r\n\t\t\t\t\t\tdate: moment(booking.start).format('YYYY-MM-DD')\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbookings = _.map(bookingDetails, (booking) => {\r\n\t\t\t\t\t\tlet stime = new Date(booking.start);\r\n\t\t\t\t\t\tlet etime = new Date(booking.end);\r\n\r\n\t\t\t\t\t\tlet start_min = stime.getHours() * 60 + stime.getMinutes();\r\n\t\t\t\t\t\tlet end_min = etime.getHours() * 60 + etime.getMinutes();\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tresourceName: resource ? resource.name : '',\r\n\t\t\t\t\t\t\tprice: booking.price,\r\n\t\t\t\t\t\t\tdate: booking.start,\r\n\t\t\t\t\t\t\ttimeFrom: booking.start,\r\n\t\t\t\t\t\t\ttimeTo: booking.end,\r\n\t\t\t\t\t\t\tstart_min: start_min,\r\n\t\t\t\t\t\t\tend_min: end_min,\r\n\t\t\t\t\t\t\tserviceType: serviceUnit\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t_.map(bookings, (item) => {\r\n\t\t\t\t\t\ttemp_booking.push(item);\r\n\t\t\t\t\t});\r\n\t\t\t\t} //end if minutes\r\n\t\t\t\t\r\n\r\n\t\t\t\tvar tenant = _.find(tenants, { bookingBugMemberId: booking.bookingBugMemberId });\r\n\r\n\t\t\t\tvar resourceBooked = {\r\n\t\t\t\t\tbookings: temp_booking,\r\n\t\t\t\t\ttenant: tenant,\r\n\t\t\t\t\tvisitor: null,\r\n\t\t\t\t\ttype: 'bookings'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst notify = await meetingServices.resourceBookingNotification(resourceBooked);\r\n\r\n\t\t\t\tif (notify)\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: checkoutTypes.NOTIFICATION_SENT_SUCCESS,\r\n\t\t\t\t\t\tsendNotification: notify\r\n\t\t\t\t\t});\r\n\t\t\t\telse\r\n\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\ttype: checkoutTypes.NOTIFICATION_SENT_FAIL,\r\n\t\t\t\t\t\tsendNotification: notify\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t\t// dispatch({ type: checkoutTypes.CHECKOUT_COMPLETED, checkoutData });\r\n\t\t\t//dispatch({ type: checkoutTypes.BOOKING_COMPLETED, details });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setBookingCreated(booking, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.RESOURCE_BOOKED_SUCCESS, booking });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function updateSlotsEventSelected(event, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.BOOKED_EVENT_SLOT_IS_SELECTED, event });\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function blockResource(eventId, startDate, endDate, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst unit_type = resourcesSelectors.getServiceUnit(getState());\r\n\t\t\tlet servicesSlots = [];\r\n\t\t\tlet resource = undefined;\r\n\r\n\t\t\tif (unit_type === 'minute') {\r\n\t\t\t\tservicesSlots = getState().resources.servicesSlots;\r\n\t\t\t} else if (unit_type === 'day') {\r\n\t\t\t\tservicesSlots = resourceMonthlySelectors.getServicesSlots(getState());\r\n\t\t\t}\r\n\t\t\tresource = _.find(servicesSlots, (res) => res.event_id === eventId);\r\n\r\n\t\t\tif (!_.isUndefined(resource)) {\r\n\t\t\t\t// const result = await resourcesService.blockResource(resource.resource_id, startDate, endDate);\r\n\t\t\t\tconst result = await engageBookingServices.blockResource(resource.resource_id, startDate, endDate);\r\n\t\t\t\tdispatch({ type: types.RESOURCE_BLOCKED_SUCCESS, resource: result });\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tcallback(false);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction getDatesRange(startDate, endDate) {\r\n\tvar dateRange = [];\r\n\tvar currentDate = new Date(moment(startDate).format('YYYY-MM-DD'));\r\n\tvar end = new Date(moment(endDate).format('YYYY-MM-DD'));\r\n\r\n\tlet current = currentDate;\r\n\tfor (var d = current; d <= end; d.setDate(d.getDate() + 1)) {\r\n\t\tdateRange.push(new Date(d));\r\n\t}\r\n\r\n\treturn dateRange;\r\n}\r\n\r\nexport function emptyServicesSlots() {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tlet empty = [];\r\n\t\t\tvar slotData = {\r\n\t\t\t\tevents: [],\r\n\t\t\t\tslots: empty,\r\n\t\t\t\tbookings: empty\r\n\t\t\t};\r\n\t\t\tdispatch({ type: types.RESOURCE_EVENTS_CLEARED, slotsData: slotData });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function setActionRedirect(val) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.ACTION_REDIRCECT_SUCCESS, status: val });\r\n\t\t} catch (error) {}\r\n\t};\r\n}\r\n\r\nexport function setPaymentAction(val) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.PAYMENT_ACTION_SUCCESS, paymentStatus: val });\r\n\t\t} catch (error) {}\r\n\t};\r\n}\r\n\r\nexport function setCarlendarSettings(data) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.CALENDAR_SETTINGS_SET, settings: data });\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function resourceProcessingStatus(status) {\r\n\treturn (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tdispatch({ type: types.PROCESSING_RESOURCE_REQUEST, status: status });\r\n\t\t} catch (error) {}\r\n\t};\r\n}\r\n","import _ from \"lodash\";\r\nimport * as types from \"./actionTypes\";\r\nimport * as resourcesTypes from \"../Resources/actionTypes\";\r\n\r\nimport moment from \"moment\";\r\nimport dateFormat from \"dateformat\";\r\nimport * as resourcesMonthlySelectors from \"./reducer\";\r\nimport resourcesService from \"../../services/BookingBugServices/ResourceService\";\r\n\r\nimport checkoutService from \"../../services/BookingBugServices/CheckoutService\";\r\nimport engageBookingServices from \"../../services/EngageBookingBugServices/EngageBookingServices.js\";\r\nimport * as tenantSelector from \"../../store/Tenants/reducer\";\r\nimport * as resourcesSelectors from \"../Resources/reducer\";\r\n\r\n\r\n\r\n\r\nexport function fetchServicesSlots(serviceId, startDate, endDate, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n \r\n var dayData = resourcesMonthlySelectors.getServiceDayData(getState());\r\n var resources = resourcesMonthlySelectors.getResources(getState());\r\n\r\n\r\n var servicesSlots = _.map(dayData, (data, key) => {\r\n\r\n\r\n let days = _.map(data, d => {\r\n return {\r\n spaces: d.spaces,\r\n price: d.price,\r\n datetime: d.date\r\n\r\n };\r\n });\r\n let resource = _.find(resources, { id: Number(key) });\r\n\r\n let dayVal = {\r\n resource_id: Number(key),\r\n days: days,\r\n event_id: data[0].event_id,\r\n name: !_.isUndefined(resource) ? resource.name : \"\"\r\n };\r\n\r\n return dayVal;\r\n });\r\n\r\n dispatch({\r\n type: types.MONTHLY_SERVICES_SLOTS_FETCHED,\r\n servicesSlots\r\n });\r\n\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\n\r\n\r\nexport function getServiceBookings(serviceId, startDate, endDate, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n\r\n // const dateRange = getDatesRange(startDate, endDate);\r\n\r\n\r\n // let bookings_range = []\r\n\r\n const bookingsList = await engageBookingServices.getBookings(startDate, endDate);\r\n\r\n // for (var b = 0; b < dateRange.length; b++) {\r\n\r\n // const booking = await engageBookingServices.getBookings(dateFormat(dateRange[b], \"isoDate\"), dateFormat(dateRange[b], \"isoDate\"));\r\n\r\n // // const booking = await engageBookingServices.getBookings(dateFormat(dateRange[b], \"isoDate\"), dateFormat(dateRange[b], \"isoDate\"));\r\n // if (booking) {\r\n // bookings_range.push(booking);\r\n // }\r\n // }\r\n\r\n // let temp_bookings = _.map(bookings_range, booking_item => {\r\n // _.map(booking_item, item => {\r\n // bookingsList.push(item);\r\n // })\r\n // });\r\n\r\n // const response = await resourcesService.getBookings(date, date);\r\n const list = _.filter(\r\n bookingsList,\r\n o => o.service_id === Number(`${serviceId}`)\r\n );\r\n\r\n const tenants = tenantSelector.getAllTenants(getState());\r\n\r\n let bookings = _.map(list, o => {\r\n return {\r\n id: o.id,\r\n email: o.client_email,\r\n serviceId: o.service_id,\r\n name: o.client_name,\r\n resourceName: o.resource_name,\r\n startDate: dateFormat(o.datetime, \"dd/mm/yyyy\"),\r\n endDate: o.end_datetime,\r\n duration: o.duration,\r\n timeFrom: dateFormat(o.datetime, \"shortTime\"),\r\n timeTo: dateFormat(o.end_datetime, \"shortTime\"),\r\n tenant: _.find(tenants, {\r\n email: o.client_email\r\n })\r\n };\r\n });\r\n\r\n dispatch({\r\n type: types.MONTHLY_RESOURCE_BOOKINGS_FETCHED,\r\n bookings: bookings\r\n });\r\n\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function fetchResources(page, perpage, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n var result = await engageBookingServices.getResources(page, perpage);\r\n\r\n dispatch({ type: types.RESOURCES_FETCHED_SUCCESSFULLY, resources: result });\r\n\r\n callback(true);\r\n } catch (error) {\r\n dispatch({ type: types.RESOURCES_FETCHED_FAIL });\r\n callback(false);\r\n console.error(error);\r\n }\r\n }\r\n}\r\n\r\nexport function fetchServiceDayData(serviceId, startDate, endDate, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n\r\n\r\n var result = await engageBookingServices.getServiceDayData(serviceId, startDate, endDate);\r\n var data = [];\r\n\r\n if (result && result.length > 0)\r\n data = _.groupBy(result, val => val.resource_id);\r\n\r\n dispatch({ type: types.SERVICE_DAYDATA_FETCHED_SCCESSFULLY, dayData: data });\r\n\r\n callback(true);\r\n } catch (error) {\r\n dispatch({ type: types.SERVICE_DAYDATA_FETCHED_FAIL });\r\n callback(false);\r\n console.error(error);\r\n }\r\n }\r\n}\r\n\r\nexport function fetchResourceDayData(events, serviceId, startDate, endDate, page, perpage, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n\r\n\r\n var result = await engageBookingServices.getResourceDayData(events, serviceId, startDate, endDate, page, perpage);\r\n var data = [];\r\n\r\n\r\n if (result && result.length > 0)\r\n data = _.groupBy(result, val => val.resource_id);\r\n\r\n\r\n dispatch({ type: types.RESOURCE_DAYDATA_FETCH_SUCCESS, data: data });\r\n\r\n callback(true);\r\n } catch (error) {\r\n dispatch({ type: types.RESOURCE_DAYDATA_FETCH_FAIL });\r\n callback(false);\r\n console.error(error);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function getSelectedEventsSlots(events,\r\n startDate,\r\n endDate,\r\n serviceId,\r\n callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n //var bookings = await engageBookingServices.getBookings(moment(startDate).format(\"YYYY-MM-DD\"), moment(endDate).format(\"YYYY-MM-DD\"));\r\n\r\n var bookings = []\r\n\r\n const basket = await checkoutService.getBasket();\r\n const tenants = tenantSelector.getAllTenants(getState());\r\n var servicesSlots = resourcesMonthlySelectors.getServicesSlots(getState());\r\n\r\n var resourceIds = _.filter(_.map(events, eventData => {\r\n let resourceData = _.find(servicesSlots, { event_id: eventData.eventId });\r\n if (resourceData) {\r\n return { resourceId: resourceData.resource_id }\r\n }\r\n return undefined\r\n }), x => !_.isUndefined(x));\r\n\r\n const resourceObj = {\r\n events: resourceIds\r\n }\r\n\r\n if (events && events.length > 0) {\r\n bookings = await engageBookingServices.getResourceBookings(resourceObj, moment(startDate).format(\"YYYY-MM-DD\"), moment(endDate).format(\"YYYY-MM-DD\"), 1, 397);\r\n }\r\n\r\n var bookedBookings = _.get(bookings, \"booked._embedded.bookings\");\r\n var blockedBookings = _.get(bookings, \"blocked._embedded.bookings\");\r\n\r\n var dayData = resourcesMonthlySelectors.getResourceDayData(getState());\r\n var services = resourcesSelectors.getServices(getState());\r\n var service = resourcesSelectors.getService(getState());\r\n\r\n const dateRange = getDatesRange(startDate, endDate);\r\n\r\n\r\n if (servicesSlots) {\r\n\r\n var slots = [];\r\n var bookedSlots = [];\r\n let card = 0;\r\n\r\n\r\n const eventsSlots = _.map(events, (event, index) => {\r\n card = index + 1;\r\n\r\n const serviceBooking = _.filter(\r\n bookedBookings,\r\n booking =>\r\n booking.service_id === serviceId && booking.resource_name === event.eventName\r\n );\r\n\r\n const blockedResourceBooking = _.filter(blockedBookings, resource => resource.resource_name === event.eventName);\r\n\r\n\r\n\r\n const serviceSlot = _.filter(servicesSlots, o => o.event_id === event.eventId);\r\n\r\n\r\n _.map(serviceSlot, slotService => {\r\n let daySlot = slotService.days;\r\n\r\n\r\n _.map(dateRange, (dteRange, index) => {\r\n\r\n _.map(daySlot, (s, i) => {\r\n\r\n if (moment(s.datetime).format(\"YYYY-MM-DD\") === moment(dteRange).format(\"YYYY-MM-DD\")) {\r\n let today = dteRange;\r\n\r\n let start = new Date(\r\n today.getFullYear(),\r\n today.getMonth(),\r\n today.getDate()\r\n );\r\n\r\n let end = new Date(\r\n today.getFullYear(),\r\n today.getMonth(),\r\n today.getDate()\r\n );\r\n\r\n let startDay = moment(start).format(\"YYYY-MM-YY\");\r\n let endDay = moment(end).format(\"YYYY-MM-YY\");\r\n\r\n let lastEntryId = slots.length ? slots[slots.length - 1].id + 1 : 0;\r\n\r\n\r\n //check with Bookingbug, item added tobasket still show spaces 1 on resource available\r\n //can not do this here, too heavy a load\r\n // let inBasket = false;\r\n // for (var index = 0; index < basket.length; index++) {\r\n // var el = basket[index];\r\n\r\n // if (Number(el.event_id) === Number(event.eventId) && el.date === moment(s.datetime).format(\"YYYY-MM-DD\")) {\r\n // console.log(\"event in basket\");\r\n // console.log(event);\r\n // inBasket = true;\r\n // }\r\n // }//end for loop\r\n\r\n if (s.spaces === 1) {\r\n\r\n let availSlot = {\r\n isAvailable: false,\r\n start: new Date(start),\r\n end: new Date(end),\r\n price: s.price,\r\n id: lastEntryId,\r\n eventId: event.eventId,\r\n //inBasket: inBasket,\r\n };\r\n\r\n if (\r\n today < new Date()\r\n ) {\r\n availSlot.isAvailable = false;\r\n slots.push(availSlot);\r\n } else {\r\n availSlot.isAvailable = true;\r\n\r\n // if (inBasket)\r\n // availSlot.isAvailable = false;\r\n\r\n slots.push(availSlot);\r\n }\r\n\r\n\r\n } else {\r\n\r\n\r\n let inBasket = false;\r\n for (var index = 0; index < basket.length; index++) {\r\n var el = basket[index];\r\n if (Number(el.event_id) === Number(event.eventId) && el.date === moment(s.datetime).format(\"YYYY-MM-DD\")) {\r\n\r\n inBasket = true;\r\n }\r\n }//end for loop\r\n\r\n let unavailSlot = {\r\n isAvailable: false,\r\n start: new Date(start),\r\n end: new Date(end),\r\n inBasket: inBasket,\r\n id: i,\r\n eventId: event.eventId\r\n };\r\n\r\n slots.push(unavailSlot);\r\n }//end else\r\n\r\n\r\n }//end if \r\n\r\n\r\n }); //end daySlot \r\n }); //end dateRange\r\n }); // end serviceSlot\r\n\r\n\r\n\r\n\r\n const blockedSlot = _.map(blockedResourceBooking, (blocked, index) => {\r\n\r\n\r\n if (blocked.resource_name === event.eventName) {\r\n let last_id = slots.length ? slots[slots.length - 1].id : 0;\r\n let blockedDate = new Date(blocked.datetime);\r\n let blockedEndDate = new Date(blocked.end_datetime);\r\n let blockedDate_start_min = blockedDate.getHours() * 60 + blockedDate.getMinutes();\r\n let blockedDate_end_min = blockedEndDate.getHours() * 60 + blockedEndDate.getMinutes();\r\n let today = new Date();\r\n let today_min = today.getHours() * 60 + today.getMinutes();\r\n let status;\r\n\r\n if (blockedDate < today) {\r\n status = true\r\n } else if (moment(blockedDate).format(\"YYYY/MM/DD\") === moment(today).format(\"YYYY/MM/DD\")) {\r\n status = true;\r\n } else {\r\n status = false;\r\n }\r\n let blockedAvailSlot = {\r\n isAvailable: false,\r\n start: new Date(blockedDate),\r\n end: new Date(blockedEndDate),\r\n price: blocked.price,\r\n id: blocked.id, //last_id > 0 ? last_id + 1 : index,\r\n desc: blocked.full_describe,\r\n blocked: true,\r\n eventId: event.eventId,\r\n eventName: event.eventName,\r\n resourceId: blocked.resource_id,\r\n past: status,\r\n start_min: blockedDate_start_min,\r\n end_min: blockedDate_end_min,\r\n title: event.eventName,\r\n card: 0,\r\n blocked_card: card,\r\n duration: ((blocked.duration / 60) / 24), //calculation made as duration is returned in minutes e.g (1440)\r\n type: service.duration_unit\r\n };\r\n\r\n slots.push(blockedAvailSlot);\r\n\r\n return blockedAvailSlot;\r\n }\r\n return blocked\r\n });\r\n\r\n\r\n\r\n const bookedSlot = _.map(serviceBooking, (booked, i) => {\r\n\r\n\r\n let lastId = slots.length ? slots[slots.length - 1].id : 0;\r\n let today = new Date();\r\n let today_min = today.getHours() * 60 + today.getMinutes();\r\n let status;\r\n let bookedDate = new Date(booked.datetime);\r\n let bookedEndDate = new Date(booked.end_datetime);\r\n let bookedDate_start_min = bookedDate.getHours() * 60 + bookedDate.getMinutes();\r\n let bookedDate_end_min = bookedEndDate.getHours() * 60 + bookedEndDate.getMinutes();\r\n\r\n const tenant = _.find(\r\n tenants,\r\n member => member.email === booked.client_email\r\n );\r\n let slotDetail = tenant\r\n ? `${tenant.firstName} ${\" \"} ${tenant.lastName}` : \"\";\r\n\r\n if (bookedDate < today) {\r\n status = true\r\n } else if (moment(bookedDate).format(\"YYYY/MM/DD\") === moment(today).format(\"YYYY/MM/DD\")) {\r\n status = true;\r\n } else {\r\n status = false;\r\n }\r\n\r\n let bookedAvailSlot = {\r\n isAvailable: false,\r\n start: new Date(bookedDate),\r\n end: new Date(bookedEndDate),\r\n price: booked.price,\r\n id: booked.id, // lastId > 0 ? lastId + 1 : i,\r\n desc: slotDetail,\r\n booked: true,\r\n eventId: event.eventId,\r\n eventName: event.eventName,\r\n past: status,\r\n start_min: bookedDate_start_min,\r\n end_min: bookedDate_end_min,\r\n card: card,\r\n tenant: tenant,\r\n title: event.eventName,\r\n questions: booked.questions,\r\n answers: booked.answers_summary,\r\n service_name: booked.service_name,\r\n duration: booked.duration,\r\n type: service.duration_unit,\r\n //allDay: true\r\n };\r\n\r\n slots.push(bookedAvailSlot);\r\n return bookedAvailSlot;\r\n });\r\n\r\n\r\n\r\n const eventsSlotsData = {\r\n slots: slots\r\n };\r\n\r\n return eventsSlotsData;\r\n\r\n }); //end eventsSlots map\r\n\r\n\r\n\r\n\r\n\r\n\r\n let slotsData = []\r\n\r\n\r\n let booked_taged = 0;\r\n const eventsSlot = _.map(slots, slot => {\r\n if (!_.isUndefined(slot.booked) && slot.booked === true) {\r\n booked_taged = booked_taged + 1;\r\n let data = {\r\n id: slot.id,\r\n isAvailable: slot.isAvailable,\r\n booked: slot.booked,\r\n desc: slot.desc,\r\n end: slot.end,\r\n start: slot.start,\r\n start_min: slot.start_min,\r\n end_min: slot.end_min,\r\n eventId: slot.eventId,\r\n eventName: slot.eventName,\r\n tenant: slot.tenant,\r\n past: slot.past,\r\n card: slot.card,\r\n questions: slot.questions,\r\n answers: slot.answers,\r\n price: slot.price,\r\n service_name: slot.service_name,\r\n duration: slot.duration,\r\n title: slot.eventName,\r\n tag: booked_taged,\r\n type: service.duration_unit,\r\n //allDay: slot.allDay\r\n };\r\n\r\n\r\n slotsData.push(data);\r\n } //end if\r\n else {\r\n\r\n //uncoment to remove duplicate from slots list\r\n // let slot_dupl = _.find(slotsData, { start: slot.start, end: slot.end, start_min: slot.start_min, end_min: slot.end_min });\r\n\r\n // if (_.isUndefined(slot_dupl))\r\n // slotsData.push(slot);\r\n\r\n slotsData.push(slot);\r\n }\r\n }); //end eventsSlot\r\n\r\n\r\n let bookingList = _.map(_.union(bookedBookings, blockedBookings), o => {\r\n \r\n return {\r\n id: o.id,\r\n email: o.client_email,\r\n serviceId: o.service_id,\r\n name: o.client_name,\r\n resourceName: o.resource_name,\r\n startDate: dateFormat(o.datetime, \"dd/mm/yyyy\"),\r\n endDate: o.end_datetime,\r\n duration: o.duration,\r\n timeFrom: dateFormat(o.datetime, \"shortTime\"),\r\n timeTo: dateFormat(o.end_datetime, \"shortTime\"),\r\n questions: o.questions,\r\n answers: o.answers_summary,\r\n tenant: _.find(tenants, {\r\n email: o.client_email\r\n })\r\n };\r\n });\r\n\r\n\r\n\r\n var slotData = {\r\n events: events,\r\n slots: _.sortBy(slotsData, ['start'])\r\n };\r\n\r\n\r\n\r\n dispatch({ type: resourcesTypes.EVENTS_SLOTS_FETCHED, slotsData: slotData });\r\n dispatch({ type: resourcesTypes.RESOURCE_BOOKINGS_FETCHED, bookings: bookingList });\r\n\r\n callback(true);\r\n\r\n }\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n\r\n }\r\n}\r\n\r\n\r\n\r\nexport function fetchBookingQuestions(group_id, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n\r\n if (group_id) {\r\n const result = await engageBookingServices.getBookingQuestions(group_id);\r\n\r\n dispatch({ type: resourcesTypes.BOOKING_QUESTIONS_LOAD_SUCCESS, questions: result })\r\n\r\n callback(true);\r\n } else {\r\n dispatch({ type: resourcesTypes.BOOKING_QUESTIONS_LOAD_FAIL, status: false })\r\n\r\n callback(false);\r\n }\r\n\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction getDatesRange(startDate, endDate) {\r\n var dateRange = [];\r\n var currentDate = new Date(moment(startDate).format(\"YYYY-MM-DD\"));\r\n var end = new Date(moment(endDate).format(\"YYYY-MM-DD\"));\r\n\r\n let current = currentDate;\r\n for (var d = current; d <= end; d.setDate(d.getDate() + 1)) {\r\n dateRange.push(new Date(d));\r\n }\r\n\r\n return dateRange;\r\n}\r\n\r\n\r\n\r\n","//import _ from \"lodash\";\r\nimport * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\nconst initialState = Immutable({\r\n basket: { items: [] },\r\n bookingCompleted: false,\r\n bookingDetails: [],\r\n sendNotification: \"\",\r\n itemSelected: {},\r\n chargeType: \"\",\r\n financeManagerNotification: \"\",\r\n houseManagerNotification: \"\",\r\n actionStatus: \"\",\r\n actionType: \"\",\r\n actionMessage: \"\"\r\n});\r\n\r\nexport default function reduce(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.INITIAL_STATE:\r\n return state.merge({\r\n basket: undefined,\r\n bookingCompleted: false,\r\n bookingDetails: []\r\n });\r\n case types.ITEM_ADDED_TO_BASKET:\r\n return state.merge({\r\n basket: action.basket\r\n });\r\n case types.BASKET_LOADED_FROM_CACHE:\r\n return state.merge({\r\n basket: action.basket\r\n });\r\n case types.ITEM_REMOVED_FROM_BASKET:\r\n return state.merge({\r\n basket: action.basket\r\n });\r\n case types.BOOKING_COMPLETED:\r\n return state.merge({\r\n bookingDetails: action.details,\r\n bookingCompleted: true\r\n });\r\n case types.NOTIFICATION_SENT_SUCCESS:\r\n return state.merge({\r\n sendNotification: action.sendNotification\r\n });\r\n case types.FM_NOTIFICATION_SENT_SUCCESS:\r\n return state.merge({\r\n financeManagerNotification: action.sendNotification\r\n });\r\n case types.HM_NOTIFICATION_SENT_SUCCESS:\r\n return state.merge({\r\n houseManagerNotification: action.sendNotification\r\n });\r\n case types.ITEM_SELECTED:\r\n return state.merge({\r\n itemSelected: action.item\r\n });\r\n case types.CHARGE_TYPE_SET:\r\n return state.merge({\r\n chargeType: action.chargetype\r\n });\r\n case types.ACTION_SUCCESS:\r\n return state.merge({\r\n actionStatus: action.status\r\n });\r\n case types.ACTION_TYPE:\r\n return state.merge({\r\n actionType: action.transType\r\n });\r\n case types.ACTION_MESSAGE_SET:\r\n return state.merge({\r\n actionMessage: action.message\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getBasket(state) {\r\n return state.checkout.basket;\r\n}\r\n\r\nexport function getBookingStatus(state) {\r\n return state.checkout.bookingCompleted;\r\n}\r\n\r\nexport function getBookingDetails(state) {\r\n return state.checkout.bookingDetails;\r\n}\r\nexport function getChargeType(state) {\r\n return state.checkout.chargeType;\r\n}\r\n\r\nexport function getActionType(state) {\r\n return state.checkout.actionType;\r\n}\r\nexport function getActionStatus(state) {\r\n return state.checkout.actionStatus;\r\n}\r\nexport function getActionMessage(state) {\r\n return state.checkout.actionMessage;\r\n}","import _ from \"lodash\";\r\nimport * as types from \"./actionTypes\";\r\nimport checkoutService from \"../../services/BookingBugServices/CheckoutService\";\r\nimport meetingService from \"../../services/MeetingServices\";\r\nimport moment from \"moment\";\r\n\r\nimport * as resourcesSelectors from \"../Resources/reducer\";\r\nimport * as resourcesActions from \"../Resources/actions\";\r\nimport * as visitorSelectors from \"../Visitors/reducer\";\r\nimport * as visitorActions from \"../Visitors/actions\";\r\nimport * as tenantSelector from \"../Tenants/reducer\";\r\nimport * as pageEventSelectors from \"../PageEvents/reducer\";\r\nimport * as checkoutSelectors from \"./reducer\";\r\n\r\nexport function addItemToBasket(tenant, serviceId, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n //const state = getState();\r\n const eventId = resourcesSelectors.getEventId(getState());\r\n const queue = resourcesSelectors.getBasketQueue(getState());\r\n\r\n const serviceUnit = resourcesSelectors.getServiceUnit(getState());\r\n let items = [];\r\n\r\n if (serviceUnit === \"day\") {\r\n items = _.map(queue, item => {\r\n return {\r\n service_id: serviceId,\r\n date: item.start,\r\n event_id: eventId,\r\n member_id: tenant.bookingBugMemberId,\r\n duration: item.duration,\r\n units: item.units,\r\n questions: item.questions\r\n };\r\n });\r\n\r\n\r\n } else if (serviceUnit === \"minute\") {\r\n items = _.map(queue, item => {\r\n let hours = new Date(item.start).getHours() * 60;\r\n let min = hours + new Date(item.start).getMinutes();\r\n const time = min;\r\n const date = moment(item.start).format(\"YYYY-MM-DD\");\r\n\r\n let duration = item.end_min - item.start_min;\r\n\r\n return {\r\n service_id: serviceId,\r\n date: date,\r\n event_id: eventId,\r\n time: time,\r\n member_id: tenant.bookingBugMemberId,\r\n duration: duration,\r\n questions: item.questions\r\n };\r\n });\r\n\r\n\r\n }\r\n\r\n let bookingData = { items };\r\n\r\n const basket = await checkoutService.addToBasketGroup(\r\n eventId,\r\n tenant.bookingBugMemberId,\r\n serviceId,\r\n bookingData\r\n );\r\n\r\n dispatch({ type: types.ITEM_ADDED_TO_BASKET, basket });\r\n\r\n callback(true);\r\n\r\n\r\n // for (var index = 0; index < queue.length; index++) {\r\n // let hrs = new Date(queue[index].start).getHours() * 60;\r\n // let mins = hrs + new Date(queue[index].start).getMinutes();\r\n\r\n // const time = mins;\r\n // const date = dateFormat(queue[index].start, \"isoDate\");\r\n\r\n // const data = {\r\n // serviceId: serviceId,\r\n // date: date,\r\n // eventId: eventId,\r\n // time: time,\r\n // memberId: tenant.id\r\n // };\r\n\r\n // const basket = await checkoutService.addToBasket(\r\n // serviceId,\r\n // date,\r\n // eventId,\r\n // time,\r\n // tenant.bookingBugMemberId\r\n // );\r\n\r\n // dispatch({ type: types.ITEM_ADDED_TO_BASKET, basket });\r\n // }\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function removeItemFromBasket(id, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const currentBasket = checkoutSelectors.getBasket(getState());\r\n //const blockSlot = resourcesSelectors.getBlockSlotSelected(getState());\r\n const selectedItem = _.find(currentBasket, i => i.id === id);\r\n\r\n const data = await checkoutService.removeFromBasket(selectedItem.id);\r\n let basket = data.items;\r\n dispatch({ type: types.ITEM_REMOVED_FROM_BASKET, basket });\r\n callback(true);\r\n // dispatch({ type: types.ITEM_REMOVED_FROM_BASKET, basket });\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n };\r\n}\r\nexport function loadBasketFromCache(id) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const basket = await checkoutService.getBasket();\r\n\r\n if (basket) dispatch({ type: types.BASKET_LOADED_FROM_CACHE, basket });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\nexport function setChargeType(type, callback = () => { }) {\r\n return (dispatch, getState) => {\r\n try {\r\n dispatch({ type: types.CHARGE_TYPE_SET, chargetype: type });\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n console.error(error);\r\n }\r\n }\r\n}\r\n\r\nexport function completeCheckout(id, callback = () => { }) {\r\n return async (dispatch, getState) => {\r\n try {\r\n const checkoutData = await checkoutService.checkout(id);\r\n const details = checkoutData.bookings;\r\n\r\n dispatch(resourcesActions.setBookingCreated(details));\r\n\r\n const pageEvent = pageEventSelectors.getPageEvent(getState());\r\n const tenant = tenantSelector.getSelectedTenant(getState());\r\n\r\n const vist = visitorSelectors.getVisitor(getState());\r\n const carReg = visitorSelectors.getCarReg(getState());\r\n const serviceUnit = resourcesSelectors.getServiceUnit(getState());\r\n const chargeType = checkoutSelectors.getChargeType(getState());\r\n const block_selection = resourcesSelectors.getBlockSlotSelected(\r\n getState()\r\n );\r\n\r\n //let status = \"\";\r\n if (pageEvent === \"parking\") {\r\n const visitorDetails = { id: vist.id, regNumber: carReg };\r\n\r\n dispatch(visitorActions.addParkingDetails(visitorDetails));\r\n dispatch(visitorActions.getVisitorById(vist.id));\r\n }\r\n\r\n //re construct visitor object from Visitor to VisitorDto\r\n let visitor = {};\r\n if (vist)\r\n visitor = {\r\n id: vist.id,\r\n firstName: vist.firstName,\r\n surname: vist.surname,\r\n status: vist.status,\r\n email: vist.email,\r\n dueDate: vist.dueDate,\r\n companyName: vist.companyName,\r\n regNumber: carReg,\r\n meetingId: vist.meetingId,\r\n parking: vist.parking\r\n };\r\n\r\n let bookings = [];\r\n let temp_booking = [];\r\n\r\n if (serviceUnit === \"day\") {\r\n\r\n bookings = _.map(details, booking => {\r\n let stime = new Date(booking.datetime);\r\n let etime = new Date(booking.end_datetime);\r\n let start_min = stime.getHours() * 60 + stime.getMinutes();\r\n let end_min = etime.getHours() * 60 + etime.getMinutes();\r\n return {\r\n id: booking.id,\r\n resourceName: booking.resource_name,\r\n price: booking.price,\r\n date: booking.datetime,\r\n timeFrom: booking.datetime,\r\n timeTo: booking.end_datetime,\r\n start_min: start_min,\r\n end_min: end_min,\r\n serviceType: serviceUnit,\r\n resourceLink: _.get(booking, \"_links.resource.href\")\r\n };\r\n });\r\n\r\n\r\n _.map(bookings, item => {\r\n temp_booking.push(item);\r\n });\r\n } else if (serviceUnit === \"minute\") {\r\n bookings = _.map(details, booking => {\r\n\r\n let stime = new Date(booking.datetime);\r\n let etime = new Date(booking.end_datetime);\r\n\r\n let start_min = stime.getHours() * 60 + stime.getMinutes();\r\n let end_min = etime.getHours() * 60 + etime.getMinutes();\r\n return {\r\n id: booking.id,\r\n resourceName: booking.resource_name,\r\n price: booking.price,\r\n date: booking.datetime,\r\n timeFrom: moment(stime).format(\"YYYY-MM-DD HH:mm\"),\r\n timeTo: moment(etime).format(\"YYYY-MM-DD HH:mm\"),\r\n start_min: start_min,\r\n end_min: end_min,\r\n serviceType: serviceUnit,\r\n resourceLink: _.get(booking, \"_links.resource.href\")\r\n };\r\n });\r\n\r\n _.map(bookings, (item, index) => {\r\n let bookedItem = _.find(block_selection, selection => {\r\n return (\r\n moment(item.date).format(\"YYYY-MM-DD\") ===\r\n moment(selection.start).format(\"YYYY-MM-DD\") &&\r\n _.difference([item.start_min], selection.slotsTime).length === 0\r\n );\r\n });\r\n\r\n if (bookedItem && !_.isUndefined(bookedItem)) {\r\n let tmp = {\r\n id: item.id,\r\n resourceName: item.resourceName,\r\n price: item.price,\r\n date: bookedItem.start,\r\n timeFrom: bookedItem.start,\r\n timeTo: bookedItem.end\r\n };\r\n\r\n if (!_.find(temp_booking, o => o.timeFrom === tmp.timeFrom))\r\n temp_booking.push(tmp);\r\n\r\n return tmp;\r\n } else {\r\n temp_booking.push(item);\r\n return item;\r\n }\r\n });\r\n\r\n\r\n }//end if minutes \r\n\r\n\r\n\r\n\r\n //loop through and check if its a block time or event time slot\r\n\r\n var resourceBooked = {\r\n bookings: temp_booking,\r\n tenant: tenant,\r\n visitor: visitor,\r\n type: pageEvent,\r\n chargeType: chargeType\r\n };\r\n\r\n\r\n // const notify = await meetingService.resourceBookingNotification(\r\n // resourceBooked\r\n // );\r\n\r\n try {\r\n const notify = await meetingService.tenantResourceBookingNotification(\r\n resourceBooked\r\n );\r\n if (notify)\r\n dispatch({\r\n type: types.NOTIFICATION_SENT_SUCCESS,\r\n sendNotification: notify\r\n });\r\n else\r\n dispatch({\r\n type: types.NOTIFICATION_SENT_FAIL,\r\n sendNotification: notify\r\n });\r\n\r\n\r\n try {\r\n const hm_notify = await meetingService.houseManagerResourceBookingNotification(resourceBooked);\r\n\r\n if (hm_notify)\r\n dispatch({\r\n type: types.HM_NOTIFICATION_SENT_SUCCESS,\r\n houseManagerNotification: hm_notify\r\n });\r\n else\r\n dispatch({\r\n type: types.HM_NOTIFICATION_SENT_FAIL,\r\n houseManagerNotification: hm_notify\r\n });\r\n\r\n } catch (error) {\r\n // trigger a log facility\r\n // console.error(error)\r\n }\r\n\r\n if (chargeType === \"Account\") {\r\n try {\r\n const fm_notify = await meetingService.financeManagerResourceBookingNotification(resourceBooked);\r\n\r\n if (notify)\r\n dispatch({\r\n type: types.FM_NOTIFICATION_SENT_SUCCESS,\r\n financeManagerNotification: fm_notify\r\n });\r\n else\r\n dispatch({\r\n type: types.FM_NOTIFICATION_SENT_FAIL,\r\n financeManagerNotification: fm_notify\r\n });\r\n } catch (error) {\r\n // trigger a log facility\r\n // console.error(error)\r\n }\r\n }\r\n\r\n\r\n } catch (error) {\r\n //log errors here for email notifications\r\n // console.error(error)\r\n }\r\n\r\n\r\n dispatch({ type: types.CHECKOUT_COMPLETED, checkoutData });\r\n dispatch({ type: types.BOOKING_COMPLETED, details });\r\n\r\n callback(true);\r\n } catch (error) {\r\n callback(false);\r\n // console.error(error);\r\n }\r\n };\r\n}\r\n\r\n\r\nexport function getpaymentAuthorizeCode(callback = () => { }) {\r\n\r\n return async (dispatch, getState) => {\r\n try {\r\n const response = await checkoutService.makePayment(\"\");\r\n\r\n\r\n callback(true);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function SetActionType(trans) {\r\n return (dispatch, getState) => {\r\n try {\r\n dispatch({ type: types.ACTION_TYPE, transType: trans });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n\r\nexport function SetActionStatus(status) {\r\n return (dispatch, getState) => {\r\n try {\r\n dispatch({ type: types.ACTION_SUCCESS, status: status });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function SetActionMessage(message) {\r\n return (dispatch, getState) => {\r\n try {\r\n dispatch({ type: types.ACTION_MESSAGE_SET, message: message });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport moment from 'moment';\r\nimport Datepicker from 'react-datepicker'; //https://www.npmjs.com/package/reactjs-datepicker\r\nimport Flatpickr from 'react-flatpickr'; //https://chmln.github.io/flatpickr/examples/#time-picker\r\nimport autobind from 'react-autobind';\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\n\r\nimport ToggleButton from '../ToggleButton/ToggleButton';\r\nimport InputComponent from '../Input/Input';\r\nimport Button from '../Button/Button';\r\nimport AriaModal from 'react-aria-modal';\r\nimport DotNav from '../DotNav/DotNav';\r\nimport TenantAutoSuggest from '../TenantAutoSuggest/TenantCompanyAutoSuggest';\r\nimport { ServicesUnit } from '../../helpers/configHelper';\r\n\r\nimport * as resourceActions from '../../store/Resources/actions';\r\nimport * as resourceMonthlyActions from '../../store/ResourcesMonthly/actions';\r\nimport * as resourceSelectors from '../../store/Resources/reducer';\r\nimport * as checkoutActions from '../../store/Checkout/actions';\r\nimport * as checkoutSelectors from '../../store/Checkout/reducer';\r\nimport * as tenantActions from '../../store/Tenants/actions';\r\n\r\nimport * as serviceModuleActions from '../../store/ServiceModules/actions';\r\nimport '../../sass/components/EventModal/index.css';\r\n\r\nimport '../../sass/components/BigCalendar/flatpickr.min.css';\r\nimport '../../sass/components/ToggleButton/index.css';\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * Main Modal event, diferent modal states loaded as type is specified\r\n */\r\n\r\nconst calendarViews = {\r\n\tDay: 'day',\r\n\tWeek: 'week',\r\n\tWorkWeek: 'work_week',\r\n\tMonth: 'month'\r\n};\r\n/**Constant values for modale screens loaded */\r\nconst ModalScreenType = {\r\n\tCreateScreen: 'create',\r\n\tEditScreen: 'edit',\r\n\tBookingQuestionScreen: 'booking_question',\r\n\tCheckOut: 'checkout',\r\n\tBookingSuccess: 'booking_success',\r\n\tBookingError: 'booking_error',\r\n\tEditBookingQuestionScreen: 'edit_booking_question',\r\n\tBookingAttentionWarning: 'booking_attention_warning',\r\n\tBookingAttentionSuccess: 'booking_attention_success'\r\n};\r\n\r\nconst activeScreens = {\r\n\tscreens: [\r\n\t\t{ type: 'create', pages: [ 'create', 'booking_question', 'checkout' ] },\r\n\t\t{ type: 'edit', pages: [ 'edit', 'edit_booking_question' ] },\r\n\t\t{ type: 'create-checkout', pages: [ 'create', 'checkout' ] }\r\n\t]\r\n};\r\n\r\n/***Constant values for modal screen actions */\r\nconst TriggerTypes = {\r\n\tCreateBooking: 'create_booking',\r\n\tBlockBooking: 'block_booking',\r\n\tCancelBooking: 'cancel_booking',\r\n\tUpdateBooking: 'update_booking'\r\n};\r\n\r\nconst BookingQuestionFieldType = {\r\n\tSpecialInstructions: 'special_instructions',\r\n\tEventDescription: 'event_description',\r\n\tOther: 'questions'\r\n};\r\n\r\nconst EditFieldStatus = {\r\n\tEditing: 'editing',\r\n\tDiscarded: 'discarded'\r\n};\r\n\r\nconst EditButtonText = {\r\n\tEditReservation: 'Edit Reservation',\r\n\tCancelReservation: 'Cancel Reservation',\r\n\tSaveChanges: 'Save Changes',\r\n\tDiscardChanges: 'Discard Changes'\r\n};\r\n\r\nconst PaymentOptions = {\r\n\tAccount: 1,\r\n\tCard: 2\r\n};\r\n\r\nconst ActionMessages = {\r\n\tsuccess: 'You have successfully paid for this booking. A confirmation email will be sent to the relevant tenant.',\r\n\tfail: 'Sorry, your booking has been unsuccessfull',\r\n\tcancel_success: 'You have successfully cancelled this reservation.',\r\n\tcancel_fail: 'Unable to cancel this booking.'\r\n};\r\nclass EventModal extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tslots: this.props.slots,\r\n\t\t\tswitchActive: false,\r\n\t\t\taddTenantFormUsed: false,\r\n\t\t\ttimeFrom: new Date(moment(this.props.startDate)),\r\n\t\t\ttimeTo: new Date(moment(this.props.endDate)),\r\n\t\t\tspecialInstruction_chk: false,\r\n\t\t\tspecial_instructions: '',\r\n\t\t\tevent_description: '',\r\n\t\t\tmodalScreen: this.props.type,\r\n\t\t\tselecteSlotTimes: [],\r\n\t\t\tquestions: this.props.bookingQuestions ? this.props.bookingQuestions : [],\r\n\t\t\ttimeStep: this.props.timeStep,\r\n\t\t\tselectedEventId: '',\r\n\t\t\tallow_edit: !_.isUndefined(this.props.selectedSlot) ? !this.props.selectedSlot.past : false,\r\n\t\t\tslotDataRefreshed: false,\r\n\t\t\ttriggerAction: '',\r\n\t\t\tbooking_action_valid: false,\r\n\t\t\tfield_active: false,\r\n\t\t\tedit_status: undefined,\r\n\t\t\tedit_button_text: EditButtonText.EditReservation,\r\n\t\t\tcancel_button_text: EditButtonText.CancelReservation,\r\n\t\t\tcurrentSetBasketSlot: undefined,\r\n\t\t\tmemberId: '',\r\n\t\t\tselectedTenant: undefined,\r\n\t\t\tresources: '',\r\n\t\t\tselectedOption: null,\r\n\t\t\tactiveScreen: this.props.type\r\n\t\t\t\t? _.find(activeScreens.screens, (screenItem) => screenItem.type === this.props.type)\r\n\t\t\t\t: undefined,\r\n\t\t\tpayment_option_selected: false,\r\n\t\t\tpayment_type: '',\r\n\t\t\tbookingDataUpdated: false\r\n\t\t};\r\n\r\n\t\tthis.addTenantValidation = null;\r\n\t\tthis.props.dispatch(serviceModuleActions.getPortalSetting());\r\n\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\r\n\tcomponentDidMount() {\r\n\t\tconst { selectedSlot, bookingQuestions } = this.props;\r\n\t\tthis.addValidation();\r\n\r\n\t\tlet questions = [];\r\n\r\n\t\tif (\r\n\t\t\tthis.props.type === ModalScreenType.CreateScreen &&\r\n\t\t\tthis.props.bookingQuestions &&\r\n\t\t\tthis.props.bookingQuestions.length === 0\r\n\t\t) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tactiveScreen: _.find(activeScreens.screens, (screenItem) => screenItem.type === 'create-checkout')\r\n\t\t\t});\r\n\t\t}\r\n\t\t//set initial state for booking question state text filed on edit screen\r\n\t\tif (this.state.modalScreen === ModalScreenType.EditScreen && !_.isUndefined(selectedSlot)) {\r\n\t\t\tif (!_.isUndefined(selectedSlot.questions) && selectedSlot.questions.length > 0) {\r\n\t\t\t\tquestions = _.map(selectedSlot.questions, (que, i) => {\r\n\t\t\t\t\treturn { ...que, id: Number(i) };\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tquestions = _.map(bookingQuestions, (que) => {\r\n\t\t\t\t\treturn { ...que };\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tlet special_instr_field = _.find(questions, (q) => {\r\n\t\t\t\tlet field_name = _.split(q.name, ' ');\r\n\t\t\t\treturn _.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.SpecialInstructions;\r\n\t\t\t});\r\n\r\n\t\t\tlet event_descr_field = _.find(questions, (q) => {\r\n\t\t\t\tlet field_name = _.split(q.name, ' ');\r\n\t\t\t\treturn _.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.EventDescription;\r\n\t\t\t});\r\n\r\n\t\t\tlet event_descr_answer = event_descr_field\r\n\t\t\t\t? _.find(selectedSlot.answers, { question_id: event_descr_field.id })\r\n\t\t\t\t: undefined;\r\n\r\n\t\t\tlet descr_answer = !_.isUndefined(event_descr_answer)\r\n\t\t\t\t? event_descr_answer.answer ? event_descr_answer.answer : ''\r\n\t\t\t\t: '';\r\n\r\n\t\t\tlet special_instruct_answer = special_instr_field\r\n\t\t\t\t? _.find(selectedSlot.answers, { question_id: special_instr_field.id })\r\n\t\t\t\t: undefined;\r\n\r\n\t\t\tlet spec_answer = !_.isUndefined(special_instruct_answer) ? special_instruct_answer.answer : '';\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tevent_description: descr_answer,\r\n\t\t\t\tspecial_instructions: spec_answer\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\t// this.props.dispatch(resourceActions.setPaymentAction(undefined));\r\n\t\tthis.addTenantValidation.destroy();\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (\r\n\t\t\tprevState.switchActive !== this.state.switchActive &&\r\n\t\t\tprevState.switchActive === true &&\r\n\t\t\t!_.isUndefined(this.state.error)\r\n\t\t) {\r\n\t\t\tthis.setState({\r\n\t\t\t\terror: undefined,\r\n\t\t\t\terrorMessage: ''\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.state.edit_status !== prevState.edit_status) {\r\n\t\t\tif (!_.isUndefined(this.state.edit_status) && this.state.edit_status === EditFieldStatus.Discarded) {\r\n\t\t\t\tthis.reloadBookingQuestionsFields();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.state.switchActive !== prevState.switchActive && this.state.switchActive === true) {\r\n\t\t\t//this.formReset();\r\n\t\t\tthis.setState({\r\n\t\t\t\terror: undefined,\r\n\t\t\t\terrorMessage: ''\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.state.timeFrom !== prevState.timeFrom) {\r\n\t\t\tthis.handleTimeSelectionChanged(this.state.timeFrom, this.state.timeTo);\r\n\t\t}\r\n\t\tif (this.state.timeTo !== prevState.timeTo) {\r\n\t\t\tthis.handleTimeSelectionChanged(this.state.timeFrom, prevState.timeTo);\r\n\t\t}\r\n\r\n\t\tif (this.props.slots !== prevProps.slots) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tslots: this.props.slots\r\n\t\t\t});\r\n\r\n\t\t\tif (this.state.slotDataRefreshed === true && this.state.triggerAction === TriggerTypes.BlockBooking) {\r\n\t\t\t\tthis.handleBlockedResource(this.state.slotDataRefreshed, this.props.slots);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.state.payment_option_selected !== prevState.payment_option_selected && this.state.payment_option_selected === false){\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t payment_type: ''\r\n\t\t\t});\r\n\r\n\t\t this.props.dispatch(checkoutActions.setChargeType(\"\"));\r\n\t\t}\r\n\t}\r\n\taddValidation() {\r\n\t\tthis.addTenantValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// componentWillUnmount() {\r\n\t// this.addTenantValidation.destroy();\r\n\t// // this.formReset();\r\n\r\n\t// }\r\n\r\n\tvalidate(fromSubmit = false) {\r\n\t\tconst { selectedEventId } = this.state;\r\n\t\tthis.addTenantValidation.validate({ force: true });\r\n\r\n\t\tconst valid = this.addTenantValidation.isValid();\r\n\r\n\t\tthis.setState({\r\n\t\t\tmodalFormValid: valid,\r\n\t\t\taddTenantFormUsed: true\r\n\t\t});\r\n\r\n\t\tif (valid === true && fromSubmit === true) {\r\n\t\t\tthis.checkAvailability();\r\n\r\n\t\t\t//this.formReset();\r\n\t\t\tthis.setState({\r\n\t\t\t\taddTenantFormUsed: false\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tformReset() {\r\n\t\tthis.setState({\r\n\t\t\tcompanyName: '',\r\n\t\t\ttenant: '',\r\n\t\t\tresources: '',\r\n\t\t\terror: undefined,\r\n\t\t\tmessage: ''\r\n\t\t});\r\n\r\n\t\tthis.refs['tenant-auto-suggest'].getWrappedInstance().reset();\r\n\t\t//this.refs[\"formSelect-resources\"].setVal(\"\");\r\n\t\t//this.refs[\"formSelect-resources\"].getWrappedInstance().reset();\r\n\r\n\t\t$(this.refs.validate).get(0).reset();\r\n\r\n\t\tthis.addTenantValidation.destroy();\r\n\r\n\t\t// Reset all the select input components to the placeholder value\r\n\t\tfor (let key in this.refs) {\r\n\t\t\tif (key.indexOf('formSelect') === 0) {\r\n\t\t\t\tthis.refs[key].reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.addValidation();\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tloadEventSlots(events, startDate, endDate) {\r\n\t\tconst { view } = this.props;\r\n\r\n\t\tconst { serviceId } = this.props;\r\n\r\n\t\tif (view === calendarViews.Week) {\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tresourceActions.getSelectedEventsSlots(\r\n\t\t\t\t\tevents,\r\n\t\t\t\t\tnew Date(moment(startDate).startOf('week')._d),\r\n\t\t\t\t\tnew Date(moment(endDate).endOf('week')._d),\r\n\t\t\t\t\tserviceId,\r\n\t\t\t\t\t(success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: undefined\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: true\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t} else if (view === calendarViews.Day) {\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tresourceActions.getSelectedEventsSlots(\r\n\t\t\t\t\tevents,\r\n\t\t\t\t\tnew Date(startDate._d),\r\n\t\t\t\t\tnew Date(startDate._d),\r\n\t\t\t\t\tserviceId,\r\n\t\t\t\t\t(success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: undefined\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: true\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t} else if (view === calendarViews.Month) {\r\n\t\t\tvar date_ = startDate.toDate(),\r\n\t\t\t\ty = date_.getFullYear(),\r\n\t\t\t\tm = date_.getMonth();\r\n\r\n\t\t\tvar startDay = new Date(y, m, 1);\r\n\t\t\tvar endDay = new Date(y, m + 1, 0);\r\n\r\n\t\t\tstartDay = moment(startDay).subtract(7, 'd');\r\n\t\t\tendDay = moment(endDay).add(this.props.max_day_bookings, 'd');\r\n\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tresourceMonthlyActions.getSelectedEventsSlots(\r\n\t\t\t\t\tevents,\r\n\t\t\t\t\tnew Date(startDay._d),\r\n\t\t\t\t\tnew Date(endDay._d),\r\n\t\t\t\t\tserviceId,\r\n\t\t\t\t\t(success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: undefined\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: true\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\thandleClick() {\r\n\t\tthis.setState({\r\n\t\t\t// switchActive: !this.state.switchActive === true ? false : true,\r\n\t\t\tswitchActive: !this.state.switchActive\r\n\t\t});\r\n\t}\r\n\r\n\t//Delete Modal section\r\n\r\n\t//Edit Modal section\r\n\thandleEditBooking() {\r\n\t\tconst { selectedSlot, bookingQuestions } = this.props;\r\n\r\n\t\tlet slot_questions = _.map(selectedSlot.questions, (que) => {\r\n\t\t\treturn que;\r\n\t\t});\r\n\t\tlet slot_answers = selectedSlot.answers;\r\n\r\n\t\tif (_.isUndefined(selectedSlot.questions) || slot_questions.length === 0) {\r\n\t\t\tif (bookingQuestions.length > 0) {\r\n\t\t\t\tslot_questions = bookingQuestions;\r\n\t\t\t\tslot_answers = _.map(slot_questions, (q) => {\r\n\t\t\t\t\treturn { question_id: q.id, answer: '' };\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet questions = _.map(\r\n\t\t\t_.map(bookingQuestions, (o) => {\r\n\t\t\t\tlet other_field = 'question_' + o.id;\r\n\t\t\t\tlet field_name = _.split(o.name, ' ');\r\n\t\t\t\tif (_.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.SpecialInstructions) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\tanswer: this.state.special_instructions,\r\n\t\t\t\t\t\tname: o.name\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (_.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.EventDescription) {\r\n\t\t\t\t\treturn { id: o.id, answer: this.state.event_description, name: o.name };\r\n\t\t\t\t} else\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\tanswer: this.state[other_field],\r\n\t\t\t\t\t\tname: o.name\r\n\t\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\t(que) => {\r\n\t\t\t\tlet field = 'question_' + que.id;\r\n\t\t\t\tlet check_que = _.find(slot_questions, { name: que.name });\r\n\t\t\t\tlet answer = _.find(slot_answers, { question_id: que.id });\r\n\t\t\t\tlet field_name = _.split(que.name, ' ');\r\n\t\t\t\tlet isSpecialInstructionField =\r\n\t\t\t\t\t_.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.SpecialInstructions;\r\n\t\t\t\tlet isEventDescriptionField =\r\n\t\t\t\t\t_.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.EventDescription;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t!_.isUndefined(check_que) &&\r\n\t\t\t\t\t_.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.SpecialInstructions &&\r\n\t\t\t\t\t!_.isUndefined(this.state.special_instructions)\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { id: answer.question_id, answer: this.state.special_instructions };\r\n\t\t\t\t} else if (\r\n\t\t\t\t\t!_.isUndefined(check_que) &&\r\n\t\t\t\t\t_.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.EventDescription &&\r\n\t\t\t\t\t!_.isUndefined(this.state.event_description)\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { id: answer.question_id, answer: this.state.event_description };\r\n\t\t\t\t} else if (!_.isUndefined(check_que) && !_.isUndefined(this.state[field])) {\r\n\t\t\t\t\treturn { id: que.id, answer: que.answer };\r\n\t\t\t\t} else if (_.isUndefined(check_que) && !_.isUndefined(que)) {\r\n\t\t\t\t\tlet other_field = 'question_' + que.id;\r\n\r\n\t\t\t\t\tif (!_.isUndefined(this.state[other_field])) {\r\n\t\t\t\t\t\treturn { id: que.id, answer: this.state[other_field] };\r\n\t\t\t\t\t} else if (isSpecialInstructionField === true && this.state.special_instructions !== '') {\r\n\t\t\t\t\t\treturn { id: que.id, answer: this.state.special_instructions };\r\n\t\t\t\t\t} else if (isEventDescriptionField === true && this.state.event_description !== '') {\r\n\t\t\t\t\t\treturn { id: que.id, answer: this.state.event_description };\r\n\t\t\t\t\t} else return undefined;\r\n\t\t\t\t} else return undefined;\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tlet data = {\r\n\t\t\tid: selectedSlot.id,\r\n\t\t\tquestions: _.filter(questions, (q) => !_.isUndefined(q))\r\n\t\t};\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tresourceActions.updateBookingResource(data, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\tslotDataRefreshed: true,\r\n\t\t\t\t\t\ttriggerAction: TriggerTypes.UpdateBooking,\r\n\t\t\t\t\t\tsuccess: success,\r\n\t\t\t\t\t\tmessage: 'Booking updated successfully',\r\n\t\t\t\t\t\tfield_active: false,\r\n\t\t\t\t\t\tedit_status: undefined\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.props.modalActionCompleted('update', success);\r\n\r\n\t\t\t\t\t//this.reloadBookingQuestionsFields();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tfield_active: false,\r\n\t\t\t\t\t\tedit_status: 'discarded',\r\n\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\tsuccess: false,\r\n\t\t\t\t\t\tmessage: 'Unable to complete request.'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tthis.setState({\r\n\t\t\tedit_button_text: EditButtonText.EditReservation,\r\n\t\t\tcancel_button_text: EditButtonText.CancelReservation\r\n\t\t});\r\n\t}\r\n\r\n\t//Create modal section\r\n\r\n\thandleTimeToChange(val) {\r\n\t\tthis.setState({\r\n\t\t\ttimeTo: val[0]\r\n\t\t});\r\n\t}\r\n\thandleTimeFromChange(val) {\r\n\t\tthis.setState({\r\n\t\t\ttimeFrom: val[0]\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleChange() {\r\n\t\tthis.setState({\r\n\t\t\tspecialInstruction_chk: !this.state.specialInstruction_chk\r\n\t\t});\r\n\t}\r\n\thandleChange(e) {\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\t}\r\n\r\n\thandleCreateClick() {}\r\n\thandleTimeSelectionChanged(timeFrom, timeTo) {\r\n\t\tconst { view, slots, startDate, timeStep, basketQueue, selectedSlot } = this.props;\r\n\t\tconst { selectedOption } = this.state;\r\n\t\tif (view === calendarViews.Day || view === calendarViews.Week || view === calendarViews.WorkWeek) {\r\n\t\t\tif (selectedOption) {\r\n\t\t\t\tlet event = selectedOption.target.value;\r\n\t\t\t\tlet selectedSlotTimes = [];\r\n\t\t\t\tlet slotAvailable = true;\r\n\r\n\t\t\t\tlet time_from = new Date(timeFrom);\r\n\t\t\t\tlet time_to = new Date(timeTo);\r\n\r\n\t\t\t\tlet timeFrom_min = time_from.getHours() * 60 + time_from.getMinutes();\r\n\t\t\t\tlet timeTo_min = time_to.getHours() * 60 + time_to.getMinutes();\r\n\t\t\t\tlet times = _.range(timeFrom_min, timeTo_min, timeStep);\r\n\r\n\t\t\t\tselectedSlotTimes = _.filter(\r\n\t\t\t\t\t_.filter(slots, (s) => {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\ts.eventId === event &&\r\n\t\t\t\t\t\t\tmoment(s.start).format('YYYY/MM/DD') === moment(startDate).format('YYYY/MM/DD')\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(t) => {\r\n\t\t\t\t\t\treturn !_.isUndefined(_.find(times, (o) => o === t.start_min));\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tlet price = 0;\r\n\t\t\t\tlet time_data = _.map(selectedSlotTimes, (s) => {\r\n\t\t\t\t\tprice += s.price;\r\n\t\t\t\t});\r\n\t\t\t\tif (times.length !== selectedSlotTimes.length) {\r\n\t\t\t\t\tslotAvailable = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage:\r\n\t\t\t\t\t\t\t'This resource is not available for the desired dates. Please select alternative dates or resource.'\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terror: undefined,\r\n\t\t\t\t\t\terrorMessage: ''\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tlet totalPrice = 0;\r\n\t\t\t\t\tif (selectedSlotTimes && selectedSlotTimes.length > 0 && slotAvailable === true) {\r\n\t\t\t\t\t\t_.map(selectedSlotTimes, (s) => {\r\n\t\t\t\t\t\t\ttotalPrice += s.price;\r\n\r\n\t\t\t\t\t\t\treturn s;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (totalPrice === 0) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tpayment_option_selected: true,\r\n\t\t\t\t\t\t\t\tpayment_type: 1\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet slotData = {\r\n\t\t\t\t\tisAvailable: slotAvailable,\r\n\t\t\t\t\tstart: time_from,\r\n\t\t\t\t\tend: time_to,\r\n\t\t\t\t\tprice: price,\r\n\t\t\t\t\tstart_min: timeFrom_min,\r\n\t\t\t\t\tend_min: timeTo_min,\r\n\t\t\t\t\tduration: timeTo_min - timeFrom_min\r\n\t\t\t\t};\r\n\t\t\t\tif (selectedSlot) {\r\n\t\t\t\t\tlet slotUpadted = _.map(basketQueue, (b) => {\r\n\t\t\t\t\t\tif (b.id === selectedSlot.id) {\r\n\t\t\t\t\t\t\treturn { ...b, ...slotData };\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn b;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tlet newBasketData = _.find(slotUpadted, { id: selectedSlot.id });\r\n\r\n\t\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\t\tresourceActions.updateBasketQueue(newBasketData, (success) => {\r\n\t\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tcurrentSetBasketSlot: newBasketData\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tselectedSlotTimes: selectedSlotTimes,\r\n\t\t\t\t\tselectedResoucreisAvailable: slotAvailable\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\thandleSelectChange(selectedOption) {\r\n\t\tthis.setState({ selectedOption });\r\n\r\n\t\tconst { slots, startDate, timeStep, view, selectedSlot } = this.props;\r\n\t\tconst { timeFrom, timeTo } = this.state;\r\n\r\n\t\tlet event = selectedOption.target.value;\r\n\t\tlet selectedSlotTimes = [];\r\n\t\tlet slotAvailable = false;\r\n\t\tlet availableCounter = 0;\r\n\t\tlet totalPrice = 0;\r\n\r\n\t\tif (view === calendarViews.Month) {\r\n\t\t\tvar eventSlots = _.filter(slots, { eventId: event });\r\n\r\n\t\t\tvar selectedSlotDays = _.filter(eventSlots, (item) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tmoment(item.start) >= moment(selectedSlot.start) && moment(item.start) < moment(selectedSlot.end)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tvar daySlots = _.map(selectedSlotDays, (daySlot) => {\r\n\t\t\t\tif (!daySlot.isAvailable) {\r\n\t\t\t\t\tslotAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tavailableCounter += 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//remove this when rectified in booking bug, amount presented in pound not in pence\r\n\t\t\t\tlet price = 0;\r\n\t\t\t\tif (!_.isUndefined(daySlot.price) && daySlot.isAvailable === true) price = daySlot.price * 100;\r\n\r\n\t\t\t\treturn { ...daySlot, price: price };\r\n\t\t\t});\r\n\t\t\t//recheck slot availability\r\n\t\t\tif (selectedSlot.duration === daySlots.length && selectedSlot.duration === availableCounter) {\r\n\t\t\t\tslotAvailable = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\t(!slotAvailable && selectedSlot.duration !== daySlots.length) ||\r\n\t\t\t\t(!slotAvailable && selectedSlot.duration === daySlots.length)\r\n\t\t\t) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\terror: true,\r\n\t\t\t\t\terrorMessage:\r\n\t\t\t\t\t\t'This resource is not available for the desired dates. Please select alternative dates or resource.'\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\terror: undefined,\r\n\t\t\t\t\terrorMessage: ''\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//TODO refactor this based on bookingbug above price rectified\r\n\t\t\tselectedSlotTimes = daySlots;\r\n\r\n\t\t\tvar timeData = _.map(selectedSlotTimes, (s) => {\r\n\t\t\t\ttotalPrice += s.price;\r\n\r\n\t\t\t\treturn s;\r\n\t\t\t});\r\n\r\n\t\t\tif (totalPrice === 0) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tpayment_option_selected: true,\r\n\t\t\t\t\tpayment_type: 1\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (view === calendarViews.Day || view === calendarViews.Week || view === calendarViews.WorkWeek) {\r\n\t\t\tlet time_from = new Date(timeFrom);\r\n\t\t\tlet time_to = new Date(timeTo);\r\n\r\n\t\t\tlet timeFrom_min = time_from.getHours() * 60 + time_from.getMinutes();\r\n\t\t\tlet timeTo_min = time_to.getHours() * 60 + time_to.getMinutes();\r\n\t\t\tlet times = _.range(timeFrom_min, timeTo_min, timeStep);\r\n\r\n\t\t\tselectedSlotTimes = _.filter(\r\n\t\t\t\t_.filter(slots, (s) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\ts.eventId === event &&\r\n\t\t\t\t\t\tmoment(s.start).format('YYYY/MM/DD') === moment(startDate).format('YYYY/MM/DD')\r\n\t\t\t\t\t);\r\n\t\t\t\t}),\r\n\t\t\t\t(t) => {\r\n\t\t\t\t\treturn !_.isUndefined(_.find(times, (o) => o === t.start_min));\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tif (times.length !== selectedSlotTimes.length) {\r\n\t\t\t\tslotAvailable = false;\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\terror: true,\r\n\t\t\t\t\terrorMessage:\r\n\t\t\t\t\t\t'This resource is not available for the desired dates. Please select alternative dates or resource.'\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t//make sure all slot selected are available to book\r\n\t\t\t\t_.map(selectedSlotTimes, (o) => {\r\n\t\t\t\t\tif (!o.isAvailable) {\r\n\t\t\t\t\t\tslotAvailable = false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tavailableCounter += 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//recheck slot availability\r\n\t\t\t\tif (times.length === selectedSlotTimes.length && selectedSlotTimes.length === availableCounter) {\r\n\t\t\t\t\tslotAvailable = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\terror: undefined,\r\n\t\t\t\t\terrorMessage: ''\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (selectedSlotTimes && selectedSlotTimes.length > 0 && slotAvailable === true) {\r\n\t\t\t\t\t_.map(selectedSlotTimes, (s) => {\r\n\t\t\t\t\t\ttotalPrice += s.price;\r\n\r\n\t\t\t\t\t\treturn s;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (totalPrice === 0) {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tpayment_option_selected: true,\r\n\t\t\t\t\t\t\tpayment_type: 1\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!slotAvailable) {\r\n\t\t\tthis.setState({\r\n\t\t\t\terror: true,\r\n\t\t\t\terrorMessage:\r\n\t\t\t\t\t'This resource is not available for the desired dates. Please select alternative dates or resource.'\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tselectedEventId: event,\r\n\t\t\tselectedSlotTimes: selectedSlotTimes,\r\n\t\t\tselectedResoucreisAvailable: slotAvailable\r\n\t\t});\r\n\r\n\t\tthis.props.dispatch(resourceActions.setEventSelected(event));\r\n\t}\r\n\r\n\thandleSelectedTenant(ten) {\r\n\t\tthis.setState({\r\n\t\t\tmemberId: ten.memberId,\r\n\t\t\tcompanyName: ten.companyName,\r\n\t\t\ttenant: ten.tenant,\r\n\t\t\tselectedTenant: ten\r\n\t\t});\r\n\r\n\t\tthis.props.dispatch(tenantActions.getSelectedTenant(ten.memberId));\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.state.addTenantFormUsed && this.validate();\r\n\t\t}, 0);\r\n\t}\r\n\tconvertToDecimal(value) {\r\n\t\tif (value >= 0) return parseFloat(value / 100).toFixed(2);\r\n\t\telse return 0;\r\n\t}\r\n\ttimeStepHelper(value) {\r\n\t\t// let hr = Number(value) / 60;\r\n\t}\r\n\r\n\t//helper to check for valid time set in minutes\r\n\tchecktimeMinValid(step, min) {\r\n\t\treturn Number(min) % step === 0;\r\n\t}\r\n\r\n\t//load booking questions text fields\r\n\tloadQuestionsTextField(field) {\r\n\t\tconst { questions } = this.state;\r\n\r\n\t\tlet special_instr_field = _.find(questions, (q) => {\r\n\t\t\tlet field_name = _.split(q.name, ' ');\r\n\t\t\treturn _.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.SpecialInstructions;\r\n\t\t});\r\n\r\n\t\tlet event_descr_field = _.find(questions, (q) => {\r\n\t\t\tlet field_name = _.split(q.name, ' ');\r\n\t\t\treturn _.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.EventDescription;\r\n\t\t});\r\n\r\n\t\tswitch (field) {\r\n\t\t\tcase BookingQuestionFieldType.SpecialInstructions:\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t);\r\n\t\t\tcase BookingQuestionFieldType.EventDescription:\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t);\r\n\r\n\t\t\tcase BookingQuestionFieldType.Other:\r\n\t\t\t\tif (!_.isUndefined(special_instr_field) || !_.isUndefined(event_descr_field)) {\r\n\t\t\t\t\treturn _.map(\r\n\t\t\t\t\t\t_.filter(questions, (q) => q.id !== special_instr_field.id && q.id !== event_descr_field.id),\r\n\t\t\t\t\t\t(o, index) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t} else return '';\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\t//load booking questions Edit text fields\r\n\tloadQuestionsEditTextField(field, status) {\r\n\t\tconst { selectedSlot, bookingQuestions } = this.props;\r\n\r\n\t\tlet questions = [];\r\n\r\n\t\tif (!_.isUndefined(selectedSlot.questions) && selectedSlot.questions.length > 0) {\r\n\t\t\tquestions = _.map(selectedSlot.questions, (que, i) => {\r\n\t\t\t\treturn { ...que, id: Number(i) };\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tquestions = _.map(bookingQuestions, (que) => {\r\n\t\t\t\treturn { ...que };\r\n\t\t\t});\r\n\t\t}\r\n\t\tlet special_instr_field = _.find(questions, (q) => {\r\n\t\t\tlet field_name = _.split(q.name, ' ');\r\n\t\t\treturn _.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.SpecialInstructions;\r\n\t\t});\r\n\r\n\t\tlet event_descr_field = _.find(questions, (q) => {\r\n\t\t\tlet field_name = _.split(q.name, ' ');\r\n\t\t\treturn _.join(field_name, '_').toLowerCase() === BookingQuestionFieldType.EventDescription;\r\n\t\t});\r\n\r\n\t\tswitch (field) {\r\n\t\t\tcase BookingQuestionFieldType.SpecialInstructions:\r\n\t\t\t\tlet special_instruct_answer = special_instr_field\r\n\t\t\t\t\t? _.find(selectedSlot.answers, { question_id: special_instr_field.id })\r\n\t\t\t\t\t: undefined;\r\n\r\n\t\t\t\tlet answer = !_.isUndefined(special_instruct_answer) ? special_instruct_answer.answer : '';\r\n\r\n\t\t\t\tif (this.state.allow_edit) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.handleChange(e)}\r\n\t\t\t\t\t\t\t\t\tname=\"special_instructions\"\r\n\t\t\t\t\t\t\t\t\tdisabled={!this.state.allow_edit || !this.state.field_active}\r\n\t\t\t\t\t\t\t\t\tvalue={this.state.special_instructions}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{answer}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\tcase BookingQuestionFieldType.EventDescription:\r\n\t\t\t\tlet event_descr_answer = event_descr_field\r\n\t\t\t\t\t? _.find(selectedSlot.answers, { question_id: event_descr_field.id })\r\n\t\t\t\t\t: undefined;\r\n\r\n\t\t\t\tlet descr_answer = !_.isUndefined(event_descr_answer)\r\n\t\t\t\t\t? event_descr_answer.answer ? event_descr_answer.answer : ''\r\n\t\t\t\t\t: '';\r\n\t\t\t\tif (this.state.allow_edit) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{descr_answer} \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\tcase BookingQuestionFieldType.Other:\r\n\t\t\t\tif (!_.isUndefined(special_instr_field) || !_.isUndefined(event_descr_field)) {\r\n\t\t\t\t\treturn _.map(\r\n\t\t\t\t\t\t_.filter(questions, (q, i) => {\r\n\t\t\t\t\t\t\treturn q.id !== special_instr_field.id && q.id !== event_descr_field.id;\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t(o, index) => {\r\n\t\t\t\t\t\t\tlet answer_val = _.find(selectedSlot.answers, { question_id: o.id });\r\n\t\t\t\t\t\t\tlet input_field_name = 'question_' + o.id;\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t this.handleChange(e)}\r\n\t\t\t\t\t\t\t\t\t\tuneditable={!this.state.allow_edit || !this.state.field_active}\r\n\t\t\t\t\t\t\t\t\t\tvalue={\r\n\t\t\t\t\t\t\t\t\t\t\t!_.isUndefined(this.state[input_field_name]) ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.state[input_field_name]\r\n\t\t\t\t\t\t\t\t\t\t\t) : !_.isUndefined(answer_val) ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\tanswer_val.answer\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t} else return
     
    ;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\treloadBookingQuestionsFields() {\r\n\t\tconst { selectedSlot, bookingQuestions, bookings } = this.props;\r\n\t\t//const { questions } = this.state;\r\n\r\n\t\tlet selected_booking = _.find(bookings, { id: selectedSlot.id });\r\n\r\n\t\tvar answers = selected_booking ? selected_booking.answers : []; // selectedSlot.answers;\r\n\t\tvar special_instr_que_field = '';\r\n\t\tvar event_descr_que_field = '';\r\n\r\n\t\tif (!_.isUndefined(bookingQuestions) && bookingQuestions.length > 0) {\r\n\t\t\tfor (var quest = 0; quest < bookingQuestions.length; quest++) {\r\n\t\t\t\tlet field = _.split(bookingQuestions[quest].name, ' ');\r\n\t\t\t\tlet field_name = _.join(field, '_').toLowerCase();\r\n\t\t\t\tlet que_field = 'question_' + bookingQuestions[quest].id;\r\n\t\t\t\tlet que_answer = _.find(answers, { question_id: bookingQuestions[quest].id });\r\n\t\t\t\tif (field_name === BookingQuestionFieldType.SpecialInstructions) {\r\n\t\t\t\t\tspecial_instr_que_field = 'question_' + bookingQuestions[quest].id;\r\n\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tspecial_instructions:\r\n\t\t\t\t\t\t\t!_.isUndefined(que_answer) &&\r\n\t\t\t\t\t\t\t!_.isUndefined(que_answer.answer) &&\r\n\t\t\t\t\t\t\tque_answer.answer !== null\r\n\t\t\t\t\t\t\t\t? que_answer.answer\r\n\t\t\t\t\t\t\t\t: ''\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (field_name === BookingQuestionFieldType.EventDescription) {\r\n\t\t\t\t\tevent_descr_que_field = 'question_' + bookingQuestions[quest].id;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tevent_description:\r\n\t\t\t\t\t\t\t!_.isUndefined(que_answer) &&\r\n\t\t\t\t\t\t\t!_.isUndefined(que_answer.answer) &&\r\n\t\t\t\t\t\t\tque_answer.answer !== null\r\n\t\t\t\t\t\t\t\t? que_answer.answer\r\n\t\t\t\t\t\t\t\t: ''\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t[que_field]:\r\n\t\t\t\t\t\t\t!_.isUndefined(que_answer) &&\r\n\t\t\t\t\t\t\t!_.isUndefined(que_answer.answer) &&\r\n\t\t\t\t\t\t\tque_answer.answer !== null\r\n\t\t\t\t\t\t\t\t? que_answer.answer\r\n\t\t\t\t\t\t\t\t: ''\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t//Block resource event\r\n\thandleBlockedResource(status, slots) {\r\n\t\tconst { selectedEventId, timeFrom, timeTo, startDate, endDate } = this.state;\r\n\t\tconst { timeStep, view } = this.props;\r\n\r\n\t\tif (status === true) {\r\n\t\t\tvar isValid = false;\r\n\r\n\t\t\tvar start_time;\r\n\t\t\tvar end_time;\r\n\r\n\t\t\tif (view === calendarViews.Day || view === calendarViews.Week || view === calendarViews.WorkWeek) {\r\n\t\t\t\tstart_time = moment.utc(timeFrom).format();\r\n\t\t\t\tend_time = moment.utc(timeTo).format();\r\n\r\n\t\t\t\tlet now = new Date();\r\n\t\t\t\tlet tmin = now.getHours() * 60 + now.getMinutes();\r\n\t\t\t\tlet stime = new Date(timeFrom);\r\n\t\t\t\tlet etime = new Date(timeTo);\r\n\t\t\t\tlet smin = stime.getHours() * 60 + stime.getMinutes();\r\n\t\t\t\tlet emin = etime.getHours() * 60 + etime.getMinutes();\r\n\r\n\t\t\t\tvar resourceSlots = _.filter(slots, (data) => {\r\n\t\t\t\t\treturn data.eventId === selectedEventId && (data.booked || data.blocked);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst checkSlots = _.filter(resourceSlots, (s) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(start_time).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\ts.eventId === selectedEventId &&\r\n\t\t\t\t\t\t\t(s.booked || s.blocked) &&\r\n\t\t\t\t\t\t\ts.start_min === smin &&\r\n\t\t\t\t\t\t\ts.end_min >= emin) ||\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(start_time).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\ts.eventId === selectedEventId &&\r\n\t\t\t\t\t\t\t(s.booked || s.blocked) &&\r\n\t\t\t\t\t\t\ts.start_min > smin &&\r\n\t\t\t\t\t\t\ts.end_min >= emin) ||\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(start_time).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\ts.eventId === selectedEventId &&\r\n\t\t\t\t\t\t\t(s.booked || s.blocked) &&\r\n\t\t\t\t\t\t\ts.start_min < smin &&\r\n\t\t\t\t\t\t\ts.end_min > smin) ||\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(start_time).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\ts.eventId === selectedEventId &&\r\n\t\t\t\t\t\t\t(s.booked || s.blocked) &&\r\n\t\t\t\t\t\t\ts.start_min === smin &&\r\n\t\t\t\t\t\t\ts.end_min <= emin) ||\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(start_time).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\ts.eventId === selectedEventId &&\r\n\t\t\t\t\t\t\t(s.booked || s.blocked) &&\r\n\t\t\t\t\t\t\ts.start_min > smin &&\r\n\t\t\t\t\t\t\ts.end_min > emin) ||\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(start_time).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\ts.eventId === selectedEventId &&\r\n\t\t\t\t\t\t\t(s.booked || s.blocked) &&\r\n\t\t\t\t\t\t\ts.start_min > smin &&\r\n\t\t\t\t\t\t\ts.end_min < emin)\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\t\t\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tprocessing: undefined\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (selectedEventId === '' || _.isUndefined(selectedEventId)) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tslotDataRefreshed: false,\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage: 'invalid resource'\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (\r\n\t\t\t\t\t!this.checktimeMinValid(timeStep, smin) ||\r\n\t\t\t\t\t!this.checktimeMinValid(timeStep, emin) ||\r\n\t\t\t\t\temin <= smin\r\n\t\t\t\t) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tslotDataRefreshed: false,\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage: 'invalid Date/Time specified'\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (moment(now).format('YYYY-MM-DD') === moment(timeFrom).format('YYYY-MM-DD') && smin < tmin) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tslotDataRefreshed: false,\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage: 'invalid Date/Time specified'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (checkSlots.length > 0) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tslotDataRefreshed: '',\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage: 'unable to block resource! active event.'\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisValid = true;\r\n\t\t\t\t}\r\n\t\t\t} else if (view === calendarViews.Month) {\r\n\t\t\t\tvar checkSlots = _.filter(slots, (data) => {\r\n\t\t\t\t\treturn data.eventId === selectedEventId && (data.booked || data.blocked);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar slotsEmpty = _.filter(checkSlots, (s) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(moment(s.start).toDate() > moment(timeFrom).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() > moment(timeTo).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.start).toDate() < moment(timeTo).toDate()) ||\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(timeFrom).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\tmoment(s.end).format('YYYY-MM-DD') === moment(timeTo).format('YYYY-MM-DD')) ||\r\n\t\t\t\t\t\t(moment(s.start).format('YYYY-MM-DD') === moment(timeFrom).format('YYYY-MM-DD') &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() > moment(timeTo).toDate()) ||\r\n\t\t\t\t\t\t(moment(s.start).toDate() <= moment(timeFrom).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() < moment(timeTo).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.start).toDate() < moment(timeTo).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() > moment(timeFrom).toDate()) ||\r\n\t\t\t\t\t\t(moment(s.start).toDate() < moment(timeFrom).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() > moment(timeTo).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.start).toDate() < moment(timeTo).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() > moment(timeFrom).toDate()) ||\r\n\t\t\t\t\t\t(moment(s.start).toDate() > moment(timeFrom).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() <= moment(timeTo).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.start).toDate() < moment(timeTo).toDate() &&\r\n\t\t\t\t\t\t\tmoment(s.end).toDate() > moment(timeFrom).toDate())\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (selectedEventId === '' || _.isUndefined(selectedEventId)) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage: 'invalid resource'\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (moment().format('YYYY-MM-DD') === moment(timeFrom).format('YYYY-MM-DD')) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage: 'Date not valid'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (slotsEmpty.length > 0) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage: 'invalid Date'\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisValid = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isValid === true) {\r\n\t\t\t\t\tstart_time = moment(timeFrom).format('YYYY-MM-DD');\r\n\t\t\t\t\tend_time = moment(timeTo).format('YYYY-MM-DD');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (isValid === true) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tprocessing: true,\r\n\t\t\t\t\terror: undefined,\r\n\t\t\t\t\terrorMessage: ''\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tresourceActions.blockResource(selectedEventId, start_time, end_time, (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tprocessing: undefined\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.props.modalActionCompleted('block', success);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\t\t\terrorMessage: 'unable to block resource!'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//Cancel Booking\r\n\tcancellationValid() {\r\n\t\tconst { selectedSlot, cancellationPeriod } = this.props;\r\n\t\tlet now = new Date();\r\n\r\n\t\tif (moment(now).isBefore(moment(selectedSlot.start))) {\r\n\t\t\tlet current_diff = moment.duration(moment(selectedSlot.start).diff(moment(now)));\r\n\t\t\tlet diff_min = current_diff.asMinutes().toFixed(0);\r\n\r\n\t\t\t//check if time in minutes is within cancellation span in minutes\r\n\t\t\tif (diff_min > cancellationPeriod) {\r\n\t\t\t\t//within calcellation period\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\t//exceeded cancellation period\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t//cancellation exceeded\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\thandleCancelBooking() {\r\n\t\tconst { selectedSlot } = this.props;\r\n\t\t// const { booking_action_valid } = this.state;\r\n\t\tif (!_.isUndefined(selectedSlot)) {\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tresourceActions.cancelBookingSingle(selectedSlot.id, 'None', (success) => {\r\n\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\tthis.props.modalActionCompleted('delete', success);\r\n\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.cancel_success));\r\n\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionStatus(true));\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\t\tmodalScreen: ModalScreenType.BookingSuccess\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.cancel_fail));\r\n\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionStatus(false));\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\t\tmodalScreen: ModalScreenType.BookingError\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\thandleCreateBooking() {\r\n\t\tconst { currentSetBasketSlot, selectedTenant } = this.state;\r\n\t\tconst { bookingQuestions, serviceId } = this.props;\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tcheckoutActions.addItemToBasket(selectedTenant, serviceId, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\t\tcheckoutActions.completeCheckout(selectedTenant.bookingBugMemberId, (checkoutSuccess) => {\r\n\t\t\t\t\t\t\tif (checkoutSuccess === true) {\r\n\t\t\t\t\t\t\t\tthis.props.modalActionCompleted('create', checkoutSuccess);\r\n\t\t\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.success));\r\n\t\t\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionStatus(true));\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\t\t\t\t// slotDataRefreshed: true,\r\n\t\t\t\t\t\t\t\t\tsuccess: success,\r\n\t\t\t\t\t\t\t\t\tmessage: 'Booking created successfully',\r\n\t\t\t\t\t\t\t\t\tmodalScreen: ModalScreenType.BookingSuccess\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.fail));\r\n\t\t\t\t\t\t\t\tthis.props.dispatch(checkoutActions.SetActionStatus(false));\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\t\t\t\t// slotDataRefreshed: true,\r\n\t\t\t\t\t\t\t\t\tsuccess: false,\r\n\t\t\t\t\t\t\t\t\tmessage: 'Unable to complete your request at the moment, please try again shortly',\r\n\t\t\t\t\t\t\t\t\tmodalScreen: ModalScreenType.BookingError\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\t// let questions = [];\r\n\r\n\t\t// _.map(bookingQuestions, que => {\r\n\t\t// let field = _.split(que.name, \" \");\r\n\t\t// let field_name = _.join(field, \"_\").toLowerCase();\r\n\r\n\t\t// if (field_name === BookingQuestionFieldType.SpecialInstructions && this.state.special_instructions !== \"\") {\r\n\t\t// questions.push({ id: que.id, answer: this.state.special_instructions });\r\n\t\t// } else if (field_name === BookingQuestionFieldType.EventDescription && this.state.event_description !== \"\") {\r\n\t\t// questions.push({ id: que.id, answer: this.state.event_description })\r\n\t\t// } else if (field_name !== BookingQuestionFieldType.SpecialInstructions || field_name !== BookingQuestionFieldType.EventDescription) {\r\n\t\t// let que_field = \"question_\" + que.id;\r\n\r\n\t\t// if (!_.isUndefined(this.state[que_field])) {\r\n\t\t// questions.push({ id: que.id, answer: this.state[que_field] });\r\n\t\t// }\r\n\t\t// }\r\n\t\t// });\r\n\r\n\t\t// let slot_data = { ...currentSetBasketSlot, questions };\r\n\r\n\t\t// this.props.dispatch(resourceActions.setSelectedSlot(slot_data, serviceId, success => {\r\n\t\t// if (success === true) {\r\n\r\n\t\t// this.props.dispatch(checkoutActions.addItemToBasket(selectedTenant, serviceId, addSuccess => {\r\n\t\t// if (addSuccess === true) {\r\n\r\n\t\t// this.props.dispatch(\r\n\t\t// checkoutActions.completeCheckout(selectedTenant.bookingBugMemberId, checkoutSuccess => {\r\n\t\t// if (checkoutSuccess === true) {\r\n\r\n\t\t// this.props.modalActionCompleted(\"create\", checkoutSuccess);\r\n\t\t// this.setState({\r\n\t\t// processing: undefined,\r\n\t\t// // slotDataRefreshed: true,\r\n\t\t// success: success,\r\n\t\t// message: \"Booking created successfully\",\r\n\t\t// modalScreen: ModalScreenType.BookingSuccess\r\n\t\t// });\r\n\r\n\t\t// } else {\r\n\t\t// this.setState({\r\n\t\t// processing: undefined,\r\n\t\t// // slotDataRefreshed: true,\r\n\t\t// success: false,\r\n\t\t// message: \"Unable to complete your request at the moment, please try again shortly\",\r\n\t\t// modalScreen: ModalScreenType.BookingError\r\n\t\t// });\r\n\t\t// }\r\n\t\t// }));\r\n\t\t// } else {\r\n\r\n\t\t// }\r\n\t\t// }))\r\n\t\t// } else {\r\n\r\n\t\t// }\r\n\t\t// }));\r\n\t}\r\n\r\n\tupdateBasketBookingQuestions() {\r\n\t\tconst { currentSetBasketSlot, selectedSlotTimes } = this.state;\r\n\t\tconst { bookingQuestions, serviceId } = this.props;\r\n\t\tlet totalPrice = this.calculateTotalPrice();\r\n\r\n\t\tlet questions = [];\r\n\r\n\t\tvar data = _.map(bookingQuestions, (que) => {\r\n\t\t\tlet field = _.split(que.name, ' ');\r\n\t\t\tlet field_name = _.join(field, '_').toLowerCase();\r\n\r\n\t\t\tif (field_name === BookingQuestionFieldType.SpecialInstructions && this.state.special_instructions !== '') {\r\n\t\t\t\tquestions.push({ id: que.id, answer: this.state.special_instructions });\r\n\t\t\t} else if (\r\n\t\t\t\tfield_name === BookingQuestionFieldType.EventDescription &&\r\n\t\t\t\tthis.state.event_description !== ''\r\n\t\t\t) {\r\n\t\t\t\tquestions.push({ id: que.id, answer: this.state.event_description });\r\n\t\t\t} else if (\r\n\t\t\t\tfield_name !== BookingQuestionFieldType.SpecialInstructions ||\r\n\t\t\t\tfield_name !== BookingQuestionFieldType.EventDescription\r\n\t\t\t) {\r\n\t\t\t\tlet que_field = 'question_' + que.id;\r\n\r\n\t\t\t\tif (!_.isUndefined(this.state[que_field])) {\r\n\t\t\t\t\tquestions.push({ id: que.id, answer: this.state[que_field] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet slot_data = { ...currentSetBasketSlot, questions };\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tresourceActions.setSelectedSlot(slot_data, serviceId, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tbookingDataUpdated: true\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t(this.state.payment_type && this.state.payment_type === PaymentOptions.Account) ||\r\n\t\t\t\t\t\ttotalPrice === 0\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tthis.handleCreateBooking();\r\n\t\t\t\t\t} else if (this.state.payment_type && this.state.payment_type === PaymentOptions.Card) {\r\n\t\t\t\t\t\tthis.handleCreateBookingWithPayment();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tcalculateTotalPrice() {\r\n\t\tconst { selectedSlotTimes, selectedResoucreisAvailable } = this.state;\r\n\r\n\t\tlet totalPrice = 0;\r\n\t\tif (selectedSlotTimes && selectedSlotTimes.length > 0 && selectedResoucreisAvailable === true) {\r\n\t\t\t_.map(selectedSlotTimes, (s) => {\r\n\t\t\t\ttotalPrice += s.price;\r\n\t\t\t\treturn s;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn totalPrice;\r\n\t}\r\n\r\n\thandleCreateBookingWithPayment(e) {\r\n\t\tconst { selectedTenant, currentSetBasketSlot } = this.state;\r\n\t\tconst { serviceId } = this.props;\r\n\r\n\t\t\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tcheckoutActions.addItemToBasket(selectedTenant, serviceId, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tprocessing: undefined\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.props.modalActionCompleted('payment', success);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tprocessing: undefined,\r\n\t\t\t\t\t\tsuccess: false,\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\tmessage: 'Unable to complete your request at the moment, please try again shortly',\r\n\t\t\t\t\t\tmodalScreen: ModalScreenType.BookingError\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t//check availability on create\r\n\tcheckAvailability() {\r\n\t\tconst { startDate, slots, timeStep, selectedSlot, bookingQuestions, view } = this.props;\r\n\t\tconst { timeFrom, timeTo, selectedEventId } = this.state;\r\n\r\n\t\tif (selectedEventId === '' || _.isUndefined(selectedEventId)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\terror: true,\r\n\t\t\t\terrorMessage: 'invalid resource'\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tvar eventSlots = _.filter(slots, { eventId: selectedEventId });\r\n\r\n\t\t\tif (view === calendarViews.Month) {\r\n\t\t\t\tvar slotAvailable = true;\r\n\r\n\t\t\t\tvar selectedSlotDays = _.filter(eventSlots, (item) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\tmoment(item.start) >= moment(selectedSlot.start) &&\r\n\t\t\t\t\t\tmoment(item.start) < moment(selectedSlot.end)\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet totalprice = 0;\r\n\t\t\t\tvar daySlots = _.map(selectedSlotDays, (daySlot) => {\r\n\t\t\t\t\tif (!daySlot.isAvailable) slotAvailable = false;\r\n\r\n\t\t\t\t\t//remove this when rectified in booking bug, amount presented in pound not in pence\r\n\t\t\t\t\t//let price = 0;\r\n\t\t\t\t\tif (!_.isUndefined(daySlot.price)) {\r\n\t\t\t\t\t\t// price = daySlot.price * 100;\r\n\t\t\t\t\t\ttotalprice += daySlot.price;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//return { ...daySlot, price: price };\r\n\r\n\t\t\t\t\treturn { ...daySlot };\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (slotAvailable && selectedSlot.duration === daySlots.length) {\r\n\t\t\t\t\tlet slot = {\r\n\t\t\t\t\t\tisAvailable: true,\r\n\t\t\t\t\t\tinBasket: false,\r\n\t\t\t\t\t\tid: selectedSlot.id,\r\n\t\t\t\t\t\tstart: moment(selectedSlot.start).format('YYYY-MM-DD'),\r\n\t\t\t\t\t\tend: moment(selectedSlot.end).format('YYYY-MM-DD'),\r\n\t\t\t\t\t\tprice: totalprice,\r\n\t\t\t\t\t\ttype: selectedSlot.action,\r\n\t\t\t\t\t\tduration: selectedSlot.duration,\r\n\t\t\t\t\t\tunits: 'day',\r\n\t\t\t\t\t\tactive: true\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tcurrentSetBasketSlot: slot,\r\n\t\t\t\t\t\tbooking_action_valid: true,\r\n\t\t\t\t\t\terror: undefined,\r\n\t\t\t\t\t\terrorMessage: '',\r\n\t\t\t\t\t\tmodalScreen:\r\n\t\t\t\t\t\t\tbookingQuestions && bookingQuestions.length > 2\r\n\t\t\t\t\t\t\t\t? ModalScreenType.BookingQuestionScreen\r\n\t\t\t\t\t\t\t\t: ModalScreenType.CheckOut\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage:\r\n\t\t\t\t\t\t\t'This resource is not available for the desired dates. Please select alternative dates or resource.'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlet time_from = new Date(timeFrom);\r\n\t\t\t\tlet time_to = new Date(timeTo);\r\n\r\n\t\t\t\tlet timeFrom_min = time_from.getHours() * 60 + time_from.getMinutes();\r\n\t\t\t\tlet timeTo_min = time_to.getHours() * 60 + time_to.getMinutes();\r\n\t\t\t\tlet start_date = moment(startDate);\r\n\t\t\t\tlet price = 0;\r\n\t\t\t\tlet times = _.range(timeFrom_min, timeTo_min, timeStep);\r\n\r\n\t\t\t\tvar slots_data = _.filter(eventSlots, (data) => {\r\n\t\t\t\t\tlet s_date = moment(new Date(data.start));\r\n\r\n\t\t\t\t\t// return start_date.format(\"YYYY-DD-MM\") === s_date.format(\"YYYY-DD-MM\") && data.eventId === selectedEventId;\r\n\t\t\t\t\treturn start_date.format('YYYY-DD-MM') === s_date.format('YYYY-DD-MM');\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//check there isnt booked item within slot selected\r\n\t\t\t\tlet isValid = 'true';\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\terror: undefined,\r\n\t\t\t\t\terrorMessage: ''\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar check_availaible = _.map(times, (data) => {\r\n\t\t\t\t\tvar avail = _.find(slots_data, (val) => {\r\n\t\t\t\t\t\treturn val.start_min === data && val.isAvailable === true;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn avail;\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//check time selected is available /\r\n\t\t\t\t//toDo: rework check_available data\r\n\r\n\t\t\t\tlet compare_selected_times = _.map(times, (time_val) => {\r\n\t\t\t\t\tif (check_availaible.length === 0) {\r\n\t\t\t\t\t\treturn isValid;\r\n\t\t\t\t\t} else if (check_availaible.length > 0) {\r\n\t\t\t\t\t\tif (_.isUndefined(_.find(check_availaible, { start_min: time_val }))) {\r\n\t\t\t\t\t\t\tisValid = false;\r\n\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//check each selected slot time is valid\r\n\t\t\t\tlet all_valid = true;\r\n\t\t\t\t_.map(compare_selected_times, (value) => {\r\n\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\tall_valid = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tcompare_selected_times.length === times.length &&\r\n\t\t\t\t\tcheck_availaible.length > 0 &&\r\n\t\t\t\t\tisValid &&\r\n\t\t\t\t\tall_valid\r\n\t\t\t\t) {\r\n\t\t\t\t\tlet slot = {\r\n\t\t\t\t\t\tisAvailable: true,\r\n\t\t\t\t\t\tinBasket: false,\r\n\t\t\t\t\t\tid: check_availaible[0].id,\r\n\t\t\t\t\t\tstart: timeFrom,\r\n\t\t\t\t\t\tend: timeTo,\r\n\t\t\t\t\t\tprice: price,\r\n\t\t\t\t\t\tstart_min: timeFrom_min,\r\n\t\t\t\t\t\tend_min: timeTo_min,\r\n\t\t\t\t\t\ttype: selectedSlot.action,\r\n\t\t\t\t\t\tactive: true,\r\n\t\t\t\t\t\tduration: selectedSlot.duration\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tcurrentSetBasketSlot: slot,\r\n\t\t\t\t\t\tbooking_action_valid: true,\r\n\t\t\t\t\t\terror: undefined,\r\n\t\t\t\t\t\terrorMessage: '',\r\n\t\t\t\t\t\tmodalScreen:\r\n\t\t\t\t\t\t\tbookingQuestions && bookingQuestions.length > 2\r\n\t\t\t\t\t\t\t\t? ModalScreenType.BookingQuestionScreen\r\n\t\t\t\t\t\t\t\t: ModalScreenType.CheckOut\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\terrorMessage:\r\n\t\t\t\t\t\t\t'This resource is not available for the desired time. Please select alternative times or resource.'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//Defined Modal View screens\r\n\r\n\t//Create view\r\n\tshowCreateModalView() {\r\n\t\tconst { handleCloseClick, resources, startDate, endDate, service, view } = this.props;\r\n\t\tconst {\r\n\t\t\ttimeFrom,\r\n\t\t\ttimeTo,\r\n\t\t\tswitchActive,\r\n\t\t\tselectedSlotTimes,\r\n\t\t\tquestions,\r\n\t\t\tselectedResoucreisAvailable\r\n\t\t} = this.state;\r\n\r\n\t\tlet resource_options = [];\r\n\r\n\t\tif (resources && resources.length > 0) {\r\n\t\t\tresource_options = _.map(resources, (o) => {\r\n\t\t\t\treturn { label: o.name, value: o.eventId };\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet totalPrice = 0;\r\n\r\n\t\tif (selectedSlotTimes && selectedSlotTimes.length > 0 && selectedResoucreisAvailable === true) {\r\n\t\t\t_.map(selectedSlotTimes, (s) => {\r\n\t\t\t\ttotalPrice += s.price;\r\n\r\n\t\t\t\treturn s;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{resource_options && (\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.handleSelectChange(val);\r\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\tthis.state.addTenantFormUsed && this.validate();\r\n\t\t\t\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t\t'data-parsley-required': true,\r\n\t\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please select a resource'\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{view === calendarViews.Month ? (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {}}\r\n\t\t\t\t\t\t\t\t\t\tplaceHolder=\"Date\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={moment(startDate).format('DD/MM/YYYY')}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {}}\r\n\t\t\t\t\t\t\t\t\t\tplaceHolder=\"Date\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={moment(endDate).format('DD/MM/YYYY')}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t {}}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceHolder=\"Date\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={moment(startDate).format('DD/MM/YYYY')}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t {}}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceHolder=\"Date\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={moment(endDate).format('DD/MM/YYYY')}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleTimeToChange(date);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t£{selectedSlotTimes && selectedSlotTimes.length > 0 ? (\r\n\t\t\t\t\t\t\t\t\tthis.convertToDecimal(selectedSlotTimes[0].price)\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t0\r\n\t\t\t\t\t\t\t\t)}{' '}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tTotal\r\n\t\t\t\t\t\t\t£{this.convertToDecimal(totalPrice)}\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t this.handleSelectedTenant(data)}\r\n\t\t\t\t\t\t\t\tdefaultTenantId={this.state.memberId !== '' ? this.state.memberId : undefined}\r\n\t\t\t\t\t\t\t\tclearableIfValid={true}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.state.processing === true && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{!switchActive ? (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{this.state.modalFormValid && (\r\n\t\t\t\t\t\t\t\t\t
    {/*

    Sending data To Server...

    */}
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{this.state.error &&\r\n\t\t\t\t\t\t\t\tthis.state.error === true && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.error && this.state.errorMessage}\r\n\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{this.state.modalFormValid && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{/*

    Sending data To Server...

    */}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{this.state.error &&\r\n\t\t\t\t\t\t\tthis.state.error === true && (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t

    {this.state.error && this.state.errorMessage}

    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{this.state.status &&\r\n\t\t\t\t\t\t\tthis.state.status === true && (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t

    completed

    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (this.state.selectedResoucreisAvailable === true) {\r\n\t\t\t\t\t\t\t\t\t\tlet events = _.map(resources, (o) => {\r\n\t\t\t\t\t\t\t\t\t\t\treturn { eventName: o.name, eventId: o.eventId };\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\tthis.loadEventSlots(events, startDate, endDate, this.props.serviceId);\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (switchActive === true) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tprocessing: true,\r\n\t\t\t\t\t\t\t\t\t\t\t\tmessage: ''\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tslotDataRefreshed: true,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttriggerAction: TriggerTypes.BlockBooking\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t\t\t\t\t\t} else if (switchActive === false) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tmodalScreen:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tquestions.length > 1\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ModalScreenType.BookingQuestionScreen\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ModalScreenType.CheckOut\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\t\t\t\t\t\terrorMessage: 'Unable to block, resource unavailable.'\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t//Create Modal Booking questions view\r\n\tshowBookingQuestionsView() {\r\n\t\tconst { handleCloseClick } = this.props;\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    {this.loadQuestionsTextField(BookingQuestionFieldType.Other)}
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tmodalScreen: ModalScreenType.CreateScreen\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tmodalScreen: ModalScreenType.CheckOut\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\thandlePaymentSelection(option) {\r\n\t\tconst pay_option = option.target.value;\r\n\t\tvar pay_label = option.target.label;\r\n\t\tthis.setState({\r\n\t\t\tpayment_option_selected: true,\r\n\t\t\tpayment_type: pay_option\r\n\t\t});\r\n\r\n\t\tthis.props.dispatch(checkoutActions.setChargeType(pay_label));\r\n\t}\r\n\r\n\t// completBookingOption() {\r\n\t// \tif (this.state.payment_type === PaymentOptions.Account) {\r\n\t// \t\tthis.handleCreateBooking();\r\n\t// \t} else if (this.state.payment_type === PaymentOptions.Card) {\r\n\t// \t\tthis.handleCreateBookingWithPayment();\r\n\t// \t}\r\n\t// }\r\n\r\n\t//Checkout view\r\n\tshowCheckoutView() {\r\n\t\tconst { handleCloseClick, bookingQuestions } = this.props;\r\n\t\tlet totalPrice = this.calculateTotalPrice();\r\n\t\tlet payment_option = [\r\n\t\t\t{ name: 'account', label: 'Account', value: 1 },\r\n\t\t\t{ name: 'card', label: 'Card', value: 2 }\r\n\t\t];\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{this.loadQuestionsTextField(BookingQuestionFieldType.EventDescription)}\r\n\t\t\t\t\t{this.loadQuestionsTextField(BookingQuestionFieldType.SpecialInstructions)}\r\n\t\t\t\t\t{totalPrice !== 0 ? (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t this.handlePaymentSelection(e)}\r\n\t\t\t\t\t\t\t\tvalue={this.state.payment_type.toString()}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{this.state.processing && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tmodalScreen:\r\n\t\t\t\t\t\t\t\t\t\tbookingQuestions && bookingQuestions.length > 2\r\n\t\t\t\t\t\t\t\t\t\t\t? ModalScreenType.BookingQuestionScreen\r\n\t\t\t\t\t\t\t\t\t\t\t: ModalScreenType.CreateScreen,\r\n\t\t\t\t\t\t\t\t\t\t\tpayment_option_selected : false\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tprocessing: true\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tthis.updateBasketBookingQuestions();\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t//Edit View\r\n\tshowEditModalView() {\r\n\t\tconst { handleCloseClick, selectedSlot, timeStep, view } = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!_.isUndefined(selectedSlot.tenant) ? (\r\n\t\t\t\t\t\t\t\t\t`${selectedSlot.tenant.firstName} ${selectedSlot.tenant.lastName}`\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t)}{' '}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{selectedSlot.type === ServicesUnit.Minute ? (\r\n\t\t\t\t\t\t\t\t\t\tmoment(selectedSlot.start).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tmoment(selectedSlot.start).format('DD/MM/YYYY')\r\n\t\t\t\t\t\t\t\t\t)}{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{selectedSlot.type === ServicesUnit.Minute ? (\r\n\t\t\t\t\t\t\t\t\t\tmoment(selectedSlot.end).format('HH:mm')\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tmoment(selectedSlot.end).format('DD/MM/YYYY')\r\n\t\t\t\t\t\t\t\t\t)}{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t{this.loadQuestionsEditTextField(BookingQuestionFieldType.EventDescription, '')}\r\n\t\t\t\t\t{this.loadQuestionsEditTextField(BookingQuestionFieldType.SpecialInstructions, '')}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{view === calendarViews.Month ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tTotal\r\n\t\t\t\t\t\t\t\t£{this.convertToDecimal(selectedSlot.price)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\t//Edit Booking questions View\r\n\tshowEditBookingQuestionsView() {\r\n\t\tconst { handleCloseClick, selectedSlot } = this.props;\r\n\r\n\t\tlet now = new Date();\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{this.loadQuestionsEditTextField(BookingQuestionFieldType.Other, '')}\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.state.processing && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{!_.isUndefined(this.state.success) && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{this.state.message}\r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (moment(now).isAfter(moment(selectedSlot.start))) {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tsuccess: false,\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Unable to complete request.',\r\n\t\t\t\t\t\t\t\t\t\tedit_button_text: EditButtonText.EditReservation,\r\n\t\t\t\t\t\t\t\t\t\tcancel_button_text: EditButtonText.CancelReservation,\r\n\t\t\t\t\t\t\t\t\t\tfield_active: false,\r\n\t\t\t\t\t\t\t\t\t\tallow_edit: false,\r\n\t\t\t\t\t\t\t\t\t\tedit_status: undefined\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif (!this.state.field_active) {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\tedit_button_text: EditButtonText.SaveChanges,\r\n\t\t\t\t\t\t\t\t\t\t\tcancel_button_text: EditButtonText.DiscardChanges,\r\n\t\t\t\t\t\t\t\t\t\t\tfield_active: true,\r\n\t\t\t\t\t\t\t\t\t\t\tsuccess: undefined,\r\n\t\t\t\t\t\t\t\t\t\t\tmessage: '',\r\n\t\t\t\t\t\t\t\t\t\t\tedit_status: EditFieldStatus.Editing\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\tprocessing: true\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.handleEditBooking();\r\n\t\t\t\t\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (moment(now).isAfter(moment(selectedSlot.start))) {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tsuccess: false,\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Unable to complete request.',\r\n\t\t\t\t\t\t\t\t\t\tcancel_button_text: EditButtonText.CancelReservation,\r\n\t\t\t\t\t\t\t\t\t\tedit_button_text: EditButtonText.EditReservation,\r\n\t\t\t\t\t\t\t\t\t\tfield_active: false,\r\n\t\t\t\t\t\t\t\t\t\tallow_edit: false\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif (this.state.field_active === true) {\r\n\t\t\t\t\t\t\t\t\t\tif (this.state.edit_status === EditFieldStatus.Editing) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tcancel_button_text: EditButtonText.CancelReservation,\r\n\t\t\t\t\t\t\t\t\t\t\t\tedit_button_text: EditButtonText.EditReservation,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield_active: false,\r\n\t\t\t\t\t\t\t\t\t\t\t\tsuccess: true,\r\n\t\t\t\t\t\t\t\t\t\t\t\tmessage: 'Changes discarded',\r\n\t\t\t\t\t\t\t\t\t\t\t\tedit_status: EditFieldStatus.Discarded\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmessage: ''\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}, 3000);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\tsuccess: undefined,\r\n\t\t\t\t\t\t\t\t\t\t\tmessage: '',\r\n\t\t\t\t\t\t\t\t\t\t\tmodalScreen: ModalScreenType.BookingAttentionWarning\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tmodalScreen: ModalScreenType.EditScreen\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\t//Success View\r\n\tshowSuccessView() {\r\n\t\tconst { handleCloseClick } = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.props.actionMessage ? this.props.actionMessage : ''}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\thandleCloseClick(true);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t//Error View\r\n\tshowErrorView() {\r\n\t\tconst { handleCloseClick } = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.props.actionMessage ? (\r\n\t\t\t\t\t\t\t\tthis.props.actionMessage\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t'Unable to complete your request at the moment, Please try again shortly'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\thandleCloseClick(true);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t//Warning View\r\n\tshowWarningView() {\r\n\t\tconst { handleCloseClick, selectedSlot } = this.props;\r\n\r\n\t\tlet now = new Date();\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t handleCloseClick(true)} />\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tYou’re about to cancel this booking. If you go ahead this action can not be undone.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{selectedSlot && selectedSlot.price > 0 ? this.cancellationValid() === true ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tThis booking can be cancelled free of charge. Do you wish to delete this booking?\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tThis booking can’t be cancelled free of charge. Do you wish to delete this booking?\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.state.processing && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (moment(now).isAfter(moment(selectedSlot.start))) {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tbooking_action_valid: false\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tprocessing: true\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\tthis.handleCancelBooking();\r\n\t\t\t\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tmodalScreen: ModalScreenType.EditBookingQuestionScreen\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { handleCloseClick, getApplicationNode, focus } = this.props;\r\n\r\n\t\tconst styles = {\r\n\t\t\tEventPopupStyle: {\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\talignItems: 'center',\r\n\t\t\t\tjustifyContent: 'space-around'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\tmethod={this.state.payment_type === 2 ? 'POST' : ''}\r\n\t\t\t\t\taction={this.state.payment_type === 2 ? 'https://secure-test.worldpay.com/wcc/purchase' : ''}\r\n\t\t\t\t>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{/********* create modal screen **************/}\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.CreateScreen ? this.showCreateModalView() : ''}\r\n\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.BookingQuestionScreen ? (\r\n\t\t\t\t\t\t\tthis.showBookingQuestionsView()\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{/********* checkout modal screen **************/}\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.CheckOut ? this.showCheckoutView() : ''}\r\n\r\n\t\t\t\t\t\t{/********* success modal screen **************/}\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.BookingSuccess ? this.showSuccessView() : ''}\r\n\r\n\t\t\t\t\t\t{/********* error modal screen **************/}\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.BookingError ? this.showErrorView() : ''}\r\n\r\n\t\t\t\t\t\t{/********* Edit modal screen **************/}\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.EditScreen ? this.showEditModalView() : ''}\r\n\r\n\t\t\t\t\t\t{/********* booking question modal screen **************/}\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.EditBookingQuestionScreen ? (\r\n\t\t\t\t\t\t\tthis.showEditBookingQuestionsView()\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{/************** Delete Modal ********************************/}\r\n\t\t\t\t\t\t{this.state.modalScreen === ModalScreenType.BookingAttentionWarning ? (\r\n\t\t\t\t\t\t\tthis.showWarningView()\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nEventModal.propTypes = {\r\n\t/**Screen type value to specify current screen loaded */\r\n\ttype: PropTypes.string\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tresourceBlocked: resourceSelectors.getResourceBlocked(state),\r\n\t\tservicesSlots: resourceSelectors.getServicesSlots(state),\r\n\t\tbasketQueue: resourceSelectors.getBasketQueue(state),\r\n\t\tslots: resourceSelectors.getSelectedEventsSlots(state),\r\n\t\tbookings: resourceSelectors.getBookings(state),\r\n\t\tbasketItems: checkoutSelectors.getBasket(state),\r\n\t\tbookingSlot: resourceSelectors.getBlockSlotSelected(state),\r\n\t\tactionType: checkoutSelectors.getActionType(state),\r\n\t\tactionStatus: checkoutSelectors.getActionStatus(state),\r\n\t\tactionMessage: checkoutSelectors.getActionMessage(state),\r\n\t\tserviceUnit: resourceSelectors.getServiceUnit(state)\r\n\t};\r\n}\r\n\r\nexport default connect(mapStateToProps)(EventModal);\r\n","import React, { Component } from 'react';\r\nimport Popover from 'react-tiny-popover';\r\nimport autobind from 'react-autobind';\r\nimport moment from 'moment';\r\nimport _ from 'lodash';\r\n\r\nconst custom_card_colours = [\r\n\t{ card: 0, color: '#abadb0', border: '#abadb0' },\r\n\t{ card: 1, color: '#0ea610', border: '#0ea610' },\r\n\t{ card: 2, color: '#fa4b2e', border: '#fa4b2e' },\r\n\t{ card: 3, color: '#009cc4', border: '#009cc4' }\r\n];\r\n\r\nconst custom_cards = [\r\n\t{ card: 0, color: '#ffffff', border: '#009cc4', borderPast: '#7fcee2' },\r\n\t{ card: 1, color: '#0ea610', border: '#0ea610', borderPast: '#87d388' },\r\n\t{ card: 2, color: '#fa4b2e', border: '#fa4b2e', borderPast: '#fda597' },\r\n\t{ card: 3, color: '#009cc4', border: '#009cc4', borderPast: '#7fcee2' }\r\n];\r\n\r\nconst ServiceUnitType = {\r\n\tDay: 'day',\r\n\tMinute: 'minute'\r\n};\r\n\r\nclass CustomEventWrapper extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\topen: false\r\n\t\t};\r\n\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\thandleClick(e) {\r\n\t\tthis.setState({ open: !this.state.open });\r\n\t}\r\n\thandleClose(e) {\r\n\t\tthis.setState({ open: false });\r\n\t}\r\n\r\n\tdateDisplayHelper(event) {\r\n\t\tvar dateRange = [];\r\n\t\tvar currentDate = new Date(moment(event.start).format('YYYY-MM-DD'));\r\n\t\tvar end = new Date(moment(event.end).format('YYYY-MM-DD'));\r\n\t\tvar unit_type = event.type;\r\n\t\tlet current = currentDate;\r\n\t\tfor (var d = current; d <= end; d.setDate(d.getDate() + 1)) {\r\n\t\t\tdateRange.push(new Date(d));\r\n\t\t}\r\n\r\n\t\tif (unit_type === 'day') {\r\n\t\t\tif (dateRange.length > 1) {\r\n\t\t\t\treturn `${moment(dateRange[0]).format('DD/MM/YYYY')}${' to ' +\r\n\t\t\t\t\tmoment(dateRange[dateRange.length - 1]).format('DD/MM/YYYY')} ${event.duration && event.duration > 1\r\n\t\t\t\t\t? '(' + event.duration + ' days)'\r\n\t\t\t\t\t: '(' + event.duration + ' day)'}`;\r\n\t\t\t} else if (dateRange.length === 1) {\r\n\t\t\t\treturn moment(dateRange[0]).format('YYYY-MM-DD');\r\n\t\t\t}\r\n\t\t} else if (unit_type === 'minute') {\r\n\t\t\treturn moment(event.start).format('HH:mm') + ' to ' + moment(event.end).format('HH:mm');\r\n\t\t}\r\n\t}\r\n\tdayNameDisplayHelper(event) {\r\n\t\tvar dateRange = [];\r\n\t\tvar currentDate = new Date(moment(event.start).format('YYYY-MM-DD'));\r\n\t\tvar end = new Date(moment(event.end).format('YYYY-MM-DD'));\r\n\r\n\t\tlet current = currentDate;\r\n\t\tfor (var d = current; d <= end; d.setDate(d.getDate() + 1)) {\r\n\t\t\tdateRange.push(new Date(d));\r\n\t\t}\r\n\r\n\t\tif (dateRange.length > 1) {\r\n\t\t\treturn (\r\n\t\t\t\tmoment(dateRange[0]).format('dddd') + ' to ' + moment(dateRange[dateRange.length - 1]).format('dddd')\r\n\t\t\t);\r\n\t\t} else if (dateRange.length === 1) {\r\n\t\t\treturn moment(dateRange[0]).format('dddd');\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { event } = this.props;\r\n\t\tlet card_color = _.find(custom_card_colours, { card: event.event.card });\r\n\r\n\t\t//this can be removed\r\n\t\t// let blocked_card_color = _.find(custom_cards, (cardItem) => {\r\n\t\t// \treturn cardItem.card === card_color.card;\r\n\t\t// });\r\n\r\n\t\t//used fo the blocked bar color\r\n\t\tlet current_card = _.find(custom_cards, { card: event.event.blocked_card });\r\n\r\n\t\treturn (\r\n\t\t\t this.setState({ open: false })}\r\n\t\t\t\tpadding={10}\r\n\t\t\t\tdisableReposition\r\n\t\t\t\tcontent={\r\n\t\t\t\t\t//
    \r\n\r\n\t\t\t\t\t//
    \r\n\t\t\t\t\t// \r\n\t\t\t\t\t// {event.event.eventName ? event.event.eventName : \"\"} {\" \"}\r\n\t\t\t\t\t//

    {event.event.booked || event.event.blocked ? (event.event.desc !== \"\" ? event.event.desc : \"testing is in progress\") : \"\"}

    \r\n\t\t\t\t\t//
    \r\n\t\t\t\t\t//
    \r\n\t\t\t\t\t//
    \r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t//to be removed\r\n\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{event.event.eventName ? event.event.eventName : ''}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t{event.event.booked || event.event.blocked ? event.event.desc !== '' ? (\r\n\t\t\t\t\t\t\t\t\tevent.event.desc\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t'testing is in progress'\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t{/* \r\n */}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t

    {this.dayNameDisplayHelper(event.event)}

    \r\n\t\t\t\t\t\t\t\t

    {this.dateDisplayHelper(event.event)}

    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t}\r\n\t\t\t>\r\n\t\t\t\t
    this.handleClick()}>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{event.event.booked || event.event.blocked ? event.event.eventName : ''} {' '}\r\n\t\t\t\t\t\t{event.event.type && event.event.type === ServiceUnitType.Minute ? (\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t{event.event.desc !== '' ? event.event.desc : 'testing is in progress'}\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default CustomEventWrapper;\r\n","import React, { Component } from \"react\";\r\n\r\nimport scriptLoader from 'react-async-script-loader';\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\n\r\nclass WorldPayComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n const {\r\n isScriptLoaded,\r\n isScriptLoadSucceed,\r\n } = nextProps;\r\n\r\n if (isScriptLoaded && !this.props.isScriptLoaded) { // load finished\r\n if (isScriptLoadSucceed) {\r\n\r\n console.log(isScriptLoaded);\r\n console.log(nextProps);\r\n this.initEditor()\r\n }\r\n else this.props.onError()\r\n }\r\n }\r\n\r\n initEditor() {\r\n console.log(this.props);\r\n this.props.handlePaymentLoad(true);\r\n\r\n }\r\n componentDidMount() {\r\n const { isScriptLoaded, isScriptLoadSucceed } = this.props\r\n if (isScriptLoaded && isScriptLoadSucceed) {\r\n this.initEditor()\r\n }\r\n }\r\n\r\n render() {\r\n //var libraryObject = new WPCL.Library();\r\n //libraryObject.setup(customOptions);\r\n return (\r\n
    \r\n\r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default scriptLoader('https://cdn.worldpay.com/v1/worldpay.js')(WorldPayComponent);\r\n//export default scriptLoader('https://payments.worldpay.com/resources/hpp/integrations/embedded/js/hpp-embedded-integration-library.js')(WorldPayComponent);","//Crypto Utility\r\nimport * as config from \"../services/config\";\r\nimport Crypto from \"crypto-js\";\r\n\r\nexport function encryptAES(data) {\r\n const key = Crypto.enc.Utf8.parse(config.EngageCryptoKey);\r\n const iv = Crypto.enc.Utf8.parse(config.EngageCryptoKeyIV);\r\n\r\n var encrypted = Crypto.AES.encrypt(\r\n Crypto.enc.Utf8.parse(JSON.stringify(data)),\r\n key,\r\n {\r\n keySize: 128 / 8,\r\n iv: iv,\r\n mode: Crypto.mode.CBC,\r\n padding: Crypto.pad.Pkcs7\r\n }\r\n );\r\n return encrypted.toString();\r\n}\r\n\r\n\r\nexport function decryptAES(cypherText) {\r\n const key = Crypto.enc.Utf8.parse(config.EngageCryptoKey);\r\n const iv = Crypto.enc.Utf8.parse(config.EngageCryptoKeyIV);\r\n\r\n var decrypted = Crypto.AES.decrypt(cypherText, key, {\r\n keySize: 128 / 8,\r\n iv: iv,\r\n mode: Crypto.mode.CBC,\r\n padding: Crypto.pad.Pkcs7\r\n });\r\n let decryptedData = \"\";\r\n try {\r\n decryptedData = JSON.parse(decrypted.toString(Crypto.enc.Utf8));\r\n\r\n } catch (e) {\r\n decryptedData = \"\"\r\n }\r\n\r\n\r\n\r\n\r\n return decryptedData;\r\n\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport autoBind from \"react-autobind\";\r\nimport dateFormat from \"dateformat\";\r\nimport _ from \"lodash\";\r\n\r\n\r\nimport BigCalendar from \"react-big-calendar\";\r\nimport moment from \"moment\";\r\nimport {withRouter} from 'react-router-dom';\r\n\r\nimport CustomDayWrapper from \"../CalendarCustomComponents/CustomDayWrapper\";\r\nimport Week from \"react-big-calendar/lib/Week\";\r\n//import WorkWeek from \"react-big-calendar/lib/WorkWeek\";\r\nimport TimeGrid from \"react-big-calendar/lib/TimeGrid\";\r\nimport dates from \"react-big-calendar/lib/utils/dates\";\r\nimport localizer from \"react-big-calendar/lib/localizer\";\r\nimport EventCell from \"react-big-calendar/lib/EventCell\";\r\n\r\nimport EventModal from \"../ariaModals/EventModal\";\r\nimport CustomEventWrapper from \"../CalendarCustomComponents/CustomEventWrapper\";\r\nimport WorldPayComponent from \"../PaymentGateway/WorldPayComponent\";\r\n\r\nimport * as resourceSelector from \"../../store/Resources/reducer\";\r\nimport * as resourceActions from \"../../store/Resources/actions\";\r\n//import * as serviceModuleActions from \"../../store/ServiceModules/actions\";\r\nimport * as serviceModuleSelectors from \"../../store/ServiceModules/reducer\";\r\nimport * as tenantSelectors from \"../../store/Tenants/reducer\";\r\nimport * as checkoutSelectors from \"../../store/Checkout/reducer\";\r\nimport * as CyptoHelper from \"../../utility/cryptoUtility\";\r\n\r\nimport \"../../sass/components/BigCalendar/react-big-calendar.css\";\r\nvar PropTypes = require('prop-types');\r\n\r\nBigCalendar.setLocalizer(BigCalendar.momentLocalizer(moment));\r\nfunction dayWrapperClicked() { }\r\n\r\nconst calendarViews = {\r\n Day: \"day\",\r\n Week: \"week\",\r\n WorkWeek: \"work_week\",\r\n Month: \"month\"\r\n};\r\nconst ServiceUnitType = {\r\n Day: \"day\",\r\n Minute: \"minute\"\r\n};\r\n\r\nconst ORDER_KEY = \"order_key\";\r\n\r\n//test template for cards, some settings can be moved into css styling for each cards, see sample class included\r\nconst custom_cards = [\r\n { card: 0, color: \"#ffffff\", border: \"#009cc4\", borderPast: \"#7fcee2\" },\r\n { card: 1, color: \"#0ea610\", border: \"#0ea610\", borderPast: \"#87d388\" },\r\n { card: 2, color: \"#fa4b2e\", border: \"#fa4b2e\", borderPast: \"#fda597\" },\r\n { card: 3, color: \"#009cc4\", border: \"#009cc4\", borderPast: \"#7fcee2\" }];\r\n\r\n\r\nconst myCustomDayWrapper = () => (\r\n \r\n);\r\nfunction eventPropsGetter(event, start, end, isSelected) {\r\n\r\n if (!event.isAvailable && !event.inBasket && _.isUndefined(event.booked) && _.isUndefined(event.blocked)) {\r\n return {\r\n style: {\r\n backgroundColor: \"rgba(255,255,255,0)\",\r\n border: 0,\r\n borderRadius: 0,\r\n zIndex: 0,\r\n\r\n }\r\n };\r\n } else if (event.inBasket && !event.isAvailable) {\r\n return {\r\n style: {\r\n backgroundColor: \"#AEDBBC \",\r\n border: 0,\r\n borderRadius: 0\r\n }\r\n };\r\n } else if (event.isAvailable) {\r\n return {\r\n style: {\r\n backgroundColor: \"#FFFFFF \",\r\n borderBottom: \"0.9px solid #d9d9d9\",\r\n borderTop: 0,\r\n borderLeft: 0,\r\n borderRight: 0,\r\n borderRadius: 0,\r\n opacity: 0,\r\n color: \"#ffffff\"\r\n }\r\n };\r\n } else if (\r\n !event.isAvailable &&\r\n !_.isUndefined(event.booked) &&\r\n event.booked\r\n ) {\r\n let current_card = _.find(custom_cards, { card: event.card })\r\n return {\r\n className: !_.isUndefined(event.card) ? event.past === true ? \"card--\" + event.card + \" event past\" : \"card--\" + event.card + \" event\" : \"event\", //provide special class styling attribute based on card no ie, inner text, headers etc\r\n style: {\r\n border: \"0px solid #ffffff\",\r\n borderLeft: !_.isUndefined(current_card) ? \"solid \" + 2 + \"px \" + (!_.isUndefined(event.card) && event.past === true ? current_card.borderPast : current_card.border) : \"\"\r\n\r\n }\r\n };\r\n } else if (!event.isAvailable\r\n && !_.isUndefined(event.blocked) && event.blocked) {\r\n let current_card = _.find(custom_cards, { card: event.blocked_card });\r\n\r\n return {\r\n className: event.past === true ? \"card--blocked past\" : \"card--blocked\",\r\n style: {\r\n border: \"0px solid #ffffff\",\r\n borderLeft: !_.isUndefined(current_card) ? \"solid \" + 2 + \"px \" + current_card.border : \"\"\r\n }\r\n };\r\n }\r\n}\r\n\r\n// function slotPropGetter(date) {\r\n// return {\r\n// style: {\r\n// backgroundColor: \"#AEDBBC\",\r\n// border: 0,\r\n// borderRadius: 0\r\n// }\r\n// };\r\n// }\r\n\r\n\r\nconst CustomEventCell = (event) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\n\r\nclass MyWeek extends Week {\r\n handleNav(date, action) { }\r\n\r\n render() {\r\n let { date } = this.props;\r\n let { start, end } = MyWeek.range(date, this.props);\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nMyWeek.range = (date, { culture }) => {\r\n let firstOfWeek = localizer.startOfWeek(culture);\r\n firstOfWeek = new Date().getDay() - 1;\r\n let start = dates.startOf(date, \"week\", firstOfWeek);\r\n let end = dates.endOf(date, \"week\", firstOfWeek);\r\n\r\n if (firstOfWeek === 1) {\r\n end = dates.subtract(end, 2, \"day\");\r\n } else {\r\n start = dates.add(start, 1, \"day\");\r\n end = dates.add(end, 1, \"day\");\r\n }\r\n\r\n return {\r\n start,\r\n end\r\n };\r\n};\r\nclass BookingCalendarCustom extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n timeSlot: 1,\r\n modal: \"\",\r\n bookingId: 0,\r\n date: \"\" /*date string xxxx-xx-xx */,\r\n time: \"\" /*time specified in 24hr A (11:00 AM) */,\r\n duration: \"\" /* duration calculated in minutes */,\r\n selectedBookedSlot: undefined,\r\n error: \"\",\r\n booking_action_valid: false,\r\n min_cancel_time: moment(),\r\n slots: [],\r\n cancelledBooking: undefined,\r\n bookingUpdated: undefined,\r\n type2: \"\",\r\n current_nav_view: \"Today\",\r\n switchActive: \"\",\r\n open: false,\r\n slotSelected: undefined,\r\n eventsResourceSelected: this.props.selectedEventResources,\r\n selectedSartDate: undefined,\r\n selectedEndDate: undefined,\r\n selectedSlotTimes: [],\r\n slotDataRefreshed: false,\r\n selectedTenant: undefined,\r\n basketQue: [],\r\n paymentStatus: undefined,\r\n modalActive : false\r\n\r\n };\r\n\r\n autoBind(this);\r\n\r\n this.props.dispatch(resourceActions.getBookingsCancelReasons());\r\n this.props.dispatch(resourceActions.getBookingErrors());\r\n }\r\n\r\n handleCloseClick(event, modalActive) {\r\n this.setState({ modal: \"\", modalActive: false });\r\n\r\n if (this.props.fromRedirect === true) {\r\n this.props.modalActionEvent(\"payment\", this.props.paymentAction);\r\n }\r\n }\r\n\r\n getApplicationNode = () => {\r\n return document.getElementById(\"bookingApp\");\r\n };\r\n\r\n\r\n modalActionCompleted(action, valid) {\r\n\r\n this.props.modalActionEvent(action, valid);\r\n\r\n if (valid === true)\r\n setTimeout(() => {\r\n if (\r\n action === \"delete\" &&\r\n !_.isUndefined(this.state.cancelledBooking)\r\n ) {\r\n this.props.dispatch(\r\n resourceActions.nofifyCancelBooking(\r\n this.state.cancelledBooking.booking\r\n )\r\n );\r\n } else if (\r\n action === \"update\" &&\r\n !_.isUndefined(this.state.bookingUpdated)\r\n ) {\r\n\r\n if (this.state.bookingId === this.state.bookingUpdated.id)\r\n this.props.dispatch(\r\n resourceActions.notifyEditBooking(this.state.bookingUpdated.id)\r\n );\r\n } else if (action === \"block\") {\r\n this.setState({ modal: \"\", modalActive: false });\r\n } else if (action === \"create\") {\r\n\r\n } else if (action === \"payment\") {\r\n\r\n\r\n this.setState({\r\n actionTriggered: action,\r\n modal: \"\",\r\n modalActive: false\r\n });\r\n\r\n\r\n let data = {\r\n itemQue: this.props.itemQueue,\r\n tenant: this.props.selectedTenant,\r\n selectedEvents: this.props.selectedEvents,\r\n selectedResource: _.find(this.props.selectedEvents, { eventId: this.props.eventId }),\r\n selectedService: { id: this.props.service.id, duration_unit: this.props.service.duration_unit },\r\n carlendarView: this.props.current_view,\r\n basket: this.props.basket,\r\n chargeType: this.props.chargeType\r\n };\r\n\r\n var crypted = CyptoHelper.encryptAES(data);\r\n\r\n // var crypt = \"?data=\" + encodeURIComponent(crypted);\r\n localStorage.setItem(ORDER_KEY, crypted);\r\n\r\n setTimeout(() => {\r\n\r\n\r\n this.props.history.push({\r\n pathname: \"/concierge/bookings/payment\",\r\n\r\n });\r\n window.scrollTo(0, 0);\r\n }, 0);\r\n }\r\n\r\n }, 0);\r\n }\r\n \r\n componentDidMount() {\r\n const { serviceId, date } = this.props;\r\n\r\n this.serviceBookings(serviceId, dateFormat(date._d, \"isoDate\"));\r\n\r\n //trigger create booking notification on return from payment redirect journey from resi\r\n if (this.props.fromRedirect && this.props.fromRedirect === true) {\r\n let status_screen = \"\";\r\n if (this.props.paymentAction === true) {\r\n status_screen = \"booking_success\"\r\n\r\n // this.props.dispatch(resourceActions.notifyCreateBooking(this.props.booking));\r\n } else if (this.props.paymentAction === false) {\r\n status_screen = \"booking_error\"\r\n }\r\n\r\n this.setState({\r\n modal: this.showModal(true),\r\n modalActive: true,\r\n modalScreenType: status_screen,\r\n paymentStatus: this.props.paymentAction\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n //depricated\r\n //this.props.dispatch(resourceActions.setActionRedirect(undefined));\r\n //this.props.dispatch(resourceActions.setPaymentAction(undefined));\r\n\r\n }\r\n\r\n //keep for carlendar anvigation\r\n // handleNavigation(date, action) {\r\n // switch (action) {\r\n // case \"day\":\r\n // console.log(date);\r\n // if (date >= new Date().setHours(0)) {\r\n // this.props.dispatch(\r\n // resourceActions.fetchServicesSlots(this.props.serviceId, date._d)\r\n // );\r\n // }\r\n // return date;\r\n // default:\r\n // return date;\r\n // }\r\n // }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n \r\n const { selectedTenant, basketQue } = this.props;\r\n if (\r\n prevProps.serviceId !== this.props.serviceId ||\r\n prevProps.date !== this.props.date\r\n ) {\r\n this.serviceBookings(\r\n this.props.serviceId,\r\n dateFormat(this.props.date._d, \"isoDate\")\r\n );\r\n }\r\n\r\n if (prevState.selectedBookedSlot !== this.state.selectedBookedSlot) {\r\n this.setState({\r\n selectedBookedSlot: this.state.selectedBookedSlot\r\n });\r\n }\r\n\r\n if (prevProps.selectedTenant !== selectedTenant) {\r\n this.setState({\r\n selectedTenant: selectedTenant\r\n });\r\n }\r\n if (prevProps.basketQue !== basketQue) {\r\n this.setState({\r\n basketQue: basketQue\r\n });\r\n }\r\n\r\n if (this.props.slots !== prevProps.slots && this.props.slots) {\r\n this.setState({\r\n slots: this.props.slots\r\n });\r\n }\r\n\r\n if (this.props.selectedEventResources !== prevProps.selectedEventResources ) {\r\n \r\n this.setState({\r\n eventsResourceSelected: this.props.selectedEventResources\r\n });\r\n }\r\n\r\n if (this.props.bookingCreated !== prevProps.bookingCreated ) {\r\n this.setState({\r\n bookingCreated: !_.isUndefined(this.props.bookingCreated) ? this.props.bookingCreated : undefined\r\n });\r\n }\r\n\r\n if (this.props.bookingUpdated !== prevProps.bookingUpdated && this.props.bookingUpdated) {\r\n this.setState({\r\n bookingUpdated:\r\n !_.isUndefined(this.props.bookingUpdated.booking) &&\r\n this.props.bookingUpdated.booking.length > 0\r\n ? this.props.bookingUpdated.booking[0]\r\n : undefined\r\n });\r\n }\r\n\r\n if (this.props.bookingsCancelled !== prevProps.bookingsCancelled && this.props.bookingsCancelled) {\r\n this.setState({\r\n cancelledBooking:\r\n !_.isUndefined(this.props.bookingsCancelled) &&\r\n this.props.bookingsCancelled.length > 0\r\n ? this.props.bookingsCancelled[0]\r\n : undefined\r\n });\r\n }\r\n\r\n if (this.props.selectedBookingDetail !== prevProps.selectedBookingDetail && this.props.selectedBookingDetail) {\r\n if (\r\n !_.isUndefined(this.props.selectedBookingDetail.min_cancellation_time)\r\n ) {\r\n this.setState({\r\n min_cancel_time: moment(\r\n this.props.selectedBookingDetail.min_cancellation_time\r\n )\r\n });\r\n }\r\n }\r\n \r\n if (this.props.itemQueue !== prevProps.itemQueue && this.props.itemQueue) {\r\n this.setState({\r\n basketQueue: this.props.itemQueue\r\n });\r\n }\r\n\r\n }\r\n\r\n //handle slot selection\r\n slotSelected(slotInfo) {\r\n\r\n //const { serviceId } = this.props;\r\n const { slots, serviceId } = this.state;\r\n let stime = new Date(slotInfo.start);\r\n let min = stime.getHours() * 60 + stime.getMinutes();\r\n let etime = new Date(slotInfo.end);\r\n let end_min = etime.getHours() * 60 + etime.getMinutes();\r\n\r\n this.setState({\r\n selectedStartDate: stime,\r\n selectedEndDate: etime\r\n });\r\n\r\n //console.log(\"slot: \",slotInfo);\r\n //console.log(\"slots: \",slots);\r\n\r\n //Get slot data for selected slot\r\n let selectedSlotTimes = _.filter(slots, o => {\r\n return moment(o.start).format(\"YYYY/MM/DD\") === moment(stime).format(\"YYYY/MM/DD\")\r\n && o.start_min >= min && o.end_min <= end_min;\r\n });\r\n\r\n //Get grouped slot data from slots data, this would check if selected time span is available\r\n let slot_obj = _.find(slots, s => {\r\n let slot_time = new Date(s.start);\r\n let slot_min = slot_time.getHours() * 60 + slot_time.getMinutes();\r\n return moment(s.start).format(\"YYYY-MM-DD\") === moment(slotInfo.start).format(\"YYYY-MM-DD\") && slot_min === min;\r\n });\r\n\r\n let slot = {};\r\n\r\n if (\r\n (slotInfo &&\r\n !_.isUndefined(slot_obj) &&\r\n (slot_obj.isAvailable === true) & _.isUndefined(slotInfo.booked)) ||\r\n slotInfo.booked === false\r\n ) {\r\n\r\n slot = {\r\n isAvailable: true,\r\n inBasket: false,\r\n id: slot_obj.id,\r\n start: slotInfo.start,\r\n end: slotInfo.end,\r\n price: slot_obj.price,\r\n start_min: min,\r\n end_min: end_min,\r\n type: slotInfo.action,\r\n active: true,\r\n duration: (end_min - min)\r\n };\r\n\r\n\r\n this.props.dispatch(resourceActions.setSelectedSlot(slot, serviceId));\r\n\r\n }\r\n\r\n\r\n if (slotInfo.action === \"select\") {\r\n // console.log(\"selectedSlotTimes: \", selectedSlotTimes);\r\n // console.log(\"slot: \", selectedSlotTimes);\r\n\r\n let now = new Date();\r\n\r\n if (stime >= now && this.state.eventsResourceSelected && this.state.eventsResourceSelected.length > 0) {\r\n this.props.dispatch(resourceActions.updateBasketQueue(slot));\r\n\r\n this.setState({\r\n modalActive: true,\r\n slotSelected: slot,\r\n modalScreenType: \"create\",\r\n selectedSlotTimes: selectedSlotTimes\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n this.getBookedBooking(slot_obj);\r\n }\r\n\r\n\r\n showModal(active) {\r\n const { eventsResourceSelected,\r\n modalScreenType,\r\n switchActive,\r\n slotSelected,\r\n selectedStartDate,\r\n selectedEndDate\r\n\r\n } = this.state;\r\n const { serviceDetail, bookingQuestions, step, serviceId, portalSettings } = this.props;\r\n const events = _.map(eventsResourceSelected, o => {\r\n return { name: o.eventName, eventId: o.eventId };\r\n });\r\n\r\n \r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n //helper method to get selected booked slot\r\n getBookedBooking(slot) {\r\n const { bookings, selectedEvents } = this.props;\r\n\r\n let selected_booking = undefined;\r\n if (\r\n slot &&\r\n bookings &&\r\n !_.isUndefined(slot.booked) &&\r\n slot.booked === true\r\n ) {\r\n const event = _.find(selectedEvents, { eventId: slot.eventId });\r\n\r\n let stime = new Date(slot.start);\r\n let etime = new Date(slot.end);\r\n\r\n let smin = stime.getHours() * 60 + stime.getMinutes();\r\n let emin = etime.getHours() * 60 + etime.getMinutes();\r\n\r\n selected_booking = _.find(bookings, b => {\r\n //convert each booking time from to minutes\r\n let booking_start_time = moment(b.timeFrom, \"HH:mm A\");\r\n let booking_start_mins =\r\n booking_start_time.get(\"hour\") * 60 +\r\n booking_start_time.get(\"minutes\");\r\n\r\n //convert each booking end time to minutes\r\n let booking_end_time = moment(b.timeTo, \"HH:mm A\");\r\n let booking_end_min =\r\n booking_end_time.get(\"hour\") * 60 + booking_end_time.get(\"minutes\");\r\n\r\n //return booking that falls within a booked slot range\r\n return booking_start_mins === smin && booking_end_min === emin && event.eventName === b.resourceName;\r\n });\r\n\r\n\r\n } else {\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n //handle event selected\r\n eventSelected(slot, e) {\r\n const { serviceId } = this.props;\r\n const { slots } = this.state;\r\n\r\n\r\n if (slot.booked || slot.blocked) {\r\n\r\n\r\n //for currently selected slot, find overlaping time on selected slot\r\n let current_overlaps = this.getOverlappingSlot(slots, slot);\r\n\r\n let temp_slot = _.findLast(current_overlaps, o => {\r\n\r\n return o.booked === true\r\n });\r\n\r\n\r\n //swap selected booked slot with last booked slot in group, this is used by react calendar \r\n //in position cards based on package calculaions. \r\n let new_slots = _.map(slots, (data, index) => {\r\n if (data.id === slot.id) {\r\n return {\r\n ...data,\r\n active: true,\r\n };\r\n }\r\n\r\n return {\r\n ...data,\r\n active: false,\r\n };\r\n });\r\n\r\n\r\n this.setState({\r\n selectedBookedSlot: slot,\r\n slotSelected: slot,\r\n slots: new_slots,\r\n\r\n });\r\n\r\n if (!_.isUndefined(slot.active) && slot.active === true) {\r\n\r\n this.setState({\r\n modal: this.showModal(slot, true),\r\n modalActive: true,\r\n modalScreenType: \"edit\"\r\n });\r\n }\r\n }\r\n\r\n if (slot.inBasket) {\r\n this.props.dispatch(resourceActions.deSelectSlot(slot));\r\n } else {\r\n if (slot.isAvailable) {\r\n let selected_slot = {\r\n isAvailable: true,\r\n inBasket: false,\r\n id: slot.id,\r\n start: slot.start,\r\n end: slot.end,\r\n price: slot.price,\r\n start_min: slot.start_min,\r\n end_min: slot.end_min,\r\n type: \"click\",\r\n duration: slot.end_min - slot.start_min\r\n };\r\n this.props.dispatch(\r\n resourceActions.setSelectedSlot(selected_slot, serviceId)\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n open: !this.state.open\r\n });\r\n\r\n // this.getBookedBooking(slot);\r\n }\r\n\r\n serviceBookings(serviceid, date) {\r\n\r\n const { current_view } = this.props;\r\n\r\n let startDate = moment(date);\r\n let endDate = moment(date);\r\n\r\n\r\n if (current_view === calendarViews.Day) {\r\n startDate = moment(date).startOf(\"day\");\r\n endDate = moment(date).endOf(\"day\");\r\n } else if (current_view === calendarViews.Week) {\r\n startDate = moment(date).startOf(\"week\");\r\n endDate = moment(date).endOf(\"week\");\r\n\r\n }\r\n\r\n this.props.dispatch(resourceActions.getServiceBookings_range(serviceid, startDate.format(\"YYYY-MM-DD\"), endDate.format(\"YYYY-MM-DD\"), success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n }));\r\n\r\n\r\n }\r\n\r\n //helper to get overlapping related time event slot from slots list\r\n getOverlappingSlot(slots, selected_slot) {\r\n const current_slots = _.filter(slots, slot => {\r\n return moment(selected_slot.start).format(\"YYYY-MM-DD\") === moment(slot.start).format(\"YYYY-MM-DD\") &&\r\n\r\n !_.isUndefined(slot.booked) && slot.booked === true &&\r\n ((selected_slot.start_min < slot.start_min && slot.start_min < selected_slot.end_min) ||\r\n (selected_slot.start_min === slot.start_min && slot.end_min <= selected_slot.end_min) ||\r\n (selected_slot.start_min >= slot.start_min && slot.end_min >= selected_slot.end_min)\r\n );\r\n\r\n });\r\n const sort_slot = _.orderBy(current_slots, ['start_min'], ['asc']);\r\n\r\n\r\n return sort_slot;\r\n }\r\n\r\n clearBookingSelection() {\r\n this.setState({\r\n selectedBookedSlot: undefined,\r\n bookingId: \"\",\r\n date: \"\",\r\n time: \"\",\r\n duration: \"\",\r\n error: \"\"\r\n });\r\n }\r\n\r\n handleUpdateDateChange(val) {\r\n this.setState({\r\n date: val\r\n });\r\n }\r\n\r\n switchDayNext(dayType) {\r\n const { current_nav_view } = this.state;\r\n const { date, current_view, endDate } = this.props;\r\n\r\n let now = moment();\r\n\r\n\r\n\r\n if (current_view === calendarViews.Week || current_view === calendarViews.WorkWeek || current_view === calendarViews.Month) {\r\n\r\n if (dayType === \"Today\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Next\"\r\n });\r\n }\r\n if (dayType === \"Next\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Next\"\r\n });\r\n }\r\n\r\n if (dayType === \"Back\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Next\"\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n switchDayPrevious(dayType) {\r\n const { current_nav_view } = this.state;\r\n const { date, current_view, endDate } = this.props;\r\n\r\n\r\n\r\n if (current_view === calendarViews.Week || current_view === calendarViews.Month) {\r\n\r\n if (dayType === \"Next\") {\r\n this.setState({\r\n current_nav_view: \"Back\"\r\n });\r\n\r\n }\r\n\r\n if (dayType === \"Back\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Back\"\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n getCustomToolbar(toolbar) {\r\n //toolbar parameter exposes, view, date\r\n this.toolbarDate = toolbar.date;\r\n\r\n const goToBack = () => {\r\n toolbar.onNavigate(\"PREV\");\r\n };\r\n const goToNext = () => {\r\n toolbar.onNavigate(\"NEXT\");\r\n };\r\n const goToCurrent = () => {\r\n toolbar.onNavigate(\"TODAY\");\r\n };\r\n var monthNames = [\"JANUARY\", \"FEBRUARY\", \"MARCH\", \"APRIL\", \"MAY\", \"JUNE\", \"JULY\", \"AUGUST\", \"SEPTEMBER\", \"OCTOBER\", \"NOVEMBER\", \"DECEMBER\"];\r\n var weekDays = this.props.current_view === calendarViews.Week || this.props.current_view === calendarViews.WorkWeek || this.props.current_view === calendarViews.Month ?\r\n [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"] : [\"SUNDAY\", \"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\"]\r\n\r\n\r\n\r\n var n = new Date(this.props.date);\r\n // var curruntDate = new Date();\r\n\r\n var ed = new Date(this.props.endDate);\r\n var currentMonth = monthNames[n.getMonth()];\r\n var currentDay = weekDays[n.getDay()];\r\n var currentYear = n.getFullYear();\r\n var ws = new Date(this.props.endDate);\r\n ws.setDate(ws.getDate() - 6);\r\n\r\n let dayCount = 0;\r\n\r\n if (this.props.current_view === calendarViews.WorkWeek || this.props.current_view === calendarViews.Month)\r\n dayCount = 5;\r\n if (this.props.current_view === calendarViews.Week || this.props.current_view === calendarViews.Month)\r\n dayCount = 7;\r\n if (this.props.current_view === calendarViews.Day)\r\n dayCount = 1;\r\n\r\n let isCurrentMonth = monthNames[ws.getMonth()] === monthNames[new Date().getMonth()];\r\n\r\n\r\n let viewSwitcher = this.props.serviceUnit && this.props.serviceUnit === ServiceUnitType.Minute ?\r\n
    \r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n\r\n\r\n return
    \r\n
    \r\n {viewSwitcher}\r\n
    \r\n \r\n
    { goToCurrent(); }} className=\"Text-Field\">\r\n \r\n\r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n {this.props.servicesOptions}\r\n
    \r\n
    \r\n {this.props.requestStatus && this.props.requestStatus === true &&
    \r\n

    Network error, Please try again later.

    \r\n
    }\r\n\r\n\r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.props.current_view === calendarViews.WorkWeek || this.props.current_view === calendarViews.Week || this.props.current_view === calendarViews.Month ? _.times(dayCount, i =>\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : ''}\r\n
    \r\n\r\n
    ;\r\n }\r\n\r\n getDatesRange(startDate, endDate) {\r\n var dateRange = [];\r\n var currentDate = new Date(moment(startDate).format(\"YYYY-MM-DD\"));\r\n var end = new Date(moment(endDate).format(\"YYYY-MM-DD\"));\r\n\r\n let current = currentDate;\r\n for (var d = current; d <= end; d.setDate(d.getDate() + 1)) {\r\n dateRange.push(new Date(d));\r\n }\r\n\r\n return dateRange;\r\n }\r\n\r\n showPaymentView() {\r\n var customOptions = {\r\n type: 'lightbox',\r\n iframeIntegrationId: 'libraryObject',\r\n iframeHelperURL: 'http://localhost:3000/helper.html',\r\n iframeBaseURL: 'http://localhost:3000',\r\n url: 'https://payments.worldpay.com/ngpp/integration/wpg/corporate?OrderKey=YOUR_ORDER_KEY&Ticket=YOUR_TICKET_ID',\r\n target: 'custom-html',\r\n trigger: 'custom-trigger',\r\n lightboxMaskOpacity: 50,\r\n lightboxMaskColor: '#000000',\r\n accessibility: true,\r\n debug: false,\r\n language: 'en',\r\n country: 'gb',\r\n preferredPaymentMethod: '',\r\n successURL: 'https://www.example.com/success',\r\n cancelURL: 'https://www.example.com/cancel',\r\n failureURL: 'https://www.example.com/failure',\r\n pendingURL: 'https://www.example.com/pending',\r\n errorURL: 'https://www.example.com/error'\r\n };\r\n\r\n //initialise the library and pass options\r\n //var libraryObject = new WPCL.Library();\r\n // libraryObject.setup(customOptions);\r\n\r\n // return (
    \r\n\r\n //
    );\r\n\r\n return ();\r\n }\r\n\r\n handlePayment(val) {\r\n\r\n this.showPaymentView();\r\n }\r\n\r\n paymentLoad(val) {\r\n\r\n }\r\n initPaymentEditor() {\r\n\r\n return (\r\n
    \r\n Click me \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n\r\n\r\n render() {\r\n MyWeek.navigate = this.props.handleNavigation;\r\n\r\n const { current_view, date, endDate, step, slots, minCalTime, maxCalTime } = this.props;\r\n const { modalActive } = this.state;\r\n\r\n let formats = {\r\n dayFormat: (date, culture, localizer) =>\r\n localizer.format(date, 'D ddd', culture),\r\n timeGutterFormat: \"HH:mm\",\r\n }\r\n\r\n if (!this.state.slots) {\r\n return this.renderLoading();\r\n }\r\n\r\n if (this.state.wpscriptLoaded === true) {\r\n //this.initializeHostedPaymentPageContent(val);\r\n }\r\n \r\n // console.log(\"props: \", this.props);\r\n // console.log(\"state: \", this.state);\r\n return (\r\n\r\n
    \r\n {_.isUndefined(this.props.eventsSlotStatus) ?\r\n {\r\n return o.booked === true || o.blocked === true;\r\n })}\r\n defaultDate={moment().format(\"DD/MM/YYYY\")}\r\n formats={formats}\r\n date={new Date(date._d)}\r\n defaultView={this.props.current_view}\r\n step={step * this.state.timeSlot}\r\n timeslots={this.state.timeSlot}\r\n view={this.props.current_view}\r\n views={['day', 'week', 'work_week']}\r\n onView={() => { }}\r\n selectable={'ignoreEvents'}\r\n toolbar={true}\r\n\r\n onSelectEvent={(event, target) => {\r\n this.eventSelected(event, target);\r\n }}\r\n onSelectSlot={slotInfo => {\r\n this.slotSelected(slotInfo);\r\n }}\r\n elementProps={{}}\r\n min={moment( minCalTime, \"h:mma\").toDate()}\r\n max={moment(maxCalTime, \"h:mma\").toDate()}\r\n components={{\r\n event: CustomEventCell,\r\n dayWrapper: myCustomDayWrapper,\r\n toolbar: this.getCustomToolbar\r\n }}\r\n eventPropGetter={eventPropsGetter}\r\n //slotPropGetter={slotPropGetter}\r\n onNavigate={(date, action) => this.props.handleNavigation(date, action)}\r\n\r\n />\r\n :\r\n
    \r\n }\r\n {modalActive === true && this.showModal(this.state.slotSelected, true)}\r\n {\r\n // this.initPaymentEditor()\r\n // this.state.wpscriptLoaded === true && this.initPaymentEditor()\r\n }\r\n\r\n
    \r\n );\r\n }\r\n renderLoading() {\r\n return

    Loading...

    ;\r\n }\r\n}\r\nBookingCalendarCustom.propTypes = {\r\n bookedEventSelected: PropTypes.func,\r\n //serviceUnit: PropTypes.string\r\n};\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n basketQueue: resourceSelector.getBasketQueue(state),\r\n serviceId: resourceSelector.getServiceId(state),\r\n eventId: resourceSelector.getEventId(state),\r\n bookings: resourceSelector.getBookings(state),\r\n bookingErrors: resourceSelector.getBookingErrors(state),\r\n timeAvailable: resourceSelector.getTimeAvailable(state),\r\n selectedBookingDetail: resourceSelector.getSelectedBookingDetail(state),\r\n bookingsCancelled: resourceSelector.getBookingsCancelled(state),\r\n bookingUpdated: resourceSelector.getBookingUpdated(state),\r\n selectedEvents: resourceSelector.getSelectedEventResources(state),\r\n portalSettings: serviceModuleSelectors.loadPortalSttings(state),\r\n bookingCreated: resourceSelector.getBookingCreated(state),\r\n serviceUnit: resourceSelector.getServiceUnit(state),\r\n selectedTenant: tenantSelectors.getSelectedTenant(state),\r\n service: resourceSelector.getService(state),\r\n fromRedirect: resourceSelector.getActionRedirect(state),\r\n paymentAction: resourceSelector.getPaymentAction(state),\r\n booking: resourceSelector.getSetBooking(state),\r\n basket: checkoutSelectors.getBasket(state),\r\n carlendarSetting: resourceSelector.getCalendarSettings(state),\r\n itemQueue: resourceSelector.getItemQueue(state),\r\n chargeType: checkoutSelectors.getChargeType(state)\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(BookingCalendarCustom));\r\n","import * as types from \"./actionTypes\";\r\nimport PageEvent from \"../../services/PegeEvent\";\r\n\r\nexport function setPageEvent(event) {\r\n return async (dispatch, getState) => {\r\n try {\r\n setTimeout(() => {\r\n PageEvent.setPageEvent(event);\r\n }, 0);\r\n\r\n let pg_event = PageEvent.getPageEvent();\r\n\r\n dispatch({\r\n type: types.PAGE_EVENT_CHANGED,\r\n event: pg_event\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n}\r\n\r\nexport function getPageEvent() {\r\n return async (dispatch, getSatate) => {\r\n let pg_event = PageEvent.getPageEvent();\r\n\r\n dispatch({\r\n type: types.PAGE_EVENT_CHANGED,\r\n event: pg_event\r\n });\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//helper apps\r\nimport moment from \"moment\";\r\nimport _ from \"lodash\";\r\nimport autoBind from \"react-autobind\";\r\nimport dateFormat from \"dateformat\";\r\nimport {withRouter} from 'react-router-dom';\r\n//component\r\nimport ServicesListMulti from \"../../../components/ServiceList/ServiceListMulti\";\r\nimport BookingCalendarCustom from \"../../../components/BookingCalendar/BookingCalendarCustom\";\r\n\r\n//store\r\nimport * as resourceSelector from \"../../../store/Resources/reducer\";\r\nimport * as resourceActions from \"../../../store/Resources/actions\";\r\nimport * as pageEventActions from \"../../../store/PageEvents/actions\";\r\nimport * as checkoutSelector from \"../../../store/Checkout/reducer\";\r\nimport * as checkoutActions from \"../../../store/Checkout/actions\";\r\n\r\nimport * as tenantActions from \"../../../store/Tenants/actions\";\r\n\r\nimport \"../../../sass/containers/rooms/index.css\";\r\n\r\n//const showSecond = false;\r\n\r\n\r\nconst calendarViews = {\r\n Day: \"day\",\r\n Week: \"week\",\r\n WorkWeek: \"work_week\",\r\n Month: \"month\"\r\n};\r\n\r\nfunction disabledMinutes(h) {\r\n switch (h) {\r\n default:\r\n return generateOptions(60, [0, 30]);\r\n }\r\n}\r\n\r\nfunction generateOptions(length, excludedOptions) {\r\n const arr = [];\r\n for (let value = 0; value < length; value++) {\r\n if (excludedOptions.indexOf(value) < 0) {\r\n arr.push(value);\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\n\r\nclass RoomsScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type: \"rooms\",\r\n now: new Date(),\r\n startDate: moment(),\r\n endDate: moment().endOf(\"week\"),\r\n serviceId: \"\",\r\n eventId: \"\",\r\n slots: [],\r\n options: [],\r\n timeSlot: 1,\r\n eventName: \"\",\r\n time_step: 1, //default value\r\n selectedServiceSlot: [],\r\n selectedEventsSlots: [],\r\n vision_type: \"week\",\r\n monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n current_view: calendarViews.Week,\r\n selectedEventsSlot: [],\r\n selected_event_resources: []\r\n\r\n };\r\n\r\n \r\n\r\n this.props.dispatch(tenantActions.getAllTenants());\r\n this.props.dispatch(resourceActions.setRoomsServiceHr());\r\n this.props.dispatch(resourceActions.getServices());\r\n\r\n autoBind(this);\r\n }\r\n\r\n componentDidMount() {\r\n\r\n const { type } = this.state;\r\n\r\n this.props.dispatch(resourceActions.clearBasketQueue());\r\n\r\n this.props.dispatch(pageEventActions.setPageEvent(type));\r\n\r\n this.props.dispatch(checkoutActions.loadBasketFromCache());\r\n\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n\r\n if (prevProps.serviceId !== this.props.serviceId && !_.isUndefined(this.props.serviceId)) {\r\n\r\n this.setState({\r\n serviceId: this.props.serviceId\r\n });\r\n }\r\n\r\n if (prevProps.selectedEventsSlots !== this.props.selectedEventsSlots) {\r\n this.setState({\r\n selectedEventsSlots: this.props.selectedEventsSlots\r\n });\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n\r\n if (!_.isUndefined(this.props.service.bookingTimeStep)) {\r\n this.setState({\r\n time_step: this.props.service.bookingTimeStep\r\n });\r\n }\r\n\r\n if (!_.isUndefined(this.props.serviceId)) {\r\n this.servicesSlots(this.props.serviceId, this.state.startDate, this.state.current_view);\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.props.dispatch(resourceActions.emptyServicesSlots());\r\n }\r\n componentWillUpdate(nextProps, nextState) {\r\n\r\n if (this.props.services != nextProps.services && nextProps.services.length > 0) {\r\n\r\n this.props.dispatch(\r\n resourceActions.fetchServiceDetail(this.state.serviceId),\r\n );\r\n\r\n this.servicesSlots(this.state.serviceId, this.state.startDate, this.state.current_view);\r\n\r\n }\r\n\r\n // if (\r\n // this.state.serviceId !== nextState.serviceId &&\r\n // !_.isUndefined(nextState.serviceId)\r\n // ) {\r\n // this.props.dispatch(\r\n // resourceActions.fetchServiceDetail(nextState.serviceId),\r\n // );\r\n\r\n // console.log(nextState.serviceId);\r\n\r\n // this.servicesSlots(nextState.serviceId, nextState.startDate, this.state.current_view);\r\n\r\n // }\r\n\r\n //old daily slot list\r\n if (this.props.selectedServiceSlot !== nextProps.selectedServiceSlot) {\r\n this.setState({\r\n selectedServiceSlot: nextProps.selectedServiceSlot\r\n });\r\n }\r\n\r\n if (this.props.selectedEventsSlots !== nextProps.selectedEventsSlots) {\r\n this.setState({\r\n selectedEventsSlots: nextProps.selectedEventsSlots\r\n });\r\n }\r\n\r\n if (this.state.startDate !== nextState.startDate) {\r\n\r\n this.setState({\r\n startDate: nextState.startDate,\r\n endDate: nextState.endDate\r\n });\r\n\r\n\r\n this.servicesSlots(this.state.serviceId, nextState.startDate, this.state.current_view);\r\n\r\n this.loadEventSlots(this.state.selected_event_resources, nextState.startDate, nextState.endDate);\r\n }\r\n\r\n if (this.state.current_view !== nextState.current_view) {\r\n this.setState({\r\n current_view: nextState.current_view\r\n });\r\n this.servicesSlots(this.state.serviceId, this.state.startDate, nextState.current_view);\r\n this.loadEventSlots(this.state.selected_event_resources, this.state.startDate, this.state.endDate);\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n\r\n if (!_.isUndefined(this.props.service) &&\r\n !_.isUndefined(this.props.service.bookingTimeStep) &&\r\n this.props.service.bookingTimeStep !== prevProps.service.bookingTimeStep\r\n ) {\r\n this.setState({ time_step: this.props.service.bookingTimeStep });\r\n }\r\n\r\n if (prevProps.service !== this.props.service && !_.isUndefined(this.props.service)) {\r\n if (!_.isUndefined(this.props.service.detailGroupId))\r\n this.loadBookingQuestions(this.props.service.detailGroupId);\r\n\r\n this.props.dispatch(resourceActions.setServiceUnit(this.props.service.durationUnit));\r\n }\r\n\r\n }\r\n loadBookingQuestions(detail_group_id) {\r\n this.props.dispatch(resourceActions.fetchBookingQuestions(detail_group_id));\r\n }\r\n\r\n servicesSlots(serviceId, date, view) {\r\n\r\n\r\n if (view === calendarViews.Week) {\r\n let start_date = dateFormat(moment(date.startOf(\"week\")._d, \"isoDate\"));\r\n let end_date = dateFormat(moment(date.endOf(\"week\")._d, \"isoDate\"));\r\n\r\n this.props.dispatch(\r\n resourceActions.fetchServicesSlots(\r\n serviceId,\r\n start_date, end_date, success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n\r\n }\r\n )\r\n );\r\n } else if (view === calendarViews.Day) {\r\n this.props.dispatch(\r\n resourceActions.fetchServicesSlots(\r\n serviceId,\r\n date._d, date._d, success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n\r\n }\r\n )\r\n );\r\n }\r\n\r\n }\r\n\r\n selectedServiceSlots(eventId, date, serviceId, eventName) {\r\n\r\n // this.props.dispatch(\r\n // resourceActions.getSelectedEventSlot(\r\n // eventId,\r\n // new Date(date._d),\r\n // serviceId,\r\n // eventName, success => {\r\n // if (success === true) {\r\n // this.setState({\r\n // request_fail: undefined\r\n // });\r\n // } else {\r\n\r\n // this.setState({\r\n // request_fail: true\r\n // });\r\n // }\r\n // }\r\n // )\r\n // );\r\n\r\n\r\n }\r\n\r\n availaibleTimeData(serviceId, date, eventId) {\r\n\r\n this.props.dispatch(\r\n resourceActions.getServiceAvailability(serviceId, date, eventId)\r\n );\r\n }\r\n handleDateChange(date) {\r\n\r\n const { eventId, serviceId, startDate, eventName, current_view } = this.state;\r\n\r\n this.setState({\r\n startDate: date\r\n });\r\n\r\n this.servicesSlots(this.props.serviceId, date, current_view);\r\n if (eventId) {\r\n this.selectedServiceSlots(eventId, date, this.props.serviceId, eventName);\r\n }\r\n }\r\n\r\n handleSelectChange(val) {\r\n\r\n\r\n const { servicesSlots } = this.props;\r\n const { serviceId, startDate, endDate } = this.state;\r\n\r\n let options = _.map(servicesSlots, item => {\r\n return { eventName: item.name, eventId: item.event_id };\r\n });\r\n let selected_event_resource = [];\r\n\r\n //reform selected resource to usable object values\r\n const temp = _.map(val, o => {\r\n let curre_event = _.find(options, { eventId: o });\r\n if (!_.isUndefined(curre_event)) {\r\n selected_event_resource.push(curre_event);\r\n }\r\n return o;\r\n });\r\n\r\n\r\n this.setState({\r\n selected_event_resources: selected_event_resource\r\n });\r\n\r\n //fetch resources based on selected event resource\r\n this.loadEventSlots(selected_event_resource, startDate, endDate);\r\n\r\n\r\n // if (!_.isUndefined(evtName)) {\r\n\r\n // this.setState({\r\n // eventId: val.target.value,\r\n // eventName: evtName.name\r\n // });\r\n\r\n // this.selectedServiceSlots(\r\n // val.target.value,\r\n // startDate,\r\n // this.props.serviceId,\r\n // evtName.name\r\n // );\r\n\r\n // this.availaibleTimeData(\r\n // this.props.serviceId,\r\n // dateFormat(startDate._d, \"isoDate\"),\r\n // val.target.value\r\n // );\r\n // }\r\n\r\n \r\n\r\n }\r\n\r\n handleRightClick(e) {\r\n\r\n this.props.history.push(\"/reception/tenant\");\r\n }\r\n handleBackClick(e) {\r\n\r\n this.props.history.push(\"/\");\r\n }\r\n onLogin() {\r\n\r\n this.props.navigationController.pushView(\r\n
    Today
    \r\n );\r\n }\r\n\r\n modalActionTrigered(action, valid) {\r\n\r\n\r\n if (!_.isUndefined(this.props.serviceId)) {\r\n\r\n this.serviceBookings(this.props.serviceId, dateFormat(this.state.startDate._d, \"isoDate\"));\r\n this.servicesSlots(this.props.serviceId, this.state.startDate, this.state.current_view);\r\n\r\n if (this.state.selected_event_resources && this.state.selected_event_resources.length > 0)\r\n this.loadEventSlots(this.state.selected_event_resources, this.state.startDate, this.state.endDate);\r\n }\r\n // setTimeout(() => {\r\n // if (valid === true) {\r\n // this.serviceBookings(\r\n // this.props.serviceId,\r\n // dateFormat(this.state.startDate._d, \"isoDate\")\r\n // );\r\n // this.servicesSlots(this.props.serviceId, this.state.startDate, this.state.current_view);\r\n\r\n // setTimeout(() => { }, 0);\r\n // // if (this.state.eventId) {\r\n // // this.selectedServiceSlots(\r\n // // this.state.eventId,\r\n // // this.state.startDate,\r\n // // this.props.serviceId,\r\n // // this.state.eventName\r\n // // );\r\n // // }\r\n\r\n // if (this.state.selected_event_resources && this.state.selected_event_resources.length > 0)\r\n // this.loadEventSlots(this.state.selected_event_resources, this.state.startDate, this.state.endDate);\r\n // }\r\n // }, 0);\r\n }\r\n serviceBookings(serviceid, date) {\r\n\r\n const { current_view } = this.state;\r\n\r\n let startDate = moment(date);\r\n let endDate = moment(date);\r\n\r\n\r\n if (current_view === calendarViews.Day) {\r\n startDate = moment(date).startOf(\"day\");\r\n endDate = moment(date).endOf(\"day\");\r\n } else if (current_view === calendarViews.Week) {\r\n startDate = moment(date).startOf(\"week\");\r\n endDate = moment(date).endOf(\"week\");\r\n\r\n }\r\n\r\n this.props.dispatch(resourceActions.getServiceBookings_range(serviceid, startDate.format(\"YYYY-MM-DD\"), endDate.format(\"YYYY-MM-DD\"), success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n }));\r\n\r\n }\r\n switchTypeHandler = (type) => {\r\n\r\n switch (type) {\r\n case \"week\":\r\n this.setState({\r\n startDate: moment().startOf(\"week\"),\r\n endDate: moment().endOf(\"week\"),\r\n // current_view: type\r\n });\r\n\r\n break;\r\n case \"work_week\":\r\n this.setState({\r\n startDate: moment().startOf(\"week\"),\r\n endDate: moment().endOf(\"week\"),\r\n // current_view: type\r\n });\r\n\r\n break;\r\n case \"day\":\r\n this.setState({\r\n startDate: moment(),\r\n endDate: moment(),\r\n // current_view: type\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n this.state.current_view = type;\r\n\r\n // this.setState({\r\n // current_view: type\r\n // })\r\n\r\n }\r\n\r\n loadServicesOption(options) {\r\n const { eventId } = this.state;\r\n\r\n return (\r\n
    \r\n
    \r\n {options && (\r\n this.handleSelectChange(e)}\r\n selectedOption={eventId}\r\n />\r\n )}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n //helper method to call slot data on selected events\r\n loadEventSlots(events, startDate, endDate) {\r\n\r\n const { current_view,\r\n } = this.state;\r\n\r\n const { serviceId } = this.props;\r\n\r\n if (current_view === calendarViews.Week) {\r\n\r\n this.props.dispatch(resourceActions.getSelectedEventsSlots(events, new Date(startDate.startOf(\"week\")._d),\r\n new Date(endDate.endOf(\"week\")._d), serviceId, success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n }));\r\n\r\n } else if (current_view === calendarViews.Day) {\r\n\r\n this.props.dispatch(resourceActions.getSelectedEventsSlots(events, new Date(startDate._d),\r\n new Date(startDate._d), serviceId, success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n }));\r\n }\r\n\r\n }\r\n\r\n\r\n //keep for carlendar navigation\r\n handleNavigation(date, view) {\r\n\r\n switch (view) {\r\n case \"day\":\r\n this.setState({\r\n startDate: moment(date).startOf(\"day\"),\r\n endDate: moment(date).endOf(\"day\")\r\n });\r\n\r\n //this.servicesSlots(this.state.serviceId, moment(date), view);\r\n\r\n // this.loadEventSlots(this.state.selected_event_resources,\r\n // moment(date),\r\n // moment(date));\r\n return date;\r\n case \"work_week\":\r\n\r\n this.setState({\r\n startDate: moment(date).startOf(\"week\"),\r\n endDate: moment(date).endOf(\"week\")\r\n });\r\n\r\n // this.selectedServiceSlots(this.state.serviceId, moment(date), view);\r\n // this.loadEventSlots(this.state.selected_event_resources,\r\n // new Date(moment(date).startOf(\"week\")._d),\r\n // new Date(moment(date).endOf(\"week\"))._d);\r\n return date;\r\n case \"week\":\r\n\r\n this.setState({\r\n startDate: moment(date).startOf(\"week\"),\r\n endDate: moment(date).endOf(\"week\")\r\n });\r\n\r\n // this.loadEventSlots(this.state.selected_event_resources,\r\n // new Date(moment(date).startOf(\"week\")._d),\r\n // new Date(moment(date).endOf(\"week\"))._d);\r\n return date;\r\n default:\r\n return date;\r\n }\r\n }\r\n\r\n\r\n render() {\r\n const {\r\n query,\r\n servicesSlots,\r\n service,\r\n basketQueue,\r\n bookingQuestions\r\n } = this.props;\r\n\r\n const {\r\n startDate,\r\n eventId,\r\n eventName,\r\n type,\r\n time_step,\r\n endDate\r\n } = this.state;\r\n\r\n let service_options = []\r\n let options = _.filter(_.map(servicesSlots, item => {\r\n\r\n if (_.isUndefined(_.find(service_options, { eventid: item.event_id }))) {\r\n service_options.push({ name: item.name, eventid: item.event_id });\r\n return { name: item.name, eventid: item.event_id };\r\n } else {\r\n return undefined;\r\n }\r\n\r\n }), o => !_.isUndefined(o));\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n {\r\n service &&\r\n this.state.selectedEventsSlots && this.state.current_view && !_.isUndefined(service.bookingTimeStep) ?\r\n this.props.blockSlotSelected}\r\n modalActionEvent={this.modalActionTrigered}\r\n switchTypeHandler={this.switchTypeHandler}\r\n servicesOptions={this.loadServicesOption(options)}\r\n handleNavigation={this.handleNavigation}\r\n requestStatus={this.state.request_fail}\r\n selectedEventResources={this.state.selected_event_resources}\r\n bookingQuestions={bookingQuestions}\r\n /> :
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n query: resourceSelector.getResourceQuery(state),\r\n servicesSlots: resourceSelector.getServicesSlots(state),\r\n selectedServiceSlot: resourceSelector.getSelectedServiceSlot(state),\r\n service: resourceSelector.getService(state),\r\n basket: checkoutSelector.getBasket(state),\r\n basketQueue: resourceSelector.getBasketQueue(state),\r\n basket: checkoutSelector.getBasket(state),\r\n blockSlotSelected: resourceSelector.getBlockSlotSelected(state),\r\n serviceId: resourceSelector.getServiceId(state),\r\n selectedEventsSlots: resourceSelector.getSelectedEventsSlots(state),\r\n bookingQuestions: resourceSelector.getBookingQuestions(state),\r\n services: resourceSelector.getServices(state)\r\n\r\n };\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps)(RoomsScreen));","import React, { Component } from \"react\";\r\n// import { connect } from \"react-redux\";\r\n// import * as resourceActions from \"../../store/Resources/actions\";\r\n// import * as resourceSelector from \"../../store/Resources/reducer\";\r\nimport autoBind from \"react-autobind\";\r\nimport _ from 'lodash';\r\nimport ReactPaginate from 'react-paginate';\r\n\r\nimport \"../../sass/components/ServiceList/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\nclass ListItem extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n active: this.props.active,\r\n eventSelectionprocessing: undefined\r\n // maxLimit: false\r\n }\r\n\r\n autoBind(this);\r\n }\r\n\r\n\r\n render() {\r\n\r\n return (\r\n {\r\n this.setState(prevState => {\r\n let newState = !prevState.active;\r\n let eventIDs = this.props.event_ids;\r\n\r\n if (eventIDs.length === 3 && !prevState.active) {\r\n return;\r\n }\r\n else {\r\n eventIDs = [...eventIDs, this.props.event_id];\r\n }\r\n if (prevState.active) {\r\n eventIDs = eventIDs.filter(e => e !== this.props.event_id);\r\n }\r\n\r\n // if (this.props.status !== true) { }\r\n this.props.handleClick(newState, this.props.value, this.props.event_id);\r\n\r\n this.props.onClick(eventIDs)\r\n\r\n return { active: newState }\r\n\r\n\r\n })\r\n }}\r\n\r\n className={`${this.props.status === true ? \"disabled \" : \"\"} ${!this.state.active && !this.props.active ? '' : 'selected'}`}\r\n >\r\n {this.props.value}\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nclass ServiceListPager extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showList: false,\r\n value: [],\r\n event_id: [],\r\n showSpinner: this.props.services.length === 0 ? true : false,\r\n showDownList: _.isUndefined(this.props.processing) ? true : undefined,\r\n iconClass: \"fa-angle-down\",\r\n currentPage: 0,\r\n dataList: [],\r\n currentList: []\r\n }\r\n\r\n autoBind(this);\r\n\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.services !== this.props.services) {\r\n\r\n let options = _.map(this.props.services, (item, index) => {\r\n\r\n return (\r\n { label: item.name, value: item.eventid, key: index, _handleItemClick: this.handleItemClick, _event_ids: this.state.event_id });\r\n });\r\n\r\n let n = 13;\r\n let data = _.groupBy(options, dataItem => {\r\n\r\n return Math.floor(dataItem.key / n);\r\n });\r\n let dataList = _.toArray(data);\r\n this.setState({\r\n dataList: dataList,\r\n currentList: dataList.length > 0 ? dataList[0] : []\r\n });\r\n }\r\n\r\n if (prevProps.selectedOption !== this.props.selectedOption) {\r\n if (this.props.selectedOption && this.props.selectedOption.length > 0) {\r\n this.setState({\r\n value: _.map(this.props.selectedOption, val => {\r\n return val.eventName\r\n }),\r\n event_id: _.map(this.props.selectedOption, val => {\r\n return val.eventId\r\n })\r\n });\r\n } else if (this.props.selectedOption && this.props.selectedOption.length === 0) {\r\n this.setState({\r\n value: [],\r\n event_id: []\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n }\r\n renderValue() {\r\n let { value } = this.state;\r\n if (!value.length) return this.props.placeHolder ? this.props.placeHolder : \"Select...\"\r\n else return value.length + \" selected\";\r\n // return value.join(', ')\r\n }\r\n toggleList() {\r\n let { showList } = this.state;\r\n if (!showList) {\r\n this.setState({\r\n iconClass: \"fa-angle-up\"\r\n });\r\n }\r\n else {\r\n this.setState({\r\n iconClass: \"fa-angle-down\"\r\n });\r\n }\r\n this.setState(prevState => ({ showList: !prevState.showList }));\r\n }\r\n\r\n\r\n toggleSpiiner() {\r\n let { showList } = this.state;\r\n if (showList) {\r\n //var millisecondsToWait = 500;\r\n var CurruntContext = this;\r\n setTimeout(function () {\r\n // Whatever you want to do after the wait\r\n CurruntContext.setState(prevState => ({ showUparrow: prevState.showList }))\r\n // CurruntContext.setState(prevState => ({ showSpinner: false }))\r\n }, 500);\r\n }\r\n }\r\n\r\n handleItemClick(active, val, evntid) {\r\n\r\n\r\n let { value, event_id } = this.state;\r\n\r\n if (active && value.length < 3) {\r\n value = [...value, val];\r\n if (!_.includes(event_id, (evntid))) {\r\n event_id = [...event_id, evntid];\r\n }\r\n }\r\n else {\r\n value = value.filter(e => e !== val);\r\n event_id = event_id.filter(e => e !== evntid);\r\n }\r\n this.setState({ value })\r\n this.setState({ event_id })\r\n\r\n }\r\n\r\n handlePagerChanged(page) {\r\n this.setState({\r\n currentPage: page.selected,\r\n });\r\n\r\n }\r\n\r\n //helper method to get current page list item\r\n getCurrentPageList(index) {\r\n const { dataList } = this.state;\r\n\r\n return dataList[index];\r\n }\r\n render() {\r\n const { handleSelectionChange, selectedOption, processing, eventSelectionprocessing } = this.props;\r\n const { value } = this.state;\r\n\r\n return (\r\n\r\n this.node = node}\r\n className=\"select\">\r\n\r\n \r\n\r\n \r\n\r\n
    \r\n\r\n {\r\n this.state.dataList && _.map(this.state.dataList, (optionList, indx) => {\r\n\r\n return
    \r\n {\r\n _.map(optionList, (item, index) => {\r\n\r\n return handleSelectionChange(e)\r\n }\r\n event_ids={this.state.event_id}\r\n active={!_.isUndefined(_.find(selectedOption, { eventId: item.value }))}\r\n selectedOption={selectedOption}\r\n status={eventSelectionprocessing}\r\n />\r\n })\r\n }\r\n
    \r\n\r\n })\r\n }\r\n\r\n
    \r\n\r\n
    \r\n {\r\n this.state.dataList.length > 1 && this.handlePagerChanged(val)}\r\n />\r\n }\r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\nServiceListPager.propTypes = {\r\n serviceId: PropTypes.string,\r\n date: PropTypes.string,\r\n services: PropTypes.array,\r\n handleSelectionChange: PropTypes.func\r\n};\r\n\r\n// function mapStateToProps(state, ownProps) {\r\n// return {\r\n// // services: resourceSelector.getServices(state)\r\n// };\r\n// }\r\nexport default ServiceListPager;","import React, { Component } from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport autoBind from \"react-autobind\";\r\nimport dateFormat from \"dateformat\";\r\nimport _ from \"lodash\";\r\n\r\nimport BigCalendar from \"react-big-calendar\";\r\nimport moment from \"moment\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport * as CyptoHelper from \"../../utility/cryptoUtility\";\r\n\r\nimport CustomDayWrapper from \"../CalendarCustomComponents/CustomDayWrapper\";\r\n\r\nimport Week from \"react-big-calendar/lib/Week\";\r\n//import WorkWeek from \"react-big-calendar/lib/WorkWeek\";\r\nimport TimeGrid from \"react-big-calendar/lib/TimeGrid\";\r\nimport dates from \"react-big-calendar/lib/utils/dates\";\r\nimport localizer from \"react-big-calendar/lib/localizer\";\r\nimport EventCell from \"react-big-calendar/lib/EventCell\";\r\n\r\nimport EventModal from \"../ariaModals/EventModal\";\r\nimport CustomEventWrapper from \"../CalendarCustomComponents/CustomEventWrapper\";\r\n\r\nimport * as resourceSelector from \"../../store/Resources/reducer\";\r\nimport * as resourceActions from \"../../store/Resources/actions\";\r\n//import * as serviceModuleActions from \"../../store/ServiceModules/actions\";\r\nimport * as serviceModuleSelectors from \"../../store/ServiceModules/reducer\";\r\n\r\nimport * as resourceMonthlyActions from \"../../store/ResourcesMonthly/actions\";\r\nimport * as resourceMonthlySelectors from \"../../store/ResourcesMonthly/reducer\";\r\nimport * as tenantSelectors from \"../../store/Tenants/reducer\";\r\nimport * as checkoutSelectors from \"../../store/Checkout/reducer\";\r\n\r\nimport \"../../sass/components/BigCalendar/react-big-calendarMonthly.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\nBigCalendar.setLocalizer(BigCalendar.momentLocalizer(moment));\r\n\r\n\r\n\r\nfunction dayWrapperClicked() { }\r\n\r\nconst calendarViews = {\r\n Day: \"day\",\r\n Week: \"week\",\r\n WorkWeek: \"work_week\",\r\n Month: \"month\"\r\n};\r\nconst ServiceUnitType = {\r\n Day: \"day\",\r\n Minute: \"minute\"\r\n};\r\n\r\nconst ORDER_KEY = \"order_key\";\r\n\r\n//test template for cards, some settings can be moved into css styling for each cards, see sample class included\r\nconst custom_cards = [\r\n { card: 0, color: \"#ffffff\", border: \"#009cc4\", borderPast: \"#7fcee2\" },\r\n { card: 1, color: \"#0ea610\", border: \"#0ea610\", borderPast: \"#87d388\" },\r\n { card: 2, color: \"#fa4b2e\", border: \"#fa4b2e\", borderPast: \"#fda597\" },\r\n { card: 3, color: \"#009cc4\", border: \"#009cc4\", borderPast: \"#7fcee2\" }];\r\n\r\nconst CURRENT_DATE = moment().toDate();\r\nconst MAX_DATE_BOOKINGS = 7;\r\nconst customDateCellWrapper = ({ range, value, children }) => {\r\n var isToday = moment(value).format(\"YYYY-MM-DD\") === moment(CURRENT_DATE).format(\"YYYY-MM-DD\");\r\n\r\n if (moment(value).toDate() === CURRENT_DATE) { }\r\n return (\r\n
    \r\n {children}\r\n
    \r\n )\r\n // return {\r\n // style: {\r\n // ...children.style\r\n // }\r\n // }\r\n // return React.cloneElement(Children.only(children), {\r\n // style: {\r\n // ...children.style,\r\n // color: '#009cc4'\r\n // },\r\n // });\r\n}\r\n\r\n\r\nconst myCustomDayWrapper = () => (\r\n \r\n);\r\nfunction eventPropsGetter(event, start, end, isSelected) {\r\n\r\n if (!event.isAvailable && !event.inBasket && _.isUndefined(event.booked) && _.isUndefined(event.blocked)) {\r\n return {\r\n style: {\r\n backgroundColor: \"rgba(255,255,255,0)\",\r\n border: 0,\r\n borderRadius: 0,\r\n zIndex: 0,\r\n\r\n }\r\n };\r\n } else if (event.inBasket && !event.isAvailable) {\r\n return {\r\n style: {\r\n backgroundColor: \"#AEDBBC \",\r\n border: 0,\r\n borderRadius: 0\r\n }\r\n };\r\n } else if (event.isAvailable) {\r\n return {\r\n style: {\r\n backgroundColor: \"#FFFFFF \",\r\n borderBottom: \"0.9px solid #d9d9d9\",\r\n borderTop: 0,\r\n borderLeft: 0,\r\n borderRight: 0,\r\n borderRadius: 0,\r\n opacity: 0,\r\n color: \"#ffffff\"\r\n }\r\n };\r\n } else if (\r\n !event.isAvailable &&\r\n !_.isUndefined(event.booked) &&\r\n event.booked\r\n ) {\r\n let current_card = _.find(custom_cards, { card: event.card })\r\n return {\r\n className: !_.isUndefined(event.card) ? event.past === true ? \"card--\" + event.card + \" event past\" : \"card--\" + event.card + \" event\" : \"event\", //provide special class styling attribute based on card no ie, inner text, headers etc\r\n style: {\r\n border: \"0px solid #ffffff\",\r\n borderLeft: !_.isUndefined(current_card) ? \"solid \" + 2 + \"px \" + (!_.isUndefined(event.card) && event.past === true ? current_card.borderPast : current_card.border) : \"\"\r\n\r\n }\r\n };\r\n } else if (!event.isAvailable\r\n && !_.isUndefined(event.blocked) && event.blocked) {\r\n let current_card = _.find(custom_cards, { card: event.blocked_card });\r\n\r\n return {\r\n className: event.past === true ? \"card--blocked past\" : \"card--blocked\",\r\n style: {\r\n border: \"0px solid #ffffff\",\r\n borderLeft: !_.isUndefined(current_card) ? \"solid \" + 2 + \"px \" + current_card.border : \"\"\r\n }\r\n }\r\n }\r\n}\r\n\r\n// function slotPropGetter(date) {\r\n// return {\r\n// style: {\r\n// backgroundColor: \"#AEDBBC\",\r\n// border: 0,\r\n// borderRadius: 0\r\n// }\r\n// };\r\n// }\r\n\r\n\r\nconst CustomEventCell = (event) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst customDayPropGetter = (date) => {\r\n \r\n if (moment(date).toDate() === CURRENT_DATE)\r\n return {\r\n className: 'special-day',\r\n style: {\r\n color: '#009cc4'\r\n }\r\n };\r\n else return {};\r\n}\r\n\r\nclass MyWeek extends Week {\r\n handleNav(date, action) { }\r\n\r\n render() {\r\n let { date } = this.props;\r\n let { start, end } = MyWeek.range(date, this.props);\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nMyWeek.range = (date, { culture }) => {\r\n let firstOfWeek = localizer.startOfWeek(culture);\r\n firstOfWeek = new Date().getDay() - 1;\r\n let start = dates.startOf(date, \"week\", firstOfWeek);\r\n let end = dates.endOf(date, \"week\", firstOfWeek);\r\n\r\n if (firstOfWeek === 1) {\r\n end = dates.subtract(end, 2, \"day\");\r\n } else {\r\n start = dates.add(start, 1, \"day\");\r\n end = dates.add(end, 1, \"day\");\r\n }\r\n\r\n return {\r\n start,\r\n end\r\n };\r\n};\r\nclass BookingCalendarCustom extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n timeSlot: 1,\r\n modal: \"\",\r\n bookingId: 0,\r\n date: \"\" /*date string xxxx-xx-xx */,\r\n time: \"\" /*time specified in 24hr A (11:00 AM) */,\r\n duration: \"\" /* duration calculated in minutes */,\r\n selectedBookedSlot: undefined,\r\n error: \"\",\r\n booking_action_valid: false,\r\n min_cancel_time: moment(),\r\n slots: [],\r\n cancelledBooking: undefined,\r\n bookingUpdated: undefined,\r\n type2: \"\",\r\n current_nav_view: \"Today\",\r\n switchActive: \"\",\r\n open: false,\r\n slotSelected: undefined,\r\n eventsResourceSelected: this.props.selectedEventResources,\r\n selectedSartDate: undefined,\r\n selectedEndDate: undefined,\r\n selectedSlotTimes: [],\r\n slotDataRefreshed: false,\r\n selectedTenant: undefined,\r\n basketQue: [],\r\n paymentStatus: undefined,\r\n max_day_bookings: MAX_DATE_BOOKINGS\r\n\r\n };\r\n\r\n autoBind(this);\r\n\r\n this.props.dispatch(resourceActions.getBookingsCancelReasons());\r\n this.props.dispatch(resourceActions.getBookingErrors());\r\n }\r\n\r\n handleCloseClick(event, modalActive) {\r\n this.setState({ modal: \"\", modalActive: false });\r\n\r\n if (this.props.fromRedirect === true) {\r\n this.props.modalActionEvent(\"payment\", this.props.paymentAction);\r\n }\r\n }\r\n\r\n getApplicationNode = () => {\r\n return document.getElementById(\"bookingApp\");\r\n };\r\n\r\n\r\n modalActionCompleted(action, valid) {\r\n\r\n this.props.modalActionEvent(action, valid);\r\n\r\n if (valid === true)\r\n setTimeout(() => {\r\n if (\r\n action === \"delete\" &&\r\n !_.isUndefined(this.state.cancelledBooking)\r\n ) {\r\n this.props.dispatch(\r\n resourceActions.nofifyCancelBooking(\r\n this.state.cancelledBooking.booking\r\n )\r\n );\r\n } else if (\r\n action === \"update\" &&\r\n !_.isUndefined(this.state.bookingUpdated)\r\n ) {\r\n\r\n if (this.state.bookingId === this.state.bookingUpdated.id)\r\n this.props.dispatch(\r\n resourceActions.notifyEditBooking(this.state.bookingUpdated.id)\r\n );\r\n } else if (action === \"block\") {\r\n this.setState({ modal: \"\", modalActive: false });\r\n } else if (action === \"create\") {\r\n\r\n } else if (action === \"payment\") {\r\n\r\n\r\n this.setState({\r\n actionTriggered: action,\r\n modal: \"\",\r\n modalActive: false\r\n });\r\n\r\n let data = {\r\n itemQue: this.props.basketQueue,\r\n tenant: this.props.selectedTenant,\r\n selectedEvents: this.props.selectedEvents,\r\n selectedResource: _.find(this.props.selectedEvents, { eventId: this.props.eventId }),\r\n selectedService: this.props.service,\r\n carlendarView: this.props.current_view,\r\n basket: this.props.basket,\r\n chargeType: this.props.chargeType\r\n };\r\n\r\n\r\n var crypted = CyptoHelper.encryptAES(data);\r\n\r\n // var crypt = \"?data=\" + encodeURIComponent(crypted);\r\n localStorage.setItem(ORDER_KEY, crypted);\r\n\r\n setTimeout(() => {\r\n this.props.history.push({\r\n pathname: \"/concierge/bookings/payment\"\r\n\r\n });\r\n window.scrollTo(0, 0);\r\n }, 0);\r\n }\r\n\r\n }, 0);\r\n\r\n\r\n }\r\n componentDidMount() {\r\n\r\n\r\n }\r\n UNSAFE_componentWillMount() {\r\n const { serviceId, date } = this.props;\r\n\r\n\r\n if (this.props.service) {\r\n this.setState({\r\n\r\n max_day_bookings: !_.isUndefined(this.props.service.max_bookings) &&\r\n this.props.service.max_bookings > MAX_DATE_BOOKINGS ? this.props.service.max_bookings : MAX_DATE_BOOKINGS\r\n });\r\n }\r\n this.serviceBookings(serviceId, dateFormat(date._d, \"isoDate\"));\r\n\r\n\r\n if (this.props.fromRedirect && this.props.fromRedirect === true) {\r\n let status_screen = \"\";\r\n if (this.props.paymentAction === true) {\r\n status_screen = \"booking_success\"\r\n\r\n // this.props.dispatch(resourceActions.notifyCreateBooking(this.props.booking));\r\n } else if (this.props.paymentAction === false) {\r\n status_screen = \"booking_error\"\r\n }\r\n\r\n this.setState({\r\n modal: this.showModal(true),\r\n modalActive: true,\r\n modalScreenType: status_screen,\r\n paymentStatus: this.props.paymentAction\r\n });\r\n }\r\n\r\n }\r\n componentWillUnmount() {\r\n this.props.dispatch(resourceActions.setActionRedirect(undefined));\r\n this.props.dispatch(resourceActions.setPaymentAction(undefined));\r\n\r\n }\r\n UNSAFE_componentWillReceiveProps(nextProps, nextState) {\r\n if (this.props.selectedBookingDetail !== nextProps.selectedBookingDetail) {\r\n if (\r\n !_.isUndefined(nextProps.selectedBookingDetail.min_cancellation_time)\r\n ) {\r\n this.setState({\r\n min_cancel_time: moment(\r\n nextProps.selectedBookingDetail.min_cancellation_time\r\n )\r\n });\r\n }\r\n }\r\n if (this.props.bookingsCancelled !== nextProps.bookingsCancelled) {\r\n this.setState({\r\n cancelledBooking:\r\n !_.isUndefined(nextProps.bookingsCancelled) &&\r\n nextProps.bookingsCancelled.length > 0\r\n ? nextProps.bookingsCancelled[0]\r\n : undefined\r\n });\r\n }\r\n if (this.props.bookingUpdated !== nextProps.bookingUpdated) {\r\n this.setState({\r\n bookingUpdated:\r\n !_.isUndefined(nextProps.bookingUpdated.booking) &&\r\n nextProps.bookingUpdated.booking.length > 0\r\n ? nextProps.bookingUpdated.booking[0]\r\n : undefined\r\n });\r\n }\r\n\r\n if (this.state.slots !== nextState.slots) {\r\n this.setState({\r\n slots: nextProps.slots\r\n });\r\n }\r\n\r\n if (this.props.selectedEventResources !== nextProps.selectedEventResources) {\r\n this.setState({\r\n eventsResourceSelected: nextProps.selectedEventResources\r\n });\r\n }\r\n\r\n if (this.props.bookingCreated !== nextProps.bookingCreated) {\r\n this.setState({\r\n bookingCreated: !_.isUndefined(nextProps.bookingCreated) && nextProps.bookingCreated ? nextProps.bookingCreated : undefined\r\n });\r\n }\r\n\r\n // if (this.state.paymentStatus !== nextState.paymentStatus && !_.isUndefined(nextState.paymentStatus)) {\r\n // console.log(this.props);\r\n // //this.props.dispatch(resourceActions.notifyCreateBooking(this.props.booking));\r\n // }\r\n }\r\n\r\n UNSAFE_componentWillUpdate(nextProps, nextState) {\r\n\r\n\r\n // if (this.state.actionTriggered !== nextState.actionTriggered) {\r\n // if (nextState.actionTriggered === \"payment\") {\r\n\r\n // browserHistory.push({\r\n // pathname: \"/concierge/bookings/payment\",\r\n // state: {\r\n // itemQue: basketQue,\r\n // tenant: selectedTenant\r\n // }\r\n // });\r\n // }\r\n\r\n // }\r\n\r\n\r\n }\r\n\r\n //keep for carlendar anvigation\r\n // handleNavigation(date, action) {\r\n // switch (action) {\r\n // case \"day\":\r\n // console.log(date);\r\n // if (date >= new Date().setHours(0)) {\r\n // this.props.dispatch(\r\n // resourceActions.fetchServicesSlots(this.props.serviceId, date._d)\r\n // );\r\n // }\r\n // return date;\r\n // default:\r\n // return date;\r\n // }\r\n // }\r\n componentDidUpdate(prevProps, prevState) {\r\n const { selectedTenant, basketQue } = this.props;\r\n\r\n if (\r\n prevProps.serviceId !== this.props.serviceId ||\r\n prevProps.date !== this.props.date\r\n ) {\r\n\r\n this.serviceBookings(\r\n this.props.serviceId,\r\n dateFormat(this.props.date._d, \"isoDate\")\r\n );\r\n }\r\n\r\n if (prevState.selectedBookedSlot !== this.state.selectedBookedSlot) {\r\n this.setState({\r\n selectedBookedSlot: this.state.selectedBookedSlot\r\n });\r\n }\r\n\r\n\r\n\r\n if (prevProps.selectedTenant !== selectedTenant) {\r\n this.setState({\r\n selectedTenant: selectedTenant\r\n });\r\n }\r\n if (prevProps.basketQue !== basketQue) {\r\n this.setState({\r\n basketQue: basketQue\r\n });\r\n }\r\n }\r\n\r\n //handle slot selection\r\n slotSelected(slotInfo) {\r\n\r\n\r\n\r\n //const { serviceId } = this.props;\r\n const { slots, serviceId } = this.state;\r\n let startDate = moment(slotInfo.start);\r\n let endDate = moment(slotInfo.end);\r\n\r\n\r\n this.setState({\r\n selectedStartDate: startDate,\r\n selectedEndDate: endDate\r\n });\r\n\r\n\r\n //Get slot data for selected slot\r\n let selectedSlotTimes = _.filter(slots, o => {\r\n return moment(o.start) >= startDate && moment(o.start) < endDate;\r\n });\r\n\r\n\r\n var isAvailable = true;\r\n let price = 0;\r\n\r\n var slot_obj = _.map(selectedSlotTimes, slot => {\r\n\r\n if (moment(slot.start) < moment(new Date()))\r\n isAvailable = false;\r\n\r\n //price += slot.price\r\n return slot;\r\n });\r\n\r\n let slot = {};\r\n if (slotInfo && slot_obj.length > 0 && isAvailable === true) {\r\n\r\n slot = {\r\n isAvailable: true,\r\n inBasket: false,\r\n id: slot_obj[0].id,\r\n start: slotInfo.start,\r\n end: slotInfo.end,\r\n //price: price,\r\n duration: endDate.diff(startDate, 'days'), // moment.duration(endDate.diff(startDate)).asDays(),\r\n //start_min: min,\r\n //end_min: end_min,\r\n type: slotInfo.action,\r\n active: true\r\n };\r\n\r\n this.props.dispatch(resourceActions.setSelectedSlot(slot, serviceId));\r\n }\r\n\r\n\r\n if (slotInfo.action === \"select\") {\r\n let now = new Date();\r\n if (startDate.toDate() >= now && this.state.eventsResourceSelected && this.state.eventsResourceSelected.length > 0) {\r\n this.setState({\r\n modalActive: true,\r\n slotSelected: slot,\r\n modalScreenType: \"create\",\r\n selectedSlotTimes: selectedSlotTimes\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n this.getBookedBooking(slot_obj);\r\n }\r\n\r\n\r\n showModal(active) {\r\n const { eventsResourceSelected,\r\n modalScreenType,\r\n switchActive,\r\n slotSelected,\r\n selectedStartDate,\r\n selectedEndDate,\r\n max_day_bookings\r\n } = this.state;\r\n const { serviceDetail, bookingQuestions, step, serviceId, portalSettings } = this.props;\r\n const events = _.map(eventsResourceSelected, o => {\r\n return { name: o.eventName, eventId: o.eventId };\r\n })\r\n\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n //helper method to get selected booked slot\r\n getBookedBooking(slot) {\r\n const { bookings, selectedEvents } = this.props;\r\n\r\n\r\n let selected_booking = undefined;\r\n if (\r\n slot &&\r\n bookings &&\r\n !_.isUndefined(slot.booked) &&\r\n slot.booked === true\r\n ) {\r\n const event = _.find(selectedEvents, { eventId: slot.eventId });\r\n\r\n\r\n let stime = new Date(slot.start);\r\n let etime = new Date(slot.end);\r\n\r\n let smin = stime.getHours() * 60 + stime.getMinutes();\r\n let emin = etime.getHours() * 60 + etime.getMinutes();\r\n\r\n selected_booking = _.find(bookings, b => {\r\n //convert each booking time from to minutes\r\n let booking_start_time = moment(b.timeFrom, \"HH:mm A\");\r\n let booking_start_mins =\r\n booking_start_time.get(\"hour\") * 60 +\r\n booking_start_time.get(\"minutes\");\r\n\r\n //convert each booking end time to minutes\r\n let booking_end_time = moment(b.timeTo, \"HH:mm A\");\r\n let booking_end_min =\r\n booking_end_time.get(\"hour\") * 60 + booking_end_time.get(\"minutes\");\r\n\r\n //return booking that falls within a booked slot range\r\n return booking_start_mins === smin && booking_end_min === emin && event.eventName === b.resourceName;\r\n });\r\n\r\n\r\n } else {\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n //handle event selected\r\n eventSelected(slot, e) {\r\n const { serviceId } = this.props;\r\n const { slots } = this.state;\r\n\r\n if (slot.booked || slot.blocked) {\r\n\r\n\r\n //swap selected active property \r\n //in position cards based on package calculaions. \r\n let new_slots = _.map(slots, (data, index) => {\r\n if (data.id === slot.id) {\r\n return {\r\n ...data,\r\n active: true,\r\n };\r\n }\r\n\r\n return {\r\n ...data,\r\n active: false,\r\n };\r\n });\r\n\r\n\r\n this.setState({\r\n selectedBookedSlot: slot,\r\n slotSelected: slot,\r\n slots: new_slots\r\n });\r\n\r\n if (!_.isUndefined(slot.active) && slot.active === true) {\r\n this.setState({\r\n modal: this.showModal(slot, true),\r\n modalActive: true,\r\n modalScreenType: \"edit\"\r\n });\r\n }\r\n }\r\n\r\n if (slot.inBasket) {\r\n this.props.dispatch(resourceActions.deSelectSlot(slot));\r\n } else {\r\n if (slot.isAvailable) {\r\n\r\n let selected_slot = {\r\n isAvailable: true,\r\n inBasket: false,\r\n id: slot.id,\r\n start: slot.start,\r\n end: slot.end,\r\n price: slot.price,\r\n start_min: slot.start_min,\r\n end_min: slot.end_min,\r\n type: \"click\"\r\n };\r\n this.props.dispatch(\r\n resourceActions.setSelectedSlot(selected_slot, serviceId)\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n open: !this.state.open\r\n });\r\n\r\n\r\n }\r\n\r\n serviceBookings(serviceid, date) {\r\n\r\n const { current_view } = this.props;\r\n\r\n var date_ = moment(date).toDate(), y = date_.getFullYear(), m = date_.getMonth();\r\n\r\n var startDay = new Date(y, m, 1);\r\n var endDay = new Date(y, m + 1, 0);\r\n\r\n startDay = moment(startDay).subtract(7, 'd');\r\n endDay = moment(endDay).add(7, 'd');\r\n\r\n this.props.dispatch(resourceMonthlyActions.getServiceBookings(serviceid, startDay.format(\"YYYY-MM-DD\"), endDay.format(\"YYYY-MM-DD\"), success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n }));\r\n\r\n\r\n }\r\n\r\n //helper to get overlapping related time event slot from slots list\r\n getOverlappingSlot(slots, selected_slot) {\r\n const current_slots = _.filter(slots, slot => {\r\n return moment(selected_slot.start).format(\"YYYY-MM-DD\") === moment(slot.start).format(\"YYYY-MM-DD\") &&\r\n\r\n !_.isUndefined(slot.booked) && slot.booked === true &&\r\n ((selected_slot.start_min < slot.start_min && slot.start_min < selected_slot.end_min) ||\r\n (selected_slot.start_min === slot.start_min && slot.end_min <= selected_slot.end_min) ||\r\n (selected_slot.start_min >= slot.start_min && slot.end_min >= selected_slot.end_min)\r\n );\r\n\r\n });\r\n const sort_slot = _.orderBy(current_slots, ['start_min'], ['asc']);\r\n\r\n\r\n return sort_slot;\r\n }\r\n\r\n clearBookingSelection() {\r\n this.setState({\r\n selectedBookedSlot: undefined,\r\n bookingId: \"\",\r\n date: \"\",\r\n time: \"\",\r\n duration: \"\",\r\n error: \"\"\r\n });\r\n }\r\n\r\n handleUpdateDateChange(val) {\r\n this.setState({\r\n date: val\r\n });\r\n }\r\n\r\n switchDayNext(dayType) {\r\n const { current_nav_view } = this.state;\r\n const { date, current_view, endDate } = this.props;\r\n\r\n let now = moment();\r\n\r\n if (current_view === calendarViews.Week || current_view === calendarViews.WorkWeek) {\r\n\r\n if (dayType === \"Today\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Next\"\r\n });\r\n }\r\n if (dayType === \"Next\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Next\"\r\n });\r\n }\r\n\r\n if (dayType === \"Back\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Next\"\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n // if (dayType === \"Today\") {\r\n\r\n // this.setState({\r\n // current_nav_view: \"Next\"\r\n // })\r\n // }\r\n // if (dayType === \"Back\") {\r\n // this.setState({\r\n // current_nav_view: \"Today\"\r\n // })\r\n\r\n // }\r\n\r\n }\r\n\r\n switchDayPrevious(dayType) {\r\n const { current_nav_view } = this.state;\r\n const { date, current_view, endDate } = this.props;\r\n\r\n\r\n if (current_view === calendarViews.Week) {\r\n\r\n if (dayType === \"Next\") {\r\n this.setState({\r\n current_nav_view: \"Back\"\r\n });\r\n\r\n }\r\n\r\n if (dayType === \"Back\") {\r\n\r\n this.setState({\r\n current_nav_view: \"Back\"\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n // if (dayType === \"Today\") {\r\n\r\n // this.setState({\r\n // current_nav_view: \"Back\"\r\n // })\r\n // }\r\n // if (dayType === \"Next\") {\r\n // this.setState({\r\n // current_nav_view: \"Today\"\r\n // })\r\n\r\n // }\r\n\r\n\r\n }\r\n\r\n switchDayTest() {\r\n\r\n\r\n }\r\n\r\n getCustomToolbar(toolbar) {\r\n //toolbar parameter exposes, view, date\r\n this.toolbarDate = toolbar.date;\r\n\r\n const goToBack = () => {\r\n toolbar.onNavigate(\"PREV\");\r\n };\r\n const goToNext = () => {\r\n toolbar.onNavigate(\"NEXT\");\r\n };\r\n const goToCurrent = () => {\r\n toolbar.onNavigate(\"TODAY\");\r\n };\r\n var monthNames = [\"JANUARY\", \"FEBRUARY\", \"MARCH\", \"APRIL\", \"MAY\", \"JUNE\", \"JULY\", \"AUGUST\", \"SEPTEMBER\", \"OCTOBER\", \"NOVEMBER\", \"DECEMBER\"];\r\n var weekDays = this.props.current_view === calendarViews.Week || this.props.current_view === calendarViews.WorkWeek ?\r\n [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"] : [\"SUNDAY\", \"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SAT\"]\r\n\r\n\r\n\r\n var n = new Date(this.props.date);\r\n // var curruntDate = new Date();\r\n\r\n var ed = new Date(this.props.endDate);\r\n var currentMonth = monthNames[n.getMonth()];\r\n var currentDay = weekDays[n.getDay()];\r\n var currentYear = n.getFullYear();\r\n var ws = new Date(this.props.endDate);\r\n ws.setDate(ws.getDate() - 6);\r\n\r\n let dayCount = 0;\r\n\r\n if (this.props.current_view === calendarViews.WorkWeek)\r\n dayCount = 5;\r\n if (this.props.current_view === calendarViews.Week)\r\n dayCount = 7;\r\n if (this.props.current_view === calendarViews.Day)\r\n dayCount = 1;\r\n\r\n let isCurrentMonth = monthNames[ws.getMonth()] === monthNames[new Date().getMonth()];\r\n\r\n\r\n let viewSwitcher = this.props.serviceUnit && this.props.serviceUnit === ServiceUnitType.Minute ?\r\n
    \r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n\r\n return
    \r\n
    \r\n {viewSwitcher}\r\n
    \r\n \r\n
    {\r\n\r\n goToCurrent();\r\n\r\n }} className=\"Text-Field\">\r\n \r\n\r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n {this.props.servicesOptions}\r\n\r\n\r\n
    \r\n
    \r\n\r\n {this.props.requestStatus && this.props.requestStatus === true &&
    \r\n

    Network error, Please try again later.

    \r\n
    }\r\n {\r\n // this.props.eventsSlotStatus &&
    \r\n }\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.props.current_view === calendarViews.WorkWeek || this.props.current_view === calendarViews.Week ? _.times(dayCount, i =>\r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : ''}\r\n
    \r\n\r\n
    ;\r\n }\r\n\r\n getDatesRange(startDate, endDate) {\r\n var dateRange = [];\r\n var currentDate = new Date(moment(startDate).format(\"YYYY-MM-DD\"));\r\n var end = new Date(moment(endDate).format(\"YYYY-MM-DD\"));\r\n\r\n let current = currentDate;\r\n for (var d = current; d <= end; d.setDate(d.getDate() + 1)) {\r\n dateRange.push(new Date(d));\r\n }\r\n\r\n return dateRange;\r\n }\r\n\r\n render() {\r\n MyWeek.navigate = this.props.handleNavigation;\r\n\r\n const { current_view, date, endDate, step, slots, defaultDate } = this.props;\r\n const { modalActive } = this.state;\r\n\r\n let formats = {\r\n dayFormat: (date, culture, localizer) =>\r\n localizer.format(date, 'D ddd', culture),\r\n timeGutterFormat: \"HH:mm\",\r\n dateFormat: \"D\"\r\n }\r\n\r\n // const formats = {\r\n // dayFormat: (date, culture, localizer) =>\r\n // localizer.format(date, 'ddd MM/dd', culture),\r\n // }\r\n let today\r\n\r\n if (!this.state.slots) {\r\n return this.renderLoading();\r\n }\r\n\r\n\r\n return (\r\n\r\n
    \r\n {_.isUndefined(this.props.eventsSlotStatus) ?\r\n \r\n o.booked === true || o.blocked === true\r\n )}\r\n\r\n defaultDate={new Date()}\r\n formats={formats}\r\n now={new Date()}\r\n date={new Date(date._d)}\r\n startAccessor={({ start }) => new Date(start)}\r\n endAccessor={({ end }) => new Date(end.getTime() - 1)} //subtract one millisecond from the end date putting midnight dates at 11:59:999 https://github.com/intljusticemission/react-big-calendar/issues/363\r\n defaultView={this.props.current_view}\r\n step={step * this.state.timeSlot}\r\n timeslots={this.state.timeSlot}\r\n view={this.props.current_view}\r\n views={['day', 'week', 'work_week', 'month']}\r\n onView={() => { }}\r\n selectable={'ignoreEvents'}\r\n toolbar={true}\r\n showMultiDayTimes={true}\r\n onSelectEvent={(event, target) => {\r\n this.eventSelected(event, target);\r\n }}\r\n onSelectSlot={slotInfo => {\r\n this.slotSelected(slotInfo);\r\n }}\r\n elementProps={{}}\r\n min={moment(\"09:00am\", \"h:mma\").toDate()}\r\n max={moment(\"18:00pm\", \"h:mma\").toDate()}\r\n components={{\r\n event: CustomEventCell,\r\n dayWrapper: myCustomDayWrapper,\r\n toolbar: this.getCustomToolbar,\r\n //dateCellWrapper: customDateCellWrapper,\r\n month: {\r\n header: (props) => (\r\n
    \r\n {props.label} \r\n
    \r\n )\r\n }\r\n }}\r\n eventPropGetter={eventPropsGetter}\r\n //slotPropGetter={slotPropGetter}\r\n onNavigate={(date, action) => this.props.handleNavigation(date, action)}\r\n dayPropGetter={customDayPropGetter}\r\n\r\n />\r\n :\r\n
    \r\n }\r\n\r\n {modalActive === true && this.showModal(this.state.slotSelected, true)}\r\n\r\n
    \r\n );\r\n }\r\n renderLoading() {\r\n return

    Loading...

    ;\r\n }\r\n}\r\nBookingCalendarCustom.propTypes = {\r\n bookedEventSelected: PropTypes.func,\r\n serviceUnit: PropTypes.string\r\n};\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n basketQueue: resourceSelector.getBasketQueue(state),\r\n // serviceId: resourceSelector.getServiceId(state),\r\n eventId: resourceSelector.getEventId(state),\r\n bookings: resourceSelector.getBookings(state),\r\n bookingErrors: resourceSelector.getBookingErrors(state),\r\n timeAvailable: resourceSelector.getTimeAvailable(state),\r\n selectedBookingDetail: resourceSelector.getSelectedBookingDetail(state),\r\n bookingsCancelled: resourceSelector.getBookingsCancelled(state),\r\n bookingUpdated: resourceSelector.getBookingUpdated(state),\r\n selectedEvents: resourceSelector.getSelectedEventResources(state),\r\n portalSettings: serviceModuleSelectors.loadPortalSttings(state),\r\n bookingCreated: resourceSelector.getBookingCreated(state),\r\n serviceUnit: resourceSelector.getServiceUnit(state),\r\n selectedTenant: tenantSelectors.getSelectedTenant(state),\r\n service: resourceSelector.getService(state),\r\n fromRedirect: resourceSelector.getActionRedirect(state),\r\n paymentAction: resourceSelector.getPaymentAction(state),\r\n booking: resourceSelector.getSetBooking(state),\r\n basket: checkoutSelectors.getBasket(state),\r\n carlendarSetting: resourceSelector.getCalendarSettings(state),\r\n chargeType: checkoutSelectors.getChargeType(state)\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(BookingCalendarCustom));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport moment from \"moment\";\r\nimport _ from \"lodash\";\r\nimport autoBind from \"react-autobind\";\r\nimport dateFormat from \"dateformat\";\r\nimport {withRouter} from 'react-router-dom';\r\n\r\nimport * as resourceSelector from \"../../../store/Resources/reducer\";\r\nimport * as resourceActions from \"../../../store/Resources/actions\";\r\nimport * as checkoutSelector from \"../../../store/Checkout/reducer\";\r\nimport * as checkoutActions from \"../../../store/Checkout/actions\";\r\n\r\nimport * as resourceMonthlyActions from \"../../../store/ResourcesMonthly/actions\";\r\n//import * as resourceMonthlySelectors from \"../../../store/ResourcesMonthly/reducer\";\r\n\r\nimport BookingCalendarCustom from \"../../../components/BookingCalendar/BookingCalendarCustomMonthly\";\r\n\r\nconst calendarViews = {\r\n Day: \"day\",\r\n Week: \"week\",\r\n WorkWeek: \"work_week\",\r\n Month: \"month\"\r\n};\r\n\r\nconst ResourcePager = {\r\n page: 1,\r\n per_page: 387\r\n};\r\nconst MAX_DATE_BOOKINGS = 7;\r\nclass MonthScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n type: \"rooms\",\r\n now: new Date(),\r\n startDate: moment(),\r\n endDate: moment(),\r\n serviceId: 0,\r\n eventId: \"\",\r\n slots: [],\r\n options: [],\r\n timeSlot: 1,\r\n eventName: \"\",\r\n time_step: 1, //default value\r\n selectedServiceSlot: [],\r\n selectedEventsSlots: [],\r\n vision_type: \"week\",\r\n monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n current_view: calendarViews.Month,\r\n selectedEventsSlot: [],\r\n selected_event_resources: [],\r\n max_day_bookings: MAX_DATE_BOOKINGS\r\n\r\n };\r\n\r\n autoBind(this);\r\n\r\n }\r\n\r\n\r\n componentDidMount() {\r\n\r\n\r\n this.props.dispatch(resourceActions.clearBasketQueue());\r\n\r\n this.props.dispatch(checkoutActions.loadBasketFromCache());\r\n\r\n\r\n }\r\n componentWillMount() {\r\n\r\n\r\n if (this.props.service) {\r\n this.setState({\r\n serviceId: this.props.service.id,\r\n time_step: this.props.service.booking_time_step,\r\n max_day_bookings: !_.isUndefined(this.props.service.max_bookings) &&\r\n this.props.service.max_bookings > MAX_DATE_BOOKINGS ? this.props.service.max_bookings : MAX_DATE_BOOKINGS\r\n });\r\n\r\n this.servicesSlots(this.props.service.id, this.state.startDate, this.state.current_view);\r\n\r\n }\r\n\r\n //coming from payment redirect, reset date to preload date \r\n if (this.props.setDate) {\r\n this.setState({\r\n startDate: moment(this.props.setDate),\r\n endDate: moment(this.props.setDate)\r\n });\r\n\r\n\r\n }\r\n\r\n }\r\n componentWillUnmount() {\r\n this.props.dispatch(resourceActions.emptyServicesSlots());\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n\r\n if (prevProps.selectedEventsSlots !== this.props.selectedEventsSlots) {\r\n\r\n this.setState({\r\n selectedEventsSlots: this.props.selectedEventsSlots\r\n });\r\n }\r\n\r\n if (prevProps.service !== this.props.service) {\r\n if (this.props.service) {\r\n this.setState({\r\n serviceId: this.props.service.id,\r\n time_step: this.props.service.booking_time_step,\r\n max_day_bookings: !_.isUndefined(this.props.service.max_bookings) &&\r\n this.props.service.max_bookings > MAX_DATE_BOOKINGS ? this.props.service.max_bookings : MAX_DATE_BOOKINGS\r\n });\r\n\r\n this.servicesSlots(this.props.service.id, this.state.startDate, this.state.current_view);\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n componentWillUpdate(nextProps, nextState) {\r\n\r\n\r\n //old daily slot list\r\n if (this.props.selectedServiceSlot !== nextProps.selectedServiceSlot) {\r\n this.setState({\r\n selectedServiceSlot: nextProps.selectedServiceSlot\r\n });\r\n }\r\n if (this.props.resourceEvents !== nextProps.resourceEvents) {\r\n\r\n\r\n this.setState({\r\n selected_event_resources: nextProps.resourceEvents\r\n });\r\n\r\n var events = _.map(nextProps.resourceEvents, eventItem => {\r\n return { id: eventItem.eventId }\r\n });\r\n\r\n var eventsData = {\r\n events: events\r\n };\r\n\r\n\r\n var date_ = this.state.startDate.toDate(), y = date_.getFullYear(), m = date_.getMonth();\r\n var startDay = new Date(y, m, 1);\r\n var endDay = new Date(y, m + 1, 0);\r\n\r\n startDay = moment(startDay).subtract(this.state.max_day_bookings, 'd');\r\n endDay = moment(endDay).add(7, 'd');\r\n\r\n this.props.dateChanged(nextState.startDate);\r\n //this.servicesDayData(this.state.serviceId, moment(startDay).format(\"YYYY-MM-DD\"), moment(endDay).format(\"YYYY-MM-DD\"));\r\n\r\n this.props.dispatch(resourceMonthlyActions.fetchResourceDayData(eventsData, this.state.serviceId,\r\n moment(startDay._d).format(\"YYYY-MM-DD\"),\r\n moment(endDay._d).format(\"YYYY-MM-DD\"), ResourcePager.page, ResourcePager.per_page, success => {\r\n if (success === true) {\r\n this.loadEventSlots(nextProps.resourceEvents, this.state.startDate, this.state.endDate);\r\n } else {\r\n\r\n }\r\n }))\r\n\r\n\r\n }\r\n\r\n if (this.state.startDate !== nextState.startDate && !_.isUndefined(nextState.startDate)) {\r\n\r\n\r\n\r\n this.setState({\r\n startDate: nextState.startDate,\r\n endDate: nextState.endDate\r\n });\r\n\r\n this.props.dateChanged(nextState.startDate);\r\n\r\n var date_val = nextState.startDate.toDate(), yr = date_val.getFullYear(), mth = date_val.getMonth();\r\n var startDay_val = new Date(yr, mth, 1);\r\n var endDay_val = new Date(yr, mth + 1, 0);\r\n\r\n startDay_val = moment(startDay_val).subtract(this.state.max_day_bookings, 'd');\r\n endDay_val = moment(endDay_val).add(7, 'd');\r\n\r\n\r\n //construct for resourceDaydata request\r\n let events = {\r\n events: _.map(this.state.selected_event_resources, event => {\r\n return { id: event.eventId }\r\n })\r\n }\r\n\r\n //this.servicesDayData(this.state.serviceId, moment(startDay).format(\"YYYY-MM-DD\"), moment(endDay).format(\"YYYY-MM-DD\"));\r\n\r\n this.props.dispatch(resourceMonthlyActions.fetchResourceDayData(events, this.state.serviceId,\r\n moment(startDay_val).format(\"YYYY-MM-DD\"), moment(endDay_val).format(\"YYYY-MM-DD\"), ResourcePager.page, ResourcePager.per_page, success => {\r\n if (success === true) {\r\n this.loadEventSlots(this.state.selected_event_resources, nextState.startDate, nextState.endDate);\r\n } else {\r\n\r\n }\r\n }))\r\n\r\n\r\n //this.servicesSlots(this.state.serviceId, nextState.startDate, this.state.current_view);\r\n //this.loadEventSlots(this.state.selected_event_resources, nextState.startDate, nextState.endDate);\r\n\r\n }\r\n\r\n // if (this.props.selectedEventsSlots !== nextProps.selectedEventsSlots) {\r\n // this.setState({\r\n // selectedEventsSlots: nextProps.selectedEventsSlots\r\n // });\r\n // }\r\n\r\n\r\n\r\n if (this.props.service !== nextProps.service) {\r\n\r\n this.setState({\r\n serviceId: nextProps.service.id,\r\n time_step: nextProps.booking_time_step\r\n });\r\n\r\n\r\n this.servicesSlots(nextProps.service.id, this.state.startDate, this.state.current_view);\r\n\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n loadBookingQuestions(detail_group_id) {\r\n //this.props.dispatch(resourceActions.fetchBookingQuestions(detail_group_id));\r\n }\r\n\r\n servicesSlots(serviceId, date, view) {\r\n\r\n var date_ = this.state.startDate.toDate(), y = date_.getFullYear(), m = date_.getMonth();\r\n var firstDay = new Date(y, m, 1);\r\n var lastDay = new Date(y, m + 1, 0);\r\n\r\n firstDay = moment(firstDay);\r\n lastDay = moment(lastDay);\r\n\r\n let start_date = dateFormat(firstDay._d, \"isoDate\");\r\n let end_date = dateFormat(lastDay._d, \"isoDate\");\r\n\r\n\r\n this.props.dispatch(\r\n resourceMonthlyActions.fetchServicesSlots(\r\n serviceId,\r\n start_date, end_date, success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n\r\n }\r\n )\r\n );\r\n\r\n\r\n }\r\n\r\n servicesDayData(serviceId, startDate, endDate) {\r\n\r\n this.props.dispatch(resourceMonthlyActions.fetchServiceDayData(serviceId, startDate, endDate, success => {\r\n if (success === true) {\r\n this.servicesSlots(this.state.serviceId, startDate, this.state.current_view);\r\n }\r\n }));\r\n }\r\n\r\n selectedServiceSlots(eventId, date, serviceId, eventName) {\r\n\r\n\r\n }\r\n\r\n availaibleTimeData(serviceId, date, eventId) {\r\n\r\n this.props.dispatch(\r\n resourceActions.getServiceAvailability(serviceId, date, eventId)\r\n );\r\n }\r\n handleDateChange(date) {\r\n\r\n const { eventId, eventName, current_view } = this.state;\r\n\r\n this.setState({\r\n startDate: date\r\n });\r\n\r\n\r\n this.servicesSlots(this.props.serviceId, date, current_view);\r\n if (eventId) {\r\n this.selectedServiceSlots(eventId, date, this.props.serviceId, eventName);\r\n }\r\n }\r\n\r\n handleRightClick(e) {\r\n\r\n this.props.history.push(\"/reception/tenant\");\r\n }\r\n handleBackClick(e) {\r\n\r\n this.props.history.push(\"/\");\r\n }\r\n onLogin() {\r\n\r\n this.props.navigationController.pushView(\r\n
    Today
    \r\n );\r\n }\r\n\r\n modalActionTrigered(action, valid) {\r\n\r\n if (action === \"payment\") {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: {\r\n setModule: \"Bookings\"\r\n }\r\n });\r\n } else {\r\n if (!_.isUndefined(this.state.serviceId)) {\r\n\r\n // this.serviceBookings(this.state.serviceId, dateFormat(this.state.startDate._d, \"isoDate\"));\r\n this.servicesSlots(this.state.serviceId, this.state.startDate, this.state.current_view);\r\n\r\n if (this.state.selected_event_resources && this.state.selected_event_resources.length > 0)\r\n this.loadEventSlots(this.state.selected_event_resources, this.state.startDate, this.state.endDate);\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n serviceBookings(serviceid, date) {\r\n\r\n const { current_view } = this.state;\r\n\r\n var date_ = moment(date).toDate(), y = date_.getFullYear(), m = date_.getMonth();\r\n var startDay = new Date(y, m, 1);\r\n var endDay = new Date(y, m + 1, 0);\r\n\r\n startDay = moment(startDay).subtract(this.state.max_day_bookings, 'd');\r\n endDay = moment(endDay).add(7, 'd');\r\n\r\n\r\n\r\n if (current_view === calendarViews.Month)\r\n this.props.dispatch(resourceMonthlyActions.getServiceBookings(serviceid, startDay.format(\"YYYY-MM-DD\"), endDay.format(\"YYYY-MM-DD\"), success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n } else {\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n }));\r\n\r\n }\r\n switchTypeHandler = (type) => {\r\n\r\n console.log(\" switchTypeHandler here now\", this.state.startDate.format(\"YYYY-MM-DD\"));\r\n switch (type) {\r\n case \"week\":\r\n this.setState({\r\n startDate: moment().startOf(\"week\"),\r\n endDate: moment().endOf(\"week\"),\r\n current_view: type\r\n });\r\n\r\n break;\r\n case \"work_week\":\r\n this.setState({\r\n startDate: moment().startOf(\"week\"),\r\n endDate: moment().endOf(\"week\"),\r\n current_view: type\r\n });\r\n\r\n break;\r\n case \"day\":\r\n this.setState({\r\n startDate: this.state.startDate,\r\n endDate: this.state.endDate,\r\n current_view: type\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n // this.state.current_view = type;\r\n\r\n // this.setState({\r\n // current_view: type\r\n // });\r\n\r\n }\r\n\r\n loadServicesOption(options) {\r\n\r\n return (\r\n
    \r\n );\r\n }\r\n\r\n //helper method to call slot data on selected events\r\n loadEventSlots(events, startDate, endDate) {\r\n\r\n const { current_view,\r\n } = this.state;\r\n\r\n const { serviceId } = this.state;\r\n\r\n if (current_view === calendarViews.Month) {\r\n\r\n var date_ = startDate.toDate(), y = date_.getFullYear(), m = date_.getMonth();\r\n var startDay = new Date(y, m, 1);\r\n var endDay = new Date(y, m + 1, 0);\r\n\r\n startDay = moment(startDay).subtract(this.state.max_day_bookings, 'd');\r\n endDay = moment(endDay).add(7, 'd');\r\n\r\n this.setState({\r\n eventslot_processing: true\r\n });\r\n\r\n this.props.dispatch(resourceActions.resourceProcessingStatus(true));\r\n this.props.dispatch(resourceMonthlyActions.getSelectedEventsSlots(events, new Date(startDay._d),\r\n new Date(endDay._d), serviceId, success => {\r\n if (success === true) {\r\n this.setState({\r\n request_fail: undefined,\r\n eventslot_processing: undefined\r\n });\r\n\r\n } else {\r\n\r\n this.setState({\r\n request_fail: true,\r\n eventslot_processing: undefined\r\n });\r\n\r\n }\r\n this.props.dispatch(resourceActions.resourceProcessingStatus(undefined));\r\n }));\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n //keep for carlendar navigation\r\n handleNavigation(date, view) {\r\n\r\n switch (view) {\r\n case \"day\":\r\n this.setState({\r\n startDate: moment(date).startOf(\"day\"),\r\n endDate: moment(date).endOf(\"day\")\r\n });\r\n\r\n\r\n return date;\r\n case \"work_week\":\r\n\r\n this.setState({\r\n startDate: moment(date).startOf(\"week\"),\r\n endDate: moment(date).endOf(\"week\")\r\n });\r\n\r\n return date;\r\n case \"week\":\r\n\r\n this.setState({\r\n startDate: moment(date).startOf(\"week\"),\r\n endDate: moment(date).endOf(\"week\")\r\n });\r\n return date;\r\n case \"month\":\r\n this.setState({\r\n startDate: moment(date).startOf(\"month\"),\r\n endDate: moment(date).endOf(\"month\")\r\n });\r\n return date;\r\n default:\r\n return date;\r\n }\r\n }\r\n\r\n testSlotData() {\r\n\r\n let data = [\r\n {\r\n id: 820,\r\n isAvailable: false,\r\n booked: true,\r\n desc: 'Demo Resident',\r\n end: '2018-11-23',\r\n start: '2018-11-21',\r\n allDay: true,\r\n type: 'day',\r\n // start_min: 630,\r\n // end_min: 690,\r\n eventId: 992,\r\n eventName: 'DeLacy',\r\n tenant: {\r\n id: 1261,\r\n firstName: 'Demo',\r\n lastName: 'Resident',\r\n companyName: 'GSM International',\r\n bookingBugMemberId: '9',\r\n email: 'resident@engageproptech.com',\r\n ccAddress: null,\r\n sendCcNotification: false\r\n },\r\n tag: 1,\r\n past: true,\r\n card: 1,\r\n title: 'DeLacy',\r\n questions: {},\r\n answers: [],\r\n price: 0,\r\n service_name: 'Meeting Rooms - Hour',\r\n duration: 60\r\n },\r\n\r\n {\r\n id: 821,\r\n isAvailable: false,\r\n booked: true,\r\n desc: 'Demo Resident',\r\n end: '2018-11-21',\r\n start: '2018-11-21',\r\n allDay: true,\r\n type: 'day',\r\n // start_min: 720,\r\n // end_min: 780,\r\n eventId: 992,\r\n eventName: 'DeLacy',\r\n tenant: {\r\n id: 1261,\r\n firstName: 'Demo',\r\n lastName: 'Resident',\r\n companyName: 'GSM International',\r\n bookingBugMemberId: '9',\r\n email: 'resident@engageproptech.com',\r\n ccAddress: null,\r\n sendCcNotification: false\r\n },\r\n tag: 2,\r\n past: true,\r\n card: 2,\r\n title: 'DeLacy',\r\n questions: {},\r\n answers: [],\r\n price: 0,\r\n service_name: 'Meeting Rooms - Hour',\r\n duration: 60\r\n }\r\n ];\r\n\r\n return data;\r\n }\r\n\r\n\r\n render() {\r\n const {\r\n servicesSlots,\r\n service,\r\n bookingQuestions,\r\n } = this.props;\r\n\r\n const {\r\n startDate,\r\n eventId,\r\n eventName,\r\n type,\r\n time_step,\r\n endDate,\r\n now\r\n } = this.state;\r\n\r\n let service_options = []\r\n let options = _.filter(_.map(servicesSlots, item => {\r\n\r\n if (_.isUndefined(_.find(service_options, { eventid: item.event_id }))) {\r\n service_options.push({ name: item.name, eventid: item.event_id });\r\n return { name: item.name, eventid: item.event_id };\r\n } else {\r\n return undefined;\r\n }\r\n\r\n }), o => !_.isUndefined(o));\r\n\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n {\r\n\r\n this.props.service &&\r\n this.state.selectedEventsSlots && this.state.current_view ?\r\n\r\n this.props.blockSlotSelected}\r\n modalActionEvent={this.modalActionTrigered}\r\n switchTypeHandler={this.switchTypeHandler}\r\n servicesOptions={this.loadServicesOption(options)}\r\n handleNavigation={this.handleNavigation}\r\n requestStatus={this.state.request_fail}\r\n selectedEventResources={this.state.selected_event_resources}\r\n eventsSlotStatus={this.state.eventslot_processing}\r\n bookingQuestions={bookingQuestions}\r\n /> :
    \r\n }\r\n
    \r\n\r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\r\n return {\r\n servicesSlots: resourceSelector.getServicesSlots(state),\r\n selectedServiceSlot: resourceSelector.getSelectedServiceSlot(state),\r\n service: resourceSelector.getService(state),\r\n basket: checkoutSelector.getBasket(state),\r\n basketQueue: resourceSelector.getBasketQueue(state),\r\n blockSlotSelected: resourceSelector.getBlockSlotSelected(state),\r\n selectedEventsSlots: resourceSelector.getSelectedEventsSlots(state),\r\n bookingQuestions: resourceSelector.getBookingQuestions(state),\r\n resourceEvents: resourceSelector.getResourceEvents(state),\r\n fromRedirect: resourceSelector.getActionRedirect(state)\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(MonthScreen));","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\n//helper apps\r\nimport moment from 'moment';\r\nimport _ from 'lodash';\r\nimport autoBind from 'react-autobind';\r\nimport dateFormat from 'dateformat';\r\nimport {withRouter} from 'react-router-dom';\r\n//component\r\n\r\nimport BookingCalendarCustom from '../../../components/BookingCalendar/BookingCalendarCustom';\r\n\r\n//store\r\nimport * as resourceSelector from '../../../store/Resources/reducer';\r\nimport * as resourceActions from '../../../store/Resources/actions';\r\n\r\nimport * as checkoutSelector from '../../../store/Checkout/reducer';\r\nimport * as checkoutActions from '../../../store/Checkout/actions';\r\n\r\nconst calendarViews = {\r\n\tDay: 'day',\r\n\tWeek: 'week',\r\n\tWorkWeek: 'work_week',\r\n\tMonth: 'month'\r\n};\r\n\r\nclass DailyScreen extends Component {\r\n\t_isMounted = false;\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\ttype: 'rooms',\r\n\t\t\tnow: new Date(),\r\n\t\t\tstartDate: this.props.setDate ? moment(this.props.setDate) : moment(),\r\n\t\t\tendDate: this.props.setDate ? moment(this.props.setDate).endOf('week') : moment().endOf('week'),\r\n\t\t\tserviceId: 0,\r\n\t\t\teventId: '',\r\n\t\t\tslots: [],\r\n\t\t\toptions: [],\r\n\t\t\ttimeSlot: 1,\r\n\t\t\teventName: '',\r\n\t\t\ttime_step: 1, //default value\r\n\t\t\tselectedServiceSlot: [],\r\n\t\t\tselectedEventsSlots: [],\r\n\t\t\tvision_type: 'week',\r\n\t\t\tmonthNames: [\r\n\t\t\t\t'January',\r\n\t\t\t\t'February',\r\n\t\t\t\t'March',\r\n\t\t\t\t'April',\r\n\t\t\t\t'May',\r\n\t\t\t\t'June',\r\n\t\t\t\t'July',\r\n\t\t\t\t'August',\r\n\t\t\t\t'September',\r\n\t\t\t\t'October',\r\n\t\t\t\t'November',\r\n\t\t\t\t'December'\r\n\t\t\t],\r\n\t\t\tcurrent_view: calendarViews.Week,\r\n\t\t\tselected_event_resources: [],\r\n\t\t\trequest_fail: undefined,\r\n\t\t\teventslot_processing: undefined\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis._isMounted = true;\r\n\r\n\t\tthis.props.dispatch(resourceActions.clearBasketQueue());\r\n\r\n\t\tthis.props.dispatch(checkoutActions.loadBasketFromCache());\r\n\r\n\t\tif (this.props.service) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tserviceId: this.props.service.id,\r\n\t\t\t\ttime_step: this.props.service.booking_time_step\r\n\t\t\t});\r\n\r\n\t\t\tthis.servicesSlots(\r\n\t\t\t\tthis.props.service.id,\r\n\t\t\t\tthis.state.startDate,\r\n\t\t\t\tthis.state.endDate,\r\n\t\t\t\tthis.state.current_view\r\n\t\t\t);\r\n\t\t\tthis.loadBookingQuestions(this.props.service.detail_group_id);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tthis._isMounted = false;\r\n\t\tthis.props.dispatch(resourceActions.emptyServicesSlots());\r\n\t}\r\n\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (prevProps.resourceEvents !== this.props.resourceEvents && this.props.resourceEvents) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tselected_event_resources: this.props.resourceEvents\r\n\t\t\t});\r\n\r\n\t\t\tthis.loadEventSlots(this.props.resourceEvents, this.state.startDate, this.state.endDate);\r\n\t\t}\r\n\r\n\t\tif (prevProps.service !== this.props.service) {\r\n\t\t\tif (this.props.service) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tserviceId: this.props.service.id,\r\n\t\t\t\t\ttime_step: this.props.service.booking_time_step\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.servicesSlots(\r\n\t\t\t\t\tthis.props.service.id,\r\n\t\t\t\t\tthis.state.startDate,\r\n\t\t\t\t\tthis.state.endDate,\r\n\t\t\t\t\tthis.state.current_view\r\n\t\t\t\t);\r\n\t\t\t\tthis.loadBookingQuestions(this.props.service.detail_group_id);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (\r\n\t\t\tthis.props.selectedServiceSlot !== prevProps.selectedServiceSlot && \r\n\t\t\tthis.props.selectedServiceSlot.length > 0\r\n\t\t) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tselectedServiceSlot: this.props.selectedServiceSlot\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.props.selectedEventsSlots !== prevProps.selectedEventsSlots) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tselectedEventsSlots: this.props.selectedEventsSlots\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.state.current_view !== prevState.current_view) {\r\n\t\t\tlet start_date, end_date;\r\n\t\t\tif (this.state.current_view === calendarViews.Day) {\r\n\t\t\t\tstart_date = moment().startOf('day');\r\n\t\t\t\tend_date = moment().endOf('day');\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tstartDate: start_date,\r\n\t\t\t\t\tendDate: end_date\r\n\t\t\t\t});\r\n\t\t\t} else if (\r\n\t\t\t\tthis.state.current_view === calendarViews.Week ||\r\n\t\t\t\tthis.state.current_view === calendarViews.WorkWeek\r\n\t\t\t) {\r\n\t\t\t\tstart_date = moment().startOf('week');\r\n\t\t\t\tend_date = moment().endOf('week');\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tstartDate: start_date,\r\n\t\t\t\t\tendDate: end_date\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.state.startDate !== prevState.startDate && !_.isUndefined(this.state.startDate)) {\r\n\t\t\tthis.servicesSlots(this.state.serviceId, this.state.startDate, this.state.endDate, this.state.current_view);\r\n\t\t\tthis.loadEventSlots(this.state.selected_event_resources, this.state.startDate, this.state.endDate);\r\n\t\t}\r\n\t}\r\n\tloadBookingQuestions(detail_group_id) {\r\n\t\tthis.props.dispatch(resourceActions.fetchBookingQuestions(detail_group_id));\r\n\t}\r\n\r\n\tservicesSlots(serviceId, startDate, endDate, view) {\r\n\t\tlet start_date = dateFormat(startDate._d, 'isoDate');\r\n\t\tlet end_date = dateFormat(moment(endDate._d, 'isoDate'));\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tresourceActions.fetchServicesSlots(serviceId, start_date, end_date, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tif (this._isMounted)\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\trequest_fail: undefined\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\trequest_fail: true\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\t// if (view === calendarViews.Week) {\r\n\t\t// let start_date = dateFormat(moment(date.startOf(\"week\")._d, \"isoDate\"));\r\n\t\t// let end_date = dateFormat(moment(date.endOf(\"week\")._d, \"isoDate\"));\r\n\r\n\t\t// this.props.dispatch(\r\n\t\t// resourceActions.fetchServicesSlots(\r\n\t\t// serviceId,\r\n\t\t// start_date, end_date, success => {\r\n\t\t// if (success === true) {\r\n\t\t// this.setState({\r\n\t\t// request_fail: undefined\r\n\t\t// });\r\n\t\t// } else {\r\n\r\n\t\t// this.setState({\r\n\t\t// request_fail: true\r\n\t\t// });\r\n\t\t// }\r\n\r\n\t\t// }\r\n\t\t// )\r\n\t\t// );\r\n\t\t// } else if (view === calendarViews.Day) {\r\n\t\t// this.props.dispatch(\r\n\t\t// resourceActions.fetchServicesSlots(\r\n\t\t// serviceId,\r\n\t\t// date._d, date._d, success => {\r\n\t\t// if (success === true) {\r\n\t\t// this.setState({\r\n\t\t// request_fail: undefined\r\n\t\t// });\r\n\t\t// } else {\r\n\r\n\t\t// this.setState({\r\n\t\t// request_fail: true\r\n\t\t// });\r\n\t\t// }\r\n\r\n\t\t// }\r\n\t\t// )\r\n\t\t// );\r\n\t\t// }\r\n\t}\r\n\r\n\tselectedServiceSlots(eventId, date, serviceId, eventName) {\r\n\t\t// this.props.dispatch(\r\n\t\t// resourceActions.getSelectedEventSlot(\r\n\t\t// eventId,\r\n\t\t// new Date(date._d),\r\n\t\t// serviceId,\r\n\t\t// eventName, success => {\r\n\t\t// if (success === true) {\r\n\t\t// this.setState({\r\n\t\t// request_fail: undefined\r\n\t\t// });\r\n\t\t// } else {\r\n\t\t// this.setState({\r\n\t\t// request_fail: true\r\n\t\t// });\r\n\t\t// }\r\n\t\t// }\r\n\t\t// )\r\n\t\t// );\r\n\t}\r\n\r\n\tavailaibleTimeData(serviceId, date, eventId) {\r\n\t\tthis.props.dispatch(resourceActions.getServiceAvailability(serviceId, date, eventId));\r\n\t}\r\n\r\n\thandleSelectChange(val) {\r\n\t\tconst { servicesSlots } = this.props;\r\n\t\tconst { startDate, endDate } = this.state;\r\n\r\n\t\tlet options = _.map(servicesSlots, (item) => {\r\n\t\t\treturn { eventName: item.name, eventId: item.event_id };\r\n\t\t});\r\n\t\tlet selected_event_resource = [];\r\n\r\n\t\t//reform selected resource to usable object values\r\n\t\t_.map(val, (o) => {\r\n\t\t\tlet curre_event = _.find(options, { eventId: o });\r\n\t\t\tif (!_.isUndefined(curre_event)) {\r\n\t\t\t\tselected_event_resource.push(curre_event);\r\n\t\t\t}\r\n\t\t\treturn o;\r\n\t\t});\r\n\r\n\t\tthis.setState({\r\n\t\t\tselected_event_resources: selected_event_resource\r\n\t\t});\r\n\r\n\t\t//fetch resources based on selected event resource\r\n\t\tthis.loadEventSlots(selected_event_resource, startDate, endDate);\r\n\t}\r\n\r\n\thandleRightClick(e) {\r\n\t\tthis.props.history.push('/reception/tenant');\r\n\t}\r\n\thandleBackClick(e) {\r\n\t\tthis.props.history.push('/');\r\n\t}\r\n\tonLogin() {\r\n\t\tthis.props.navigationController.pushView(
    Today
    );\r\n\t}\r\n\r\n\tmodalActionTrigered(action, valid) {\r\n\t\tif (action === 'payment') {\r\n\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/',\r\n\t\t\t\tstate: {\r\n\t\t\t\t\tsetModule: 'Bookings'\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!_.isUndefined(this.state.serviceId)) {\r\n\t\t\tthis.serviceBookings(this.state.serviceId, dateFormat(this.state.startDate._d, 'isoDate'));\r\n\t\t\tthis.servicesSlots(this.state.serviceId, this.state.startDate, this.state.endDate, this.state.current_view);\r\n\r\n\t\t\tif (this.state.selected_event_resources && this.state.selected_event_resources.length > 0)\r\n\t\t\t\tthis.loadEventSlots(this.state.selected_event_resources, this.state.startDate, this.state.endDate);\r\n\t\t}\r\n\t}\r\n\r\n\tserviceBookings(serviceid, date) {\r\n\t\tconst { current_view } = this.state;\r\n\r\n\t\tlet startDate = moment(date);\r\n\t\tlet endDate = moment(date);\r\n\r\n\t\tif (current_view) {\r\n\t\t\tif (current_view === calendarViews.Day) {\r\n\t\t\t\tstartDate = moment(date).startOf('day');\r\n\t\t\t\tendDate = moment(date).endOf('day');\r\n\t\t\t} else if (current_view === calendarViews.Week) {\r\n\t\t\t\tstartDate = moment(date).startOf('week');\r\n\t\t\t\tendDate = moment(date).endOf('week');\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\tcurrent_view === calendarViews.Day ||\r\n\t\t\t\tcurrent_view === calendarViews.Week ||\r\n\t\t\t\tcurrent_view === calendarViews.WorkWeek\r\n\t\t\t)\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tresourceActions.getServiceBookings_range(\r\n\t\t\t\t\t\tserviceid,\r\n\t\t\t\t\t\tstartDate.format('YYYY-MM-DD'),\r\n\t\t\t\t\t\tendDate.format('YYYY-MM-DD'),\r\n\t\t\t\t\t\t(success) => {\r\n\t\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\t\tif (this._isMounted)\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\trequest_fail: false\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\trequest_fail: true\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t);\r\n\t\t}\r\n\t}\r\n\tswitchTypeHandler(type) {\r\n\t\tif (type === calendarViews.Day) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tcurrent_view: type\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (type === calendarViews.Week) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tcurrent_view: type\r\n\t\t\t});\r\n\t\t\t\r\n\t\t}\r\n\t\tif (type === calendarViews.WorkWeek) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tcurrent_view: type\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tloadServicesOption(options) {\r\n\t\treturn
    ;\r\n\t}\r\n\r\n\t//helper method to call slot data on selected events\r\n\tloadEventSlots(events, startDate, endDate) {\r\n\t\tconst { current_view, serviceId } = this.state;\r\n\r\n\t\tthis.setState({\r\n\t\t\teventslot_processing: true\r\n\t\t});\r\n\t\tthis.props.dispatch(resourceActions.resourceProcessingStatus(true));\r\n\t\tif (current_view === calendarViews.Week) {\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tresourceActions.getSelectedEventsSlots(\r\n\t\t\t\t\tevents,\r\n\t\t\t\t\tnew Date(startDate.startOf('week')._d),\r\n\t\t\t\t\tnew Date(endDate.endOf('week')._d),\r\n\t\t\t\t\tserviceId,\r\n\t\t\t\t\t(success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tif (this._isMounted)\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\trequest_fail: undefined\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: true\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this._isMounted)\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\teventslot_processing: undefined\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.props.dispatch(resourceActions.resourceProcessingStatus(undefined));\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t} else if (current_view === calendarViews.Day) {\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tresourceActions.getSelectedEventsSlots(\r\n\t\t\t\t\tevents,\r\n\t\t\t\t\tnew Date(startDate._d),\r\n\t\t\t\t\tnew Date(startDate._d),\r\n\t\t\t\t\tserviceId,\r\n\t\t\t\t\t(success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tif (this._isMounted)\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\trequest_fail: undefined\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\trequest_fail: true\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\teventslot_processing: undefined\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.props.dispatch(resourceActions.resourceProcessingStatus(undefined));\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t//keep for carlendar navigation\r\n\thandleNavigation(date, view) {\r\n\t\tlet start_date, end_date;\r\n\t\tswitch (view) {\r\n\t\t\tcase 'day':\r\n\t\t\t\tstart_date = moment(date).startOf('day');\r\n\t\t\t\tend_date = moment(date).endOf('day');\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tstartDate: start_date,\r\n\t\t\t\t\tendDate: end_date\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.servicesSlots(this.state.serviceId, start_date, end_date, this.state.current_view);\r\n\r\n\t\t\t\tthis.loadEventSlots(this.state.selected_event_resources, start_date, end_date);\r\n\t\t\t\treturn date;\r\n\t\t\tcase 'work_week':\r\n\t\t\t\tstart_date = moment(date).startOf('week');\r\n\t\t\t\tend_date = moment(date).endOf('week');\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tstartDate: start_date,\r\n\t\t\t\t\tendDate: end_date\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.servicesSlots(this.state.serviceId, start_date, end_date, this.state.current_view);\r\n\r\n\t\t\t\tthis.loadEventSlots(this.state.selected_event_resources, start_date, end_date);\r\n\t\t\t\treturn date;\r\n\t\t\tcase 'week':\r\n\t\t\t\tstart_date = moment(date).startOf('week');\r\n\t\t\t\tend_date = moment(date).endOf('week');\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tstartDate: start_date,\r\n\t\t\t\t\tendDate: end_date\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.servicesSlots(this.state.serviceId, start_date, end_date, this.state.current_view);\r\n\r\n\t\t\t\tthis.loadEventSlots(this.state.selected_event_resources, start_date, end_date);\r\n\t\t\t\treturn date;\r\n\t\t\tdefault:\r\n\t\t\t\treturn date;\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { servicesSlots, service, bookingQuestions, minCalTime, maxCalTime } = this.props;\r\n\r\n\t\tconst { startDate, eventId, eventName, type, time_step, endDate } = this.state;\r\n\r\n\t\tlet service_options = [];\r\n\t\tlet options = _.filter(\r\n\t\t\t_.map(servicesSlots, (item) => {\r\n\t\t\t\tif (_.isUndefined(_.find(service_options, { eventid: item.event_id }))) {\r\n\t\t\t\t\tservice_options.push({ name: item.name, eventid: item.event_id });\r\n\t\t\t\t\treturn { name: item.name, eventid: item.event_id };\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\t(o) => !_.isUndefined(o)\r\n\t\t);\r\n\t\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{this.props.service && this.state.current_view ? (\r\n\t\t\t\t\t\t this.props.blockSlotSelected}\r\n\t\t\t\t\t\t\tmodalActionEvent={this.modalActionTrigered}\r\n\t\t\t\t\t\t\tswitchTypeHandler={(e) => this.switchTypeHandler(e)}\r\n\t\t\t\t\t\t\tservicesOptions={this.loadServicesOption(options)}\r\n\t\t\t\t\t\t\thandleNavigation={this.handleNavigation}\r\n\t\t\t\t\t\t\trequestStatus={this.state.request_fail}\r\n\t\t\t\t\t\t\tselectedEventResources={this.state.selected_event_resources}\r\n\t\t\t\t\t\t\tbookingQuestions={bookingQuestions}\r\n\t\t\t\t\t\t\teventsSlotStatus={this.state.eventslot_processing}\r\n\t\t\t\t\t\t\tminCalTime={minCalTime}\r\n\t\t\t\t\t\t\tmaxCalTime={maxCalTime}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    {' '}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tservicesSlots: resourceSelector.getServicesSlots(state),\r\n\t\tselectedServiceSlot: resourceSelector.getSelectedServiceSlot(state),\r\n\t\tservice: resourceSelector.getService(state),\r\n\t\tbasket: checkoutSelector.getBasket(state),\r\n\t\tbasketQueue: resourceSelector.getBasketQueue(state),\r\n\t\tblockSlotSelected: resourceSelector.getBlockSlotSelected(state),\r\n\t\tselectedEventsSlots: resourceSelector.getSelectedEventsSlots(state),\r\n\t\tbookingQuestions: resourceSelector.getBookingQuestions(state),\r\n\t\tresourceEvents: resourceSelector.getResourceEvents(state)\r\n\t};\r\n}\r\nexport default withRouter(connect(mapStateToProps)(DailyScreen));\r\n","import React, { Component } from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport autobind from 'react-autobind';\r\nimport InputComponent from '../../../components/Input/Input';\r\n//import ServicesListMulti from \"../../../components/ServiceList/ServiceListMulti\";\r\nimport ServicesListPager from '../../../components/ServiceList/ServiceListPager';\r\nimport MonthScreen from './MonthScreen';\r\nimport DailyScreen from './DailyScreen';\r\nimport * as authSelectors from '../../../store/auth/reducer';\r\nimport * as resourceActions from '../../../store/Resources/actions';\r\nimport * as resourceSelectors from '../../../store/Resources/reducer';\r\nimport * as resourceMonthlyActions from '../../../store/ResourcesMonthly/actions';\r\nimport * as resourceMonthlySelectors from '../../../store/ResourcesMonthly/reducer';\r\nimport * as tenantActions from '../../../store/Tenants/actions';\r\nimport * as pageEventActions from '../../../store/PageEvents/actions';\r\nimport * as checkoutActions from '../../../store/Checkout/actions';\r\nimport {withRouter} from \"react-router-dom\";\r\nimport '../../../sass/containers/Bookings/index.css';\r\n\r\nconst ServiceUnitType = {\r\n\tDay: 'day',\r\n\tMinute: 'minute'\r\n};\r\n\r\nconst ResourcePager = {\r\n\tpage: 1,\r\n\tper_page: 387\r\n};\r\nconst MAX_DATE_BOOKINGS = 7;\r\nclass BookingsScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\ttype: 'bookings',\r\n\t\t\tnow: moment(),\r\n\t\t\tunitType: '',\r\n\t\t\tview: undefined,\r\n\t\t\tserviceId: '',\r\n\t\t\tselectedService: undefined,\r\n\t\t\tresourceOptions: [],\r\n\t\t\tfromRedirect: undefined,\r\n\t\t\tresourceProcessing: undefined,\r\n\t\t\tevents: [],\r\n\t\t\tlastscrollTop: 0,\r\n\t\t\tmax_day_bookings: MAX_DATE_BOOKINGS,\r\n\t\t\tminCalTime: '09:00 am',\r\n\t\t\tmaxCalTime: '18:00 pm'\r\n\t\t};\r\n\r\n\t\tthis.props.dispatch(resourceActions.getServices());\r\n\t\tthis.props.dispatch(tenantActions.getAllTenants());\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tconst { serviceId, fromRedirect, paymentStatus, selectedResourceId, paymentSetDate } = this.props;\r\n\t\tconst { type } = this.state;\r\n\r\n\t\tthis.props.dispatch(pageEventActions.setPageEvent(type));\r\n\t\tthis.props.dispatch(checkoutActions.loadBasketFromCache());\r\n\r\n\t\tthis.props.dispatch(resourceMonthlyActions.fetchResources(ResourcePager.page, ResourcePager.per_page));\r\n\t\r\n\t\tif (fromRedirect && fromRedirect === true && !_.isUndefined(paymentStatus)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tserviceId: serviceId,\r\n\t\t\t\tfromRedirect: fromRedirect,\r\n\t\t\t\tpaymentStatus: paymentStatus,\r\n\t\t\t\teventId: selectedResourceId,\r\n\t\t\t\tpaymentEventSetDate: paymentSetDate\r\n\t\t\t});\r\n\r\n\t\t\tlet data = {\r\n\t\t\t\tevent_date: paymentSetDate\r\n\t\t\t};\r\n\t\t\tthis.props.dispatch(resourceActions.setCarlendarSettings(data));\r\n\t\t} else {\r\n\t\t}\r\n\r\n\t\t// window.addEventListener(\"scroll\", this.handleScroll);\r\n\r\n\t\tthis.props.dispatch(resourceActions.clearBasketQueue());\r\n\t}\r\n\t// componentWillMount() {\r\n\t// \tconst { type } = this.state;\r\n\t// \tthis.props.dispatch(pageEventActions.setPageEvent(type));\r\n\t// \tthis.props.dispatch(checkoutActions.loadBasketFromCache());\r\n\r\n\t// \tthis.props.dispatch(resourceMonthlyActions.fetchResources(ResourcePager.page, ResourcePager.per_page));\r\n\t// }\r\n\tcomponentWillUnmount() {\r\n\t\tthis.props.dispatch(resourceActions.setActionRedirect(undefined));\r\n\t\tthis.props.dispatch(resourceActions.setPaymentAction(undefined));\r\n\t\t// window.removeEventListener('scroll', this.updateDimensions);\r\n\t}\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\t//set bookings state comming from payment or other redirect actions\r\n\t\t//step 1\r\n\t\tif (\r\n\t\t\tprevProps.services !== this.props.services &&\r\n\t\t\t!_.isUndefined(this.props.services) &&\r\n\t\t\tthis.props.services.length > 0 &&\r\n\t\t\tthis.state.fromRedirect === true\r\n\t\t) {\r\n\t\t\t\r\n\t\t\tlet setSelectedService = _.find(this.props.services, { id: this.state.serviceId });\r\n\t\t\tlet unit = !_.isUndefined(setSelectedService) ? setSelectedService.duration_unit : '';\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tselectedService: setSelectedService,\r\n\t\t\t\tunitType: !_.isUndefined(setSelectedService) ? setSelectedService.duration_unit : '',\r\n\t\t\t\tservices: this.props.services\r\n\t\t\t});\r\n\r\n\t\t\tthis.setServiceDetail(this.state.serviceId);\r\n\t\t\tif (unit === ServiceUnitType.Day) {\r\n\t\t\t\tvar date_ = this.state.now.toDate(),\r\n\t\t\t\t\ty = date_.getFullYear(),\r\n\t\t\t\t\tm = date_.getMonth();\r\n\t\t\t\tvar startDay = new Date(y, m, 1);\r\n\t\t\t\tvar endDay = new Date(y, m + 1, 0);\r\n\r\n\t\t\t\tstartDay = moment(startDay).subtract(this.state.max_day_bookings, 'd');\r\n\t\t\t\tendDay = moment(endDay).add(7, 'd');\r\n\r\n\t\t\t\tthis.servicesDayData(\r\n\t\t\t\t\tthis.props.services[0].id,\r\n\t\t\t\t\tstartDay.format('YYYY-MM-DD'),\r\n\t\t\t\t\tendDay.format('YYYY-MM-DD')\r\n\t\t\t\t);\r\n\t\t\t} \r\n\t\t\tif (setSelectedService) {\r\n\r\n\t\t\t\tif(unit === ServiceUnitType.Minute){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (setSelectedService.extra && setSelectedService.extra.mincal && setSelectedService.extra.maxcal) {\r\n\t\t\t\t\t\t\tvar minTime = moment(this.time_convert(Number(setSelectedService.extra.mincal)), 'LT').format('HH:mm a');\r\n\t\t\t\t\t\t\tvar maxTime = moment(this.time_convert(Number(setSelectedService.extra.maxcal)), 'LT').format('HH:mm a');\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tminCalTime: minTime,\r\n\t\t\t\t\t\t\t\tmaxCalTime: maxTime\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tminCalTime: '09:00 am',\r\n\t\t\t\t\t\t\t\tmaxCalTime: '18:00 pm'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet detailGrpId = !_.isUndefined(setSelectedService.detail_group_id)\r\n\t\t\t\t\t? setSelectedService.detail_group_id\r\n\t\t\t\t\t: undefined;\r\n\t\t\t\tthis.loadBookingQuestions(detailGrpId);\r\n\t\t\t}\r\n\r\n\t\t\tthis.props.dispatch(resourceActions.setActionRedirect(this.state.fromRedirect));\r\n\t\t\tthis.props.dispatch(resourceActions.setPaymentAction(this.state.paymentStatus));\r\n\t\t}\r\n\r\n\t\t//refetch slots service data from redirect action triggered\r\n\t\t//step 2\r\n\t\tif (prevProps.monthlyServicesSlots !== this.props.monthlyServicesSlots &&\r\n\t\t\t\tthis.props.monthlyServicesSlots &&\r\n\t\t\t\tthis.props.monthlyServicesSlots.length > 0 &&\r\n\t\t\tthis.state.fromRedirect === true\r\n\t\t) {\r\n\t\t\tlet options = [];\r\n\r\n\t\t\t if (this.state.unitType === ServiceUnitType.Day) {\r\n\t\t\t\toptions = _.map(this.props.monthlyServicesSlots, (item) => {\r\n\t\t\t\t\treturn { eventName: item.name, eventId: item.event_id };\r\n\t\t\t\t});\r\n\t\t\t\r\n\t\t\tlet selected_event_resource = [];\r\n\t\t\t//reform selected resource to usable object values\r\n\t\t\t_.map(this.props.selectedResourcesId, (o) => {\r\n\t\t\t\tlet curre_event = _.find(options, { eventId: o });\r\n\t\t\t\tif (!_.isUndefined(curre_event)) {\r\n\t\t\t\t\tselected_event_resource.push(curre_event);\r\n\t\t\t\t}\r\n\t\t\t\treturn o;\r\n\t\t\t});\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tevents: selected_event_resource\r\n\t\t\t\t// events: _.filter(selected_event_resource, ev => ev.eventId === this.props.selectedResourceId), //for single resource load, to do creat reducer for selected event\r\n\t\t\t});\r\n\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tresourceActions.setResourceEventsSelected(selected_event_resource, (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tfromRedirect: undefined\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (prevState.resourceOptions !== this.state.resourceOptions && this.state.resourceOptions && this.state.resourceOptions.length > 0) {\r\n\t\t\t\r\n\t\t\tif (this.state.events.length > 0) {\r\n\t\t\t\tlet current_events = _.map(this.state.events, (event) => {\r\n\t\t\t\t\tlet item = _.find(this.state.resourceOptions, { name: event.eventName });\r\n\t\t\t\t\treturn { eventName: item.name, eventId: item.eventid };\r\n\t\t\t\t});\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tresourceProcessing: undefined,\r\n\t\t\t\t\tevents: current_events\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tresourceActions.setResourceEventsSelected(current_events, (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//initial load of bookings, not from redirect\r\n\t\tif (\r\n\t\t\tthis.props.services !== prevProps.services &&\r\n\t\t\t!_.isUndefined(this.props.services) &&\r\n\t\t\tthis.props.services.length > 0 &&\r\n\t\t\t(_.isUndefined(this.props.fromRedirect) || this.props.fromRedirect === false)\r\n\t\t) {\r\n\t\t\tif (this.props.services.length === 1) {\r\n\t\t\t\tvar service = this.props.services[0];\r\n\t\t\t\tlet unit = service.duration_unit;\r\n\r\n\t\t\t\tlet service_id = service.id;\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tserviceId: service_id,\r\n\t\t\t\t\tselectedService: service,\r\n\t\t\t\t\tunitType: unit,\r\n\t\t\t\t\tresourceProcessing: true\r\n\t\t\t\t});\r\n\t\t\t\tif (unit === ServiceUnitType.Minute) {\r\n\t\t\t\t\tif (service.extra && service.extra.mincal && service.extra.maxcal) {\r\n\t\t\t\t\t\tvar minTime = moment(this.time_convert(Number(service.extra.mincal)), 'LT').format('HH:mm a');\r\n\t\t\t\t\t\tvar maxTime = moment(this.time_convert(Number(service.extra.maxcal)), 'LT').format('HH:mm a');\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tminCalTime: minTime,\r\n\t\t\t\t\t\t\tmaxCalTime: maxTime\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tminCalTime: '09:00 am',\r\n\t\t\t\t\t\t\tmaxCalTime: '18:00 pm'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (unit === ServiceUnitType.Day) {\r\n\t\t\t\t\tvar date_ = this.state.now.toDate(),\r\n\t\t\t\t\t\ty = date_.getFullYear(),\r\n\t\t\t\t\t\tm = date_.getMonth();\r\n\t\t\t\t\tvar startDay = new Date(y, m, 1);\r\n\t\t\t\t\tvar endDay = new Date(y, m + 1, 0);\r\n\r\n\t\t\t\t\tstartDay = moment(startDay).subtract(this.state.max_day_bookings, 'd');\r\n\t\t\t\t\tendDay = moment(endDay).add(7, 'd');\r\n\r\n\t\t\t\t\tthis.servicesDayData(\r\n\t\t\t\t\t\tthis.props.services[0].id,\r\n\t\t\t\t\t\tstartDay.format('YYYY-MM-DD'),\r\n\t\t\t\t\t\tendDay.format('YYYY-MM-DD')\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.loadBookingQuestions(this.props.services[0].detail_group_id);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.state.serviceId !== prevState.serviceId && this.state.serviceId) {\r\n\t\t\tthis.setServiceDetail(this.state.serviceId);\r\n\t\t}\r\n\r\n\t\tif (this.state.unitType !== prevState.unitType && this.state.unitType) {\r\n\t\t\tthis.setServiceUnit(this.state.unitType);\r\n\t\t}\r\n\r\n\r\n\t\tif (\r\n\t\t\tthis.props.servicesSlots !== prevProps.servicesSlots &&\r\n\t\t\tthis.props.servicesSlots &&\r\n\t\t\tthis.props.servicesSlots.length > 0 &&\r\n\t\t\tthis.state.unitType === ServiceUnitType.Minute\r\n\t\t) {\r\n\t\t\tlet data = _.uniqBy(this.props.servicesSlots, function(e) {\r\n\t\t\t\treturn e.event_id;\r\n\t\t\t});\r\n\r\n\t\t\tlet service_options = _.map(data, (item) => {\r\n\t\t\t\treturn { name: item.name, eventid: item.event_id };\r\n\t\t\t});\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tresourceOptions: service_options,\r\n\t\t\t\t\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//resources state data, prefetched\r\n\t\t//this.props.resources removed (previous implementation)\r\n\t\tif (\r\n\t\t\tthis.props.monthlyServicesSlots !== prevProps.monthlyServicesSlots &&\r\n\t\t\t!_.isUndefined(this.props.monthlyServicesSlots) &&\r\n\t\t\tthis.props.monthlyServicesSlots.length > 0 &&\r\n\t\t\tthis.state.unitType === ServiceUnitType.Day\r\n\t\t) {\r\n\t\t\tlet service_options = _.map(this.props.monthlyServicesSlots, (item) => {\r\n\t\t\t\treturn { name: item.name, eventid: item.event_id };\r\n\t\t\t});\r\n\t\t\tlet defaultEvents = [];\r\n\r\n\t\t\t//trigger this on initial bookings module landing and excluding payment journey / redirect\r\n\t\t\tif (\r\n\t\t\t\tthis.props.conciergeMember &&\r\n\t\t\t\tthis.props.conciergeMember.home_development &&\r\n\t\t\t\tthis.props.conciergeMember.home_development.length > 0 &&\r\n\t\t\t\t_.isUndefined(this.props.fromRedirect)\r\n\t\t\t) {\r\n\t\t\t\tdefaultEvents = _.filter(\r\n\t\t\t\t\t_.map(this.props.conciergeMember.home_development, (x) => {\r\n\t\t\t\t\t\tlet res = _.find(this.props.monthlyServicesSlots, { resource_id: x });\r\n\t\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\t\treturn { eventName: res.name, eventId: res.event_id };\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn undefined;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(o) => !_.isUndefined(o)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tevents: defaultEvents\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\r\n\t\t\tthis.setState({\r\n\t\t\t\tresourceOptions: _.filter(service_options, item => item.name !== \"\"),\r\n\t\t\t\tfromRedirect : undefined\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\r\n\t\tif (this.state.now !== prevState.now && !_.isUndefined(this.state.serviceId)) {\r\n\t\t\tif (this.state.unitType === ServiceUnitType.Day) {\r\n\t\t\t\t//start date of month change was triggered, update month daydata and resource options accordinly\r\n\t\t\t\tvar dateVal = this.state.now.toDate(),\r\n\t\t\t\t\tyr = dateVal.getFullYear(),\r\n\t\t\t\t\tmth = dateVal.getMonth();\r\n\t\t\t\tvar startDay_ = new Date(yr, mth, 1);\r\n\t\t\t\tvar endDay_ = new Date(yr, mth + 1, 0);\r\n\r\n\t\t\t\tstartDay_ = moment(startDay_).subtract(this.state.max_day_bookings, 'd');\r\n\t\t\t\tendDay_ = moment(endDay_).add(7, 'd');\r\n\r\n\t\t\t\tthis.servicesDayData(\r\n\t\t\t\t\tthis.state.serviceId,\r\n\t\t\t\t\tstartDay_.format('YYYY-MM-DD'),\r\n\t\t\t\t\tendDay_.format('YYYY-MM-DD')\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (prevProps.servicesSlots !== this.props.servicesSlots &&\r\n\t\t\tthis.props.servicesSlots && this.props.servicesSlots.length > 0 &&\r\n\t\t\tthis.state.fromRedirect === true\r\n\t\t) {\r\n\t\t\tlet options = [];\r\n\r\n\t\t\tif (this.state.unitType === ServiceUnitType.Minute) {\r\n\t\t\t\toptions = _.map(this.props.servicesSlots, (item) => {\r\n\t\t\t\t\treturn { eventName: item.name, eventId: item.event_id };\r\n\t\t\t\t});\r\n\t\t\t\r\n\t\t\tlet selected_event_resource = [];\r\n\t\t\t//reform selected resource to usable object values\r\n\t\t\t_.map(this.props.selectedResourcesId, (o) => {\r\n\t\t\t\tlet curre_event = _.find(options, { eventId: o });\r\n\t\t\t\tif (!_.isUndefined(curre_event)) {\r\n\t\t\t\t\tselected_event_resource.push(curre_event);\r\n\t\t\t\t}\r\n\t\t\t\treturn o;\r\n\t\t\t});\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tevents: selected_event_resource\r\n\t\t\t});\r\n\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tresourceActions.setResourceEventsSelected(selected_event_resource, (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tfromRedirect: undefined\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\t//method to handle servcies selection change\r\n\thandleServiceSelected(option) {\r\n\t\tlet service_id = option.target.value;\r\n\r\n\t\tlet serv = _.find(this.props.services, { id: service_id });\r\n\t\tlet unitType = !_.isUndefined(serv) ? serv.duration_unit : '';\r\n\r\n\t\tvar date_ = this.state.now.toDate(),\r\n\t\t\ty = date_.getFullYear(),\r\n\t\t\tm = date_.getMonth();\r\n\t\tvar startDay = new Date(y, m, 1);\r\n\t\tvar endDay = new Date(y, m + 1, 0);\r\n\r\n\t\tlet max_booking =\r\n\t\t\t!_.isUndefined(serv) && !_.isUndefined(serv.max_bookings) && serv.max_bookings > MAX_DATE_BOOKINGS\r\n\t\t\t\t? serv.max_bookings\r\n\t\t\t\t: MAX_DATE_BOOKINGS;\r\n\t\tstartDay = moment(startDay).subtract(max_booking, 'd');\r\n\t\tendDay = moment(endDay).add(7, 'd');\r\n\r\n\t\tthis.setState({\r\n\t\t\tselectedService: serv,\r\n\t\t\tserviceId: service_id,\r\n\t\t\tunitType: unitType,\r\n\t\t\tresourceProcessing: true,\r\n\t\t\tmax_day_bookings: max_booking\r\n\t\t});\r\n\r\n\t\tthis.setServiceDetail(service_id);\r\n\t\tthis.setServiceUnit(serv.duration_unit);\r\n\t\tthis.props.dispatch(resourceActions.setServiceId(service_id));\r\n\t\tif (unitType === ServiceUnitType.Minute) {\r\n\t\t\tif (serv.extra && serv.extra.mincal && serv.extra.maxcal) {\r\n\t\t\t\tvar minTime = moment(this.time_convert(Number(serv.extra.mincal)), 'LT').format('HH:mm a');\r\n\t\t\t\tvar maxTime = moment(this.time_convert(Number(serv.extra.maxcal)), 'LT').format('HH:mm a');\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tminCalTime: minTime,\r\n\t\t\t\t\tmaxCalTime: maxTime\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tminCalTime: '09:00 am',\r\n\t\t\t\t\tmaxCalTime: '18:00 pm'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (unitType === ServiceUnitType.Day) {\r\n\t\t\tthis.servicesDayData(service_id, startDay.format('YYYY-MM-DD'), endDay.format('YYYY-MM-DD'));\r\n\t\t}\r\n\r\n\t\tlet detailGrpId = !_.isUndefined(serv.detail_group_id) ? serv.detail_group_id : undefined;\r\n\t\tthis.loadBookingQuestions(detailGrpId);\r\n\t\tthis.props.dispatch(\r\n\t\t\tresourceActions.setResourceEventsSelected([], (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t} else {\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t\tthis.setState({\r\n\t\t\tresourceOptions: [],\r\n\t\t\tevents: []\r\n\t\t});\r\n\t}\r\n\r\n\tloadBookingQuestions(detail_group_id) {\r\n\t\tthis.props.dispatch(resourceMonthlyActions.fetchBookingQuestions(detail_group_id));\r\n\t}\r\n\tsetServiceDetail(serviceId) {\r\n\t\tthis.props.dispatch(resourceActions.fetchServiceDetail(serviceId));\r\n\t}\r\n\tsetServiceUnit(unit) {\r\n\t\tthis.props.dispatch(resourceActions.setServiceUnit(unit));\r\n\t}\r\n\r\n\tservicesDayData(serviceId, startDate, endDate) {\r\n\t\tthis.props.dispatch(\r\n\t\t\tresourceMonthlyActions.fetchServiceDayData(serviceId, startDate, endDate, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.fetchMonthlyServicesSlots(serviceId, moment(startDate), endDate);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tfetchMonthlyServicesSlots(serviceId, startDate, endDate) {\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tresourceMonthlyActions.fetchServicesSlots(\r\n\t\t\t\tserviceId,\r\n\t\t\t\tmoment(startDate).format('YYYY-MM-DD'),\r\n\t\t\t\tmoment(endDate).format('YYYY-MM-DD'),\r\n\t\t\t\t(success) => {\r\n\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tresourceProcessing: undefined\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\ttrigerdDateChanged(date) {\r\n\t\tthis.setState({\r\n\t\t\tnow: date\r\n\t\t});\r\n\t}\r\n\r\n\t//screen selectors for monthly or daily type\r\n\tshowView(type) {\r\n\t\tlet properties = {\r\n\t\t\tsericeUnit: type,\r\n\t\t\tsetDate: this.state.paymentEventSetDate,\r\n\t\t\tminCalTime: this.state.minCalTime,\r\n\t\t\tmaxCalTime: this.state.maxCalTime\r\n\t\t};\r\n\t\t\r\n\t\tswitch (type) {\r\n\t\t\tcase ServiceUnitType.Day:\r\n\t\t\t\treturn this.trigerdDateChanged(date)} />;\r\n\t\t\tcase ServiceUnitType.Minute:\r\n\t\t\t\treturn ;\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.showBlank();\r\n\t\t}\r\n\t}\r\n\r\n\t/**default blank section used on fallback on screen shown */\r\n\tshowBlank() {\r\n\t\treturn
    No services availaible..
    ;\r\n\t}\r\n\r\n\thandleResourceChange(val) {\r\n\t\tconst { servicesSlots, monthlyServicesSlots } = this.props;\r\n\t\tconst { unitType } = this.state;\r\n\r\n\t\tlet options = [];\r\n\r\n\t\tif (unitType === ServiceUnitType.Minute) {\r\n\t\t\toptions = _.map(servicesSlots, (item) => {\r\n\t\t\t\treturn { eventName: item.name, eventId: item.event_id };\r\n\t\t\t});\r\n\t\t} else if (unitType === ServiceUnitType.Day) {\r\n\t\t\toptions = _.map(monthlyServicesSlots, (item) => {\r\n\t\t\t\treturn { eventName: item.name, eventId: item.event_id };\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet selected_event_resource = [];\r\n\r\n\t\t//reform selected resource to usable object values\r\n\t\t_.map(val, (o) => {\r\n\t\t\tlet curre_event = _.find(options, { eventId: o });\r\n\t\t\tif (!_.isUndefined(curre_event)) {\r\n\t\t\t\tselected_event_resource.push(curre_event);\r\n\t\t\t}\r\n\t\t\treturn o;\r\n\t\t});\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tresourceActions.setResourceEventsSelected(selected_event_resource, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t} else {\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tthis.setState({\r\n\t\t\tevents: selected_event_resource\r\n\t\t});\r\n\t}\r\n\r\n\ttime_convert(num) {\r\n\t\tvar hours = Math.floor(num / 60);\r\n\t\tvar minutes = num % 60;\r\n\t\treturn `${hours}${':'}${minutes}`;\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { services } = this.props;\r\n\r\n\t\tlet services_options = [];\r\n\r\n\t\t//format services option for dropdown\r\n\t\tif (services && services.length > 0) {\r\n\t\t\tservices_options = _.map(services, (serv) => {\r\n\t\t\t\treturn { label: serv.name, value: serv.id };\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{/**\r\n Services dropdown option and resources dropdown option placement\r\n * \r\n */}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t this.handleServiceSelected(e)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t this.handleResourceChange(e)}\r\n\t\t\t\t\t\t\t\t\t\tselectedOption={\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.resourceOptions.length > 0 ? this.state.events : undefined\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tprocessing={this.state.resourceProcessing}\r\n\t\t\t\t\t\t\t\t\t\teventSelectionprocessing={this.props.resourceProcessingStatus}\r\n\t\t\t\t\t\t\t\t\t\tplaceHolder={'Select Resource'}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    {this.props.service && this.showView(this.state.unitType)}
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tservices: resourceSelectors.getServices(state),\r\n\t\tservice: resourceSelectors.getService(state),\r\n\t\tservicesSlots: resourceSelectors.getServicesSlots(state),\r\n\t\tdayData: resourceMonthlySelectors.getServiceDayData(state),\r\n\t\tresources: resourceMonthlySelectors.getResources(state),\r\n\t\tmonthlyServicesSlots: resourceMonthlySelectors.getServicesSlots(state),\r\n\t\tconciergeMember: authSelectors.getConciergeDetails(state),\r\n\t\tresourceProcessingStatus: resourceSelectors.getResourceProcessingStatus(state)\r\n\t};\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps)(BookingsScreen));\r\n","import _ from 'lodash';\r\n\r\nexport function formatString(str) {\r\n\tif (str.length > 20) {\r\n\t\treturn str.substr(0, 10) + '...' + str.substr(str.length - 10, str.length);\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n/**\r\n * Concat array of string data and append \r\n * @param {*} data \r\n * @param {*} substringsize \r\n */\r\nexport function formatStringList(data, substringsize = 0) {\r\n\tlet result = '';\r\n\tif (data && data.length > 0) {\r\n\t\t_.map(data, (val, i) => {\r\n\t\t\tif (val) {\r\n\t\t\t\tresult += `${data[data.length - 1] != val ? `${val}${', '}` : `${val}`}`;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tif (substringsize > 0 && result.length > substringsize) {\r\n\t\tresult = result.substring(0, substringsize) + '...';\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n","import React, { Component } from 'react';\r\n\r\nimport _ from 'lodash';\r\nimport autoBind from 'react-autobind';\r\nimport * as configHelper from '../../helpers/configHelper';\r\nimport * as stringHelper from '../../helpers/stringHelper';\r\n\r\nimport Autosuggest from 'react-autosuggest';\r\n\r\nimport '../../sass/components/ParcelAutosuggest/index.css';\r\n\r\nclass ParcelAutoSuggest extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.textInput = null;\r\n\t\tthis.defaultState = {\r\n\t\t\tvalue: '',\r\n\t\t\tsuggestions: [],\r\n\t\t\tvalid: false,\r\n\t\t\tselected: undefined\r\n\t\t};\r\n\r\n\t\tthis.state = this.defaultState;\r\n\t\tthis.emptyResponse = {\r\n\t\t\tparcelId: '',\r\n\t\t\tcompanyName: '',\r\n\t\t\tparcel: undefined,\r\n\t\t\tdataMatch: undefined\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t// Set the autosuggest to an initial value if it is provided\r\n\t\tif (!_.isUndefined(this.props.defaultparcelId)) {\r\n\t\t\tconst startParcel = this.props.parcels.find((meeting) => {\r\n\t\t\t\treturn meeting.parcel.id === this.props.defaultparcelId;\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleParcelSelected(startParcel);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalue: startParcel.resident.firstName + ' ' + startParcel.resident.lastName,\r\n\t\t\t\tvalid: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n * exclude control + J on input response, this is needed as scanner append Ctrl + J at end of value scanned\r\n * https://stackoverflow.com/questions/27960841/usb-barcode-scanner-opens-browsers-downloads-page/27961410\r\n */\r\n\r\n\t\twindow.addEventListener('keydown', function(event) {\r\n\t\t\tif (event.keyCode === 17 || event.keyCode === 74) {\r\n\t\t\t\tif (event.ctrlKey) event.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.setState(this.defaultState);\r\n\t}\r\n\r\n\t//null to empty string\r\n\tformatText(data) {\r\n\t\treturn data ? data : '';\r\n\t}\r\n\r\n\tformatDataText(v1, v2) {\r\n\t\tlet data = '';\r\n\t\tif (v1) {\r\n\t\t\tdata = `${' - '}${v1}${v2 ? `${', '}${v2}` : ''}`;\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\t// Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n\tgetSuggestionValue(suggestion) {\r\n\t\t// const { name } = this.state;\r\n\t\t//.replace(/,/g, '')\r\n\t\t// return `${suggestion.resident.firstName} ${suggestion.resident.lastName} ${this.formatDataText(suggestion.resident.addressLine1, suggestion.resident.addressLine2)}`;\r\n\t\tthis.handleParcelSelected(suggestion);\r\n\t\tif (suggestion) this.setState({ disabled: '' });\r\n\t\tthis.props.matchfound && this.props.matchfound(undefined);\r\n\t\tif (this.props.type === configHelper.PortalTypes.Residential)\r\n\t\t\treturn `${suggestion.resident.firstName} ${suggestion.resident.lastName} ${this.formatDataText(\r\n\t\t\t\tsuggestion.resident.addressLine1 && suggestion.resident.addressLine1,\r\n\t\t\t\tsuggestion.resident.addressLine2\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn `${suggestion.tenant.firstName} ${suggestion.tenant.lastName} ${suggestion.tenant.companyName\r\n\t\t\t\t? '- ' + this.formatText(suggestion.tenant.companyName)\r\n\t\t\t\t: ''}`;\r\n\t}\r\n\r\n\thandleClear(e) {\r\n\t\tthis.reset();\r\n\t\tthis.props.matchfound && this.props.matchfound(undefined);\r\n\t\tthis.props.fieldManualCleared && this.props.fieldManualCleared(true);\r\n\t\tthis.props.fieldCleared && this.props.fieldCleared(undefined);\r\n\t\tthis.props.handleKeyPress && this.props.handleKeyPress({ key: 'Reset' }, []);\r\n\t}\r\n\r\n\tgetSuggestions(val) {\r\n\t\tconst { parcels, type } = this.props;\r\n\r\n\t\tif (!parcels) return [];\r\n\r\n\t\tvar parcels_ = _.filter(parcels, (item) => {\r\n\t\t\tif (!_.isUndefined(type) && type === configHelper.PortalTypes.Residential) {\r\n\t\t\t\treturn item.resident.firstName !== null || item.resident.lastName !== null;\r\n\t\t\t} else if (!_.isUndefined(type) && type === configHelper.PortalTypes.Commercial) {\r\n\t\t\t\treturn item.tenant.firstName !== null || item.tenant.lastName !== null;\r\n\t\t\t}\r\n\t\t});\r\n\t\tconst inputValue = val.trim().toLowerCase();\r\n\t\t// const inputLength = inputValue.length;\r\n\t\tconst inputParts = inputValue.split(' ').filter((value) => {\r\n\t\t\treturn value !== '';\r\n\t\t});\r\n\r\n\t\tlet match = [];\r\n\r\n\t\t//input parts use to filter out blanck or empty text used\r\n\t\tif (inputParts.length === 1) {\r\n\t\t\tif (!_.isUndefined(type) && type === configHelper.PortalTypes.Residential) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t(o.barcode && _.startsWith(o.barcode.toLowerCase(), inputParts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), inputParts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine2 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine2.toLowerCase(), inputParts[0].toLowerCase()))\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t} else if (!_.isUndefined(type) && type === configHelper.PortalTypes.Commercial) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t(o.barcode && _.startsWith(o.barcode.toLowerCase(), inputParts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t(o.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), inputParts[0].toLowerCase()))\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (inputParts.length === 2) {\r\n\t\t\tlet searchData = _.trimEnd(_.trimStart(val));\r\n\t\t\tif (!_.isUndefined(type) && type === configHelper.PortalTypes.Residential) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[1].toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine2 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine2.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode, searchData)\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t} else if (!_.isUndefined(type) && type === configHelper.PortalTypes.Commercial) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t(_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[1].toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode, searchData)\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (inputParts.length > 3) {\r\n\t\t\tlet search = '';\r\n\t\t\tfor (let i = 3; i < inputParts.length; i++) {\r\n\t\t\t\tsearch += inputParts[i] + ' ';\r\n\t\t\t}\r\n\t\t\tsearch = _.trimEnd(search);\r\n\r\n\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\tif (!_.isUndefined(type) && type === configHelper.PortalTypes.Residential) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[1].toLowerCase()) &&\r\n\t\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), inputParts[3].toLowerCase()))) ||\r\n\t\t\t\t\t\t(o.barcode && _.startsWith(o.barcode.toLowerCase(), val.toLowerCase())) ||\r\n\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), val.toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), val.toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine2 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine2.toLowerCase(), val.toLowerCase()))\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (!_.isUndefined(type) && type === configHelper.PortalTypes.Commercial) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(o.barcode && _.startsWith(o.barcode.toLowerCase(), val.toLowerCase())) ||\r\n\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), val.toLowerCase())) ||\r\n\t\t\t\t\t\t(_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[1].toLowerCase()) &&\r\n\t\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), inputParts[3].toLowerCase())))\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.props.matchfound && this.props.matchfound(match.length > 0);\r\n\r\n\t\tthis.setState({\r\n\t\t\tdataMatch: match\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tonSuggestionsFetchRequested = ({ value }) => {\r\n\t\tthis.setState({ suggestions: this.getSuggestions(value) });\r\n\t};\r\n\r\n\tonSuggestionsClearRequested = () => {\r\n\t\t//this.props.matchfound && this.props.matchfound(undefined);\r\n\t\t// if (this.state.dataMatch && this.state.dataMatch.length > 0)\r\n\t\t// this.props.matchfound && this.props.matchfound(undefined);\r\n\t\t// this.setState({\r\n\t\t// suggestions: []\r\n\t\t// });\r\n\t};\r\n\r\n\tonChange = (event, { newValue }) => {\r\n\t\tif (newValue.length === 0) {\r\n\t\t\tthis.setState({ parcel: undefined });\r\n\t\t\tthis.props.matchfound && this.props.matchfound(undefined);\r\n\t\t\tthis.props.fieldManualCleared && this.props.fieldManualCleared(true);\r\n\t\t} else {\r\n\t\t\tthis.props.fieldCleared && this.props.fieldCleared(undefined);\r\n\t\t}\r\n\t\tif (newValue.length > 2) {\r\n\t\t\tthis.handleParcelChange(newValue);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tvalue: newValue,\r\n\t\t\tvalid: newValue.length > 0,\r\n\t\t\tselected: undefined\r\n\t\t});\r\n\t};\r\n\r\n\t//to be revisited on up / down used for selection\r\n\thandleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method) {\r\n\t\tthis.handleParcelSelected(suggestion);\r\n\t}\r\n\thandleParcelSelected(val, setValue = false) {\r\n\t\tconst stateChanges = {\r\n\t\t\t// meetingId: vis.id,\r\n\t\t\tparcelId: val.id,\r\n\t\t\taddress:\r\n\t\t\t\tthis.props.type === configHelper.PortalTypes.Residential\r\n\t\t\t\t\t? val.resident.addressLine1 + ' ' + val.resident.addressLine2\r\n\t\t\t\t\t: '',\r\n\t\t\tparcel: val,\r\n\t\t\tcompanyName: this.props.type === configHelper.PortalTypes.Commercial ? val.tenant.companyName : '',\r\n\t\t\tselected: true,\r\n\t\t\tmatchfound: true,\r\n\t\t\t...(setValue ? { value: val.resident.firstName + ' ' + val.resident.lastName, valid: true } : {})\r\n\t\t};\r\n\r\n\t\tthis.setState(stateChanges);\r\n\t\tthis.props.matchfound && this.props.matchfound(true);\r\n\t\tthis.props.onSelected && this.props.onSelected(stateChanges);\r\n\t}\r\n\r\n\thandleParcelChange(value) {\r\n\t\tthis.setState({\r\n\t\t\tname: value\r\n\t\t});\r\n\t}\r\n\r\n\trenderSuggestion(suggestion, { query, isHighlighted }) {\r\n\t\tlet addr = !suggestion.resident.addressLine1 ? '' : suggestion.resident.addressLine1;\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{this.props.type === configHelper.PortalTypes.Residential ? (\r\n\t\t\t\t\t`${suggestion.resident.firstName} ${suggestion.resident\r\n\t\t\t\t\t\t.lastName} ${' - '}${stringHelper.formatStringList(\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\taddr,\r\n\t\t\t\t\t\t\tsuggestion.resident.addressLine2,\r\n\t\t\t\t\t\t\tsuggestion.resident.addressLine3,\r\n\t\t\t\t\t\t\tsuggestion.resident.addressLine4,\r\n\t\t\t\t\t\t\tsuggestion.resident.addressLine5,\r\n\t\t\t\t\t\t\tsuggestion.resident.addressLine6,\r\n\t\t\t\t\t\t\tsuggestion.resident.postCode\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\t0\r\n\t\t\t\t\t)}`\r\n\t\t\t\t) : (\r\n\t\t\t\t\t`${suggestion.tenant.firstName} ${suggestion.tenant.lastName} ${suggestion.tenant.companyName\r\n\t\t\t\t\t\t? '- ' + this.formatText(suggestion.tenant.companyName)\r\n\t\t\t\t\t\t: ''}`\r\n\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t\t\t{'Barcode:'} {suggestion.barcode ? suggestion.barcode : 'Not Available'}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tcheckMatch(currentValue) {\r\n\t\tconst matchedParcel = this.props.parcels.find((parcel) => {\r\n\t\t\tif (currentValue) {\r\n\t\t\t\tconst value = currentValue.toLowerCase();\r\n\t\t\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\t\t\treturn value !== '';\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (parts.length > 0) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t_.startsWith(parcel.resident.firstName.toLowerCase(), parts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(parcel.resident.lastName.toLowerCase(), parts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(parcel.resident.addressLine1.toLowerCase(), parts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(parcel.resident.addressLine2.toLowerCase(), parts[0].toLowerCase())\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(matchedParcel) === false) {\r\n\t\t\t// if (matchedParcel_.length === 1) {\r\n\r\n\t\t\tthis.handleParcelSelected(matchedParcel);\r\n\t\t} else {\r\n\t\t\tif (currentValue === '') {\r\n\t\t\t\t//this.props.matchfound && this.props.matchfound(undefined);\r\n\t\t\t}\r\n\r\n\t\t\t//this.props.matchfound && this.props.matchfound(false);\r\n\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\tinputClick() {\r\n\t\tif (\r\n\t\t\tthis.state.valid === true &&\r\n\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\tthis.props.clearableIfValid === true\r\n\t\t) {\r\n\t\t\tthis.reset();\r\n\t\t\t//this.props.matchfound && this.props.matchfound(undefined);\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t\tthis.props.handleKeyPress && this.props.handleKeyPress({ key: 'Clear' }, []);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { value, suggestions, valid } = this.state;\r\n\r\n\t\tconst disabled = _.isUndefined(this.props.disabled) || this.props.disabled === false ? false : true;\r\n\r\n\t\tconst inputProps = {\r\n\t\t\tplaceholder: this.props.placeHolder ? this.props.placeHolder : '',\r\n\t\t\tvalue,\r\n\t\t\tonChange: this.onChange,\r\n\t\t\tonClick: this.inputClick\r\n\t\t};\r\n\r\n\t\t//alway set the parcel search input when this parcel module loads\r\n\t\tif (this.textInput) {\r\n\t\t\tthis.textInput.focus();\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\tthis.handleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method)}\r\n\t\t\t\trenderSuggestion={this.renderSuggestion}\r\n\t\t\t\tinputProps={inputProps}\r\n\t\t\t\ttheme={{\r\n\t\t\t\t\t// maybe make global for reuse at some point\r\n\t\t\t\t\tcontainer:\r\n\t\t\t\t\t\t'auto-suggest Select ' +\r\n\t\t\t\t\t\t(!_.isUndefined(this.props.clearableIfValid) && this.props.clearableIfValid === true\r\n\t\t\t\t\t\t\t? 'is-clearable'\r\n\t\t\t\t\t\t\t: ''),\r\n\t\t\t\t\tsuggestionsList: 'Select-menu-outer-parcel',\r\n\t\t\t\t\tsuggestion: 'Select-menu',\r\n\t\t\t\t\tsuggestionsContainer: 'select--suggestions'\r\n\t\t\t\t}}\r\n\t\t\t\trenderInputComponent={(inputProps) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (_.isUndefined(this.state.selected)) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter' && !_.isUndefined(this.props.handleKeyPress)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (!_.isEmpty(_.trim(this.state.value))) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.handleKeyPress(e, this.state.dataMatch);\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.handleKeyPress(e, []);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else if (this.state.selected === true) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter' && !_.isUndefined(this.props.handleKeyPress)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({ selected: undefined });\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonBlur={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\r\n\t\t\t\t\t\t\t\t\t\tthis.checkMatch(e.target.value);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t{...inputProps}\r\n\t\t\t\t\t\t\t\t\t//ref={e => (this.textInput = e)} //to be looked at, affecting display of data in auto suggest\r\n\t\t\t\t\t\t\t\t\t//ref={(e) => { this.nameInput = e; }}\r\n\t\t\t\t\t\t\t\t\tautoFocus\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t{valid === true && (\r\n\t\t\t\t\t\t\t\t\t
    this.handleClear(e)}>\r\n\t\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n}\r\nexport default ParcelAutoSuggest;\r\n","import React, { Component } from \"react\";\r\n\r\nimport autoBind from \"react-autobind\";\r\nimport _ from \"lodash\";\r\n\r\nimport \"../../sass/components/Parcel/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\nclass ParcelResultComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n btnStatus: \"unchecked hidden\",\r\n btnText: \"Check-out\",\r\n parcelResultComponentHeight: \"144\",\r\n toggleHideParcelResult: \"show\",\r\n toggleHideParcelResultOverlay: \"hide\"\r\n\r\n };\r\n autoBind(this);\r\n }\r\n\r\n\r\n\r\n handleClick(e) {\r\n this.setState({\r\n toggleHideParcelResult: \"hide\",\r\n toggleHideParcelResultOverlay: \"show\"\r\n });\r\n\r\n }\r\n\r\n handleYesButtonClick() {\r\n\r\n\r\n this.setState({\r\n toggleHideParcelResult: \"show\",\r\n toggleHideParcelResultOverlay: \"hide\"\r\n });\r\n\r\n }\r\n\r\n handleNoButtonClick(e) {\r\n\r\n this.setState({\r\n toggleHideParcelResult: \"show\",\r\n toggleHideParcelResultOverlay: \"hide\"\r\n });\r\n\r\n }\r\n\r\n\r\n componentDidMount() {\r\n\r\n\r\n const height = this.parcelElement.offsetHeight;\r\n\r\n if (this.parcelOverlayElement) {\r\n if (height > 144) {\r\n this.parcelOverlayElement.style.alignItems = \"center\";\r\n }\r\n else {\r\n this.parcelOverlayElement.style.alignItems = \"none\";\r\n }\r\n\r\n }\r\n\r\n\r\n this.setState({\r\n parcelResultComponentHeight: height,\r\n });\r\n }\r\n\r\n\r\n render() {\r\n const {\r\n\r\n tenantName,\r\n tenantAddress,\r\n barcodeId,\r\n parcelReceivedDate,\r\n location,\r\n moduleColor,\r\n showoverlay,\r\n id\r\n } = this.props;\r\n\r\n\r\n\r\n return (\r\n
    \r\n
    { this.parcelElement = parcelElement }}>\r\n
    \r\n
    Tenant
    \r\n
    \r\n {tenantName}\r\n {tenantAddress}\r\n {/* {portalType === PortalTypes.Commercial ?\r\n {companyName}\r\n : {tenantAddress}} */}\r\n
    \r\n
    \r\n Location\r\n {location}\r\n
    \r\n
    \r\n\r\n
    \r\n
    Barcode
    \r\n
    \r\n {(barcodeId !== null && barcodeId !== \"\" && (!_.isUndefined(barcodeId))) ? barcodeId : \"Not Available\"}\r\n {parcelReceivedDate}\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n showoverlay && showoverlay === true &&\r\n
    { this.parcelOverlayElement = parcelOverlayElement }}>\r\n
    \r\n
    \r\n Do you wish to check-out this parcel?\r\n {(barcodeId !== null && barcodeId !== \"\" && (!_.isUndefined(barcodeId))) ? barcodeId.length > 60 ? (barcodeId.substring(0, 60) + '....') : barcodeId : \"Not Available\"}\r\n
    \r\n
    \r\n Tenant\r\n {tenantName} {tenantAddress ? \" - \" + tenantAddress : \"\"}\r\n
    \r\n
    \r\n \r\n\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n
    \r\n );\r\n\r\n }\r\n}\r\n\r\nParcelResultComponent.propType = {\r\n\r\n /** Text displayed on the Component to display the tenant Name*/\r\n tenantName: PropTypes.string,\r\n\r\n /** Text to display the Address*/\r\n tenantAddress: PropTypes.string,\r\n\r\n /** Text to display the barcode Id*/\r\n barcodeId: PropTypes.string,\r\n\r\n /** Text to display the Parcel received on Date*/\r\n parcelReceivedDate: PropTypes.string,\r\n\r\n /** Text to display the parcel location */\r\n location: PropTypes.string,\r\n\r\n /** Text to display the Button Text */\r\n btnText: PropTypes.string,\r\n\r\n /** Text to apply the module color*/\r\n moduleColor: PropTypes.string,\r\n\r\n /** Text to display the tenant address line 1*/\r\n tenantAddressLine1: PropTypes.string,\r\n\r\n};\r\n\r\n\r\n\r\nexport default ParcelResultComponent;","import React, { Component } from \"react\";\r\n\r\nimport \"../../sass/components/customMessage/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/*\r\n*Custom Underline Message\r\n*/\r\nclass CustomMessages extends Component {\r\n\r\n\r\n render() {\r\n const { text } = this.props\r\n return (\r\n
    \r\n {text}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nCustomMessages.propTypes = {\r\n\r\n /**Text string to display */\r\n text: PropTypes.string\r\n\r\n};\r\n\r\nexport default CustomMessages;","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * A general purpose Visitors Expected Component to display the day and time details of the Visitors and their Numbers\r\n */\r\n\r\nclass ParcelsExpected extends Component {\r\n render() {\r\n\r\n const { taskTitle, numberOfParcels, parcelMessage, linkMessage, timeFrame, moduleColor, handleClick } = this.props;\r\n\r\n return (\r\n\r\n
    \r\n
    \r\n {taskTitle}\r\n {numberOfParcels}\r\n {parcelMessage}\r\n {timeFrame}\r\n {linkMessage}\r\n
    \r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nParcelsExpected.propTypes = {\r\n /** Text displayed on the Component to denote the title*/\r\n taskTitle: PropTypes.string,\r\n\r\n /** Text to display the Number of parcels Expected */\r\n numberOfParcels: PropTypes.string,\r\n\r\n /** Text displayed on the Component to denote the message */\r\n parcelMessage: PropTypes.string,\r\n\r\n /** The link to redirect for more information */\r\n linkMessage: PropTypes.string,\r\n\r\n /** Time Period to denote the time when the parcels is Expected*/\r\n timeFrame: PropTypes.string,\r\n\r\n /** The variable to display module color */\r\n moduleColor: PropTypes.string\r\n};\r\nexport default ParcelsExpected;\r\n","import React, { Component } from 'react';\r\nimport { createBrowserHistory } from 'history';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\nimport _ from 'lodash';\r\nimport autoBind from 'react-autobind';\r\nimport Button from '../../../components/Button/Button';\r\nimport * as configHelper from '../../../helpers/configHelper';\r\nimport ParcelAutosuggest from '../../../components/ParcelAutoSuggest/ParcelAutoSuggest';\r\nimport ParcelResultComponent from '../../../components/Parcel/ParcelResultComponent';\r\nimport CustomMessages from '../../../components/CustomMessage/CustomMessages';\r\nimport { withRouter, Redirect} from 'react-router-dom';\r\nimport * as stringHelper from '../../../helpers/stringHelper';\r\nimport * as portalSettingsActions from '../../../store/ConciergeSetting/actions';\r\nimport * as portalSettingsSelectors from '../../../store/ConciergeSetting/reducer';\r\nimport * as parcelActions from '../../../store/Parcels/actions';\r\nimport * as parcelSelectors from '../../../store/Parcels/reducer';\r\n\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\nimport ParcelsExpected from '../../../components/Parcel/ParcelsExpected';\r\n\r\nimport dateFormat from 'dateformat';\r\n\r\n/**\r\n * Parcel module screen, this is the module start screen for the parcel journey loaded on the landing module home screen\r\n */\r\nimport history from '../../../history';\r\n//const history = createBrowserHistory();\r\nconst location = history.location;\r\n\r\nconst PortalTypes = configHelper.PortalTypes;\r\nconst ParcelStatus = configHelper.ParcelStatuses;\r\nclass ParcelScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tparcels: [],\r\n\t\t\tselectedParcelId: '',\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.portalSettings && this.props.portalSettings.portalType\r\n\t\t\t\t\t? this.props.portalSettings.portalType\r\n\t\t\t\t\t: '',\r\n\t\t\trelatedParcels: [],\r\n\t\t\t//selectedParcel : undefined,\r\n\t\t\tparcel : undefined\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentWillMount() {\r\n\t\tthis.props.dispatch(portalSettingsActions.getGlobalSetting());\r\n\t\tthis.props.dispatch(parcelActions.getParcelsByStatus(configHelper.ParcelStatuses.CheckedIn));\r\n\t\tthis.props.dispatch(parcelActions.getParcelsDue());\r\n\t\tthis.props.dispatch(parcelActions.getParcelsExpected());\r\n\t\tthis.props.dispatch(parcelActions.getParcelSettigs());\r\n\t}\r\n\r\n\tcomponentWillRec(nextProps, nextState) {\r\n\t\t// if (this.props.setting !== nextProps.setting && !_.isUndefined(nextProps.setting)) {\r\n\t\t// \tthis.setState({\r\n\t\t// \t\tportalType: nextProps.setting.portalType\r\n\t\t// \t});\r\n\t\t// }\r\n\r\n\t\t// if (this.props.parcels !== nextProps.parcels) {\r\n\t\t// \t//PARCEL status changed on action, set new data on action completed\r\n\t\t// \tif (!_.isUndefined(this.state.selectedParcel) && nextProps.parcels.length > 0) {\r\n\t\t// \t\tvar selectedParcelUpdated = _.find(nextProps.parcels, { id: this.state.selectedParcel.id });\r\n\r\n\t\t// \t\tthis.setState({\r\n\t\t// \t\t\tselectedParcel: selectedParcelUpdated\r\n\t\t// \t\t});\r\n\t\t// \t}\r\n\r\n\t\t// \t//parcel list has changed due to action on parcel result cards, update with new data\r\n\t\t// \tif (\r\n\t\t// \t\t!_.isUndefined(this.state.parcelOptions) &&\r\n\t\t// \t\tthis.state.parcelOptions.length > 0 &&\r\n\t\t// \t\tnextProps.parcels.length > 0\r\n\t\t// \t) {\r\n\t\t// \t\tif (!_.isUndefined(this.state.selectedParcel) && nextProps.parcels.length > 0) {\r\n\t\t// \t\t\tvar selectedParcelUpdated_ = _.find(nextProps.parcels, { id: this.state.selectedParcel.id });\r\n\t\t// \t\t\tvar parcelOptionsUpdated = _.filter(\r\n\t\t// \t\t\t\t_.filter(nextProps.parcels, (parcel) => {\r\n\t\t// \t\t\t\t\tlet parcelOption = _.find(this.state.parcelOptions, { id: parcel.id });\r\n\t\t// \t\t\t\t\tif (!_.isUndefined(parcelOption)) {\r\n\t\t// \t\t\t\t\t\treturn parcelOption;\r\n\t\t// \t\t\t\t\t}\r\n\t\t// \t\t\t\t\treturn undefined;\r\n\t\t// \t\t\t\t}),\r\n\t\t// \t\t\t\t(item) => !_.isUndefined(item)\r\n\t\t// \t\t\t);\r\n\r\n\t\t// \t\t\tthis.setState({\r\n\t\t// \t\t\t\tselectedParcel: selectedParcelUpdated_,\r\n\t\t// \t\t\t\tparcelOptions: parcelOptionsUpdated\r\n\t\t// \t\t\t});\r\n\t\t// \t\t}\r\n\t\t// \t}\r\n\r\n\t\t// \tthis.setState({\r\n\t\t// \t\tparcels: nextProps.parcels\r\n\t\t// \t});\r\n\t\t// }\r\n\r\n\t\t// if (this.state.parcelOptions !== nextState.parcelOptions) {\r\n\t\t// \tthis.setState({\r\n\t\t// \t\tparcelOptions: nextState.parcelOptions\r\n\t\t// \t});\r\n\t\t// }\r\n\t}\r\n\r\n\tcomponentWillUpdate(nextProps, nextState) {\r\n\t\t\r\n\r\n\t\t// if (this.props.parcels !== nextProps.parcels) {\r\n\t\t// \t//PARCEL status changed on action, set new data on action completed\r\n\t\t// \tif (!_.isUndefined(this.state.selectedParcel) && nextProps.parcels.length > 0) {\r\n\t\t// \t\tvar selectedParcelUpdated = _.find(nextProps.parcels, { id: this.state.selectedParcel.id });\r\n\r\n\t\t// \t\tthis.setState({\r\n\t\t// \t\t\tselectedParcel: selectedParcelUpdated\r\n\t\t// \t\t});\r\n\t\t// \t}\r\n\r\n\t\t// \t//parcel list has changed due to action on parcel result cards, update with new data\r\n\t\t// \tif (\r\n\t\t// \t\t!_.isUndefined(this.state.parcelOptions) &&\r\n\t\t// \t\tthis.state.parcelOptions.length > 0 &&\r\n\t\t// \t\tnextProps.parcels.length > 0\r\n\t\t// \t) {\r\n\t\t// \t\tif (!_.isUndefined(this.state.selectedParcel) && nextProps.parcels.length > 0) {\r\n\t\t// \t\t\tvar selectedParcelUpdated_ = _.find(nextProps.parcels, { id: this.state.selectedParcel.id });\r\n\t\t// \t\t\tvar parcelOptionsUpdated = _.filter(\r\n\t\t// \t\t\t\t_.filter(nextProps.parcels, (parcel) => {\r\n\t\t// \t\t\t\t\tlet parcelOption = _.find(this.state.parcelOptions, { id: parcel.id });\r\n\t\t// \t\t\t\t\tif (!_.isUndefined(parcelOption)) {\r\n\t\t// \t\t\t\t\t\treturn parcelOption;\r\n\t\t// \t\t\t\t\t}\r\n\t\t// \t\t\t\t\treturn undefined;\r\n\t\t// \t\t\t\t}),\r\n\t\t// \t\t\t\t(item) => !_.isUndefined(item)\r\n\t\t// \t\t\t);\r\n\r\n\t\t// \t\t\tthis.setState({\r\n\t\t// \t\t\t\tselectedParcel: selectedParcelUpdated_,\r\n\t\t// \t\t\t\tparcelOptions: parcelOptionsUpdated\r\n\t\t// \t\t\t});\r\n\t\t// \t\t}\r\n\t\t// \t}\r\n\r\n\t\t// \tthis.setState({\r\n\t\t// \t\tparcels: nextProps.parcels\r\n\t\t// \t});\r\n\t\t// }\r\n\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState){\r\n\t\tif (this.props.portalSettings !== prevProps.portalSettings && !_.isUndefined(this.props.portalSettings)) {\r\n\t\t\tif (!_.isUndefined(this.props.portalSettings.portalType)) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tportalType: this.props.portalSettings.portalType\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.props.parcels !== prevProps.parcels) {\r\n\t\t\t//PARCEL status changed on action, set new data on action completed\r\n\t\t\tif (!_.isUndefined(this.state.selectedParcel) && this.props.parcels.length > 0) {\r\n\t\t\t\tvar selectedParcelUpdated = _.find(this.props.parcels, { id: this.state.selectedParcel.id });\r\n\t\t\t\tconsole.log(\"selected P\", this.state.selectedParcel)\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tselectedParcel: selectedParcelUpdated\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//parcel list has changed due to action on parcel result cards, update with new data\r\n\t\t\tif (\r\n\t\t\t\t!_.isUndefined(this.state.parcelOptions) &&\r\n\t\t\t\tthis.state.parcelOptions.length > 0 &&\r\n\t\t\t\tthis.props.parcels.length > 0\r\n\t\t\t) {\r\n\t\t\t\tif (!_.isUndefined(this.state.selectedParcel) && this.props.parcels.length > 0) {\r\n\t\t\t\t\tvar selectedParcelUpdated_ = _.find(this.props.parcels, { id: this.state.selectedParcel.id });\r\n\t\t\t\t\tvar parcelOptionsUpdated = _.filter(\r\n\t\t\t\t\t\t_.filter(this.props.parcels, (parcel) => {\r\n\t\t\t\t\t\t\tlet parcelOption = _.find(this.state.parcelOptions, { id: parcel.id });\r\n\t\t\t\t\t\t\tif (!_.isUndefined(parcelOption)) {\r\n\t\t\t\t\t\t\t\treturn parcelOption;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn undefined;\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t(item) => !_.isUndefined(item)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tselectedParcel: selectedParcelUpdated_,\r\n\t\t\t\t\t\tparcelOptions: parcelOptionsUpdated\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tparcels: this.props.parcels\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\r\n\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\t//this.props.dispatch(parcelActions.clearParcel());\r\n\t}\r\n\t//reset parcel selection\r\n\tresetParcelSelection() {\r\n\t\tthis.setState({\r\n\t\t\tselectedParcelId: '',\r\n\t\t\trelatedParcels: [],\r\n\t\t\tselectedParcel: undefined,\r\n\t\t\tparcelOptions: []\r\n\t\t});\r\n\t}\r\n\t//parcel autosuggest on selected\r\n\thandleParcelSelected(data) {\r\n\t\tlet parcels = _.concat(this.state.parcels, this.props.parcelsDue);\r\n\r\n\t\tlet parcelsRelated = _.filter(parcels, (item) => {\r\n\t\t\tif (this.props.prtalSettings && this.props.portalSettings.portalType === PortalTypes.Residential) {\r\n\t\t\t\treturn item.resident && item.resident.id === data.parcel.resident.id;\r\n\t\t\t} else {\r\n\t\t\t\treturn item.tenant && item.tenant.id === data.parcel.tenant.id;\r\n\t\t\t}\r\n\t\t});\r\n\t\tlet parcelsRelated_ = _.filter(parcelsRelated, (o) => o.id !== data.parcelId);\r\n\r\n\t\tthis.setState({\r\n\t\t\tselectedParcel: data.parcel,\r\n\t\t\tselectedParcelId: data.parcelId,\r\n\t\t\tparcelOptions: undefined,\r\n\t\t\trelatedParcels: parcelsRelated_,\r\n\t\t\tparcel : data.parcel\r\n\t\t});\r\n\r\n\t\t\r\n\t\t//setTimeout(() => document.activeElement.blur());\r\n\t}\r\n\r\n\tformReset() {\r\n\t\tthis.setState({\r\n\t\t\tname: '',\r\n\t\t\taddress: '',\r\n\t\t\tselectedParcel: undefined\r\n\t\t});\r\n\t}\r\n\r\n\tgetParcelCount() {\r\n\t\tconst { parcelsExpected } = this.props;\r\n\t\t// let parcelCount = 0;\r\n\t\t// let currentDate = new Date();\r\n\r\n\t\tlet parcelsObj = _.filter(\r\n\t\t\t_.map(parcelsExpected, (o) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\to.status.status.toLowerCase() === configHelper.ParcelStatuses.Expected.toLowerCase() &&\r\n\t\t\t\t\tmoment(o.expectedDate).format('YYYY-MM-DD') === moment().format('YYYY-MM-DD')\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn o;\r\n\t\t\t\t}\r\n\t\t\t\treturn undefined;\r\n\t\t\t}),\r\n\t\t\t(item) => !_.isUndefined(item)\r\n\t\t);\r\n\r\n\t\t// !_.isUndefined(parcelsExpected) && parcelsExpected && parcelsExpected.length > 0 &&\r\n\t\t// _.map(parcelsExpected.slice(0, this.state.limit),\r\n\r\n\t\t// (parcel, index) => {\r\n\r\n\t\t// if ((parcel.status.status && parcel.status.status.toLowerCase() === configHelper.ParcelStatuses.Expected.toLowerCase()) &&\r\n\t\t// (dateFormat(parcel.expecteDate, \"dd/mm/yyyy\") === dateFormat(moment().format(), \"dd/mm/yyyy\"))) {\r\n\t\t// // moment(parcel.expectedDate).format(\"YYYY-MM-DD\") === moment().format(\"YYYY-MM-DD\")) {\r\n\t\t// parcelCount++;\r\n\t\t// }\r\n\r\n\t\t// });\r\n\r\n\t\treturn `${parcelsObj.length + ' parcels'}`;\r\n\t}\r\n\t\r\n\thandleSumbit(val) {\r\n\t\tlet selectedItem =\r\n\t\t\t!_.isUndefined(this.state.selectedParcel) && this.state.selectedParcel.id === val\r\n\t\t\t\t? undefined\r\n\t\t\t\t: this.state.selectedParcel;\r\n\r\n\t\t\t\t\r\n\t\tthis.props.dispatch(\r\n\t\t\tparcelActions.addParcelsToCheckout([ { Id: val } ], (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tconst filterData = _.filter(this.state.parcelOptions, (FilterValue) => FilterValue.id !== val);\r\n\r\n\t\t\t\t\tlet updateData = {\r\n\t\t\t\t\t\tid: this.state.parcel.id,\r\n\t\t\t\t\t\tbarcode: this.state.parcel.barcode,\r\n\t\t\t\t\t\tmemberId: this.state.parcel.recipient.memberId,\r\n\t\t\t\t\t\tlocationId: this.state.parcel.locationId,\r\n\t\t\t\t\t\tstatus: {status : ParcelStatus.Collected }\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tparcelOptions: filterData,\r\n\t\t\t\t\t\trelatedParcels: _.filter(this.state.relatedParcels, (rel) => rel.id !== val),\r\n\t\t\t\t\t\tselectedParcel: selectedItem\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\t\tparcelActions.notifyParcels([ updateData ], (complete) => {\r\n\t\t\t\t\t\t\tif (complete === true) {\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t\t//this.props.dispatch(parcelActions.getParcelsByStatus(configHelper.ParcelStatuses.CheckedIn));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { modules, parcels, portalSettings, parcelSettings, parcelsDue } = this.props;\r\n\t\tconst { relatedParcels } = this.state;\r\n\t\tconst collectByDays = !_.isUndefined(parcelSettings)\r\n\t\t\t? parcelSettings.collectByDays > 1\r\n\t\t\t\t? parcelSettings.collectByDays + ' days'\r\n\t\t\t\t: parcelSettings.collectByDays + ' day'\r\n\t\t\t: '';\r\n\t\tconst currentModule = _.find(modules, (o) => o.title === 'Parcels');\r\n\r\n\t\tconst overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\r\n\t\tconst searchPlaceHolder =\r\n\t\t\tportalSettings && portalSettings.portalType === configHelper.PortalTypes.Residential\r\n\t\t\t\t? 'Search by barcode, name or address'\r\n\t\t\t\t: 'Search by barcode, name or company';\r\n\r\n\t\tlet currentParcels = [];\r\n\t\tlet relatedParcelsList = [];\r\n\r\n\t\tif (relatedParcels && relatedParcels.length > 0) {\r\n\t\t\trelatedParcelsList = _.orderBy(relatedParcels, [ 'dateArrived' ], [ 'desc' ]);\r\n\t\t}\r\n\r\n\t\tvar _portalType = '';\r\n\t\tif (portalSettings && portalSettings.portalType) {\r\n\t\t\t_portalType = portalSettings.portalType;\r\n\t\t}\r\n\r\n\t\tif (_portalType) {\r\n\t\t\tlet parcelsObj = _.concat(parcels, parcelsDue);\r\n\r\n\t\t\tcurrentParcels = _.orderBy(parcelsObj, [ 'dateArrived' ], [ 'desc' ]);\r\n\r\n\t\t\tif (_portalType === PortalTypes.Commercial) {\r\n\t\t\t\tcurrentParcels = _.orderBy(currentParcels, [ 'tenant.firstName', 'tenant.companyName' ], [ 'asc' ]);\r\n\t\t\t} else if (_portalType === PortalTypes.Residential) {\r\n\t\t\t\tcurrentParcels = _.orderBy(\r\n\t\t\t\t\tcurrentParcels,\r\n\t\t\t\t\t[ 'resident.firstName', 'resident.addressLine1' ],\r\n\t\t\t\t\t[ 'asc' ]\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (o === true) {\r\n\t\t\t\t\t\t\tthis.resetParcelSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tmatchfound={(val) => {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tparcelFound: val\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}}\r\n\t\t\t\t\thandleKeyPress={(e, data) => {\r\n\t\t\t\t\t\tif (e.key === 'Enter') {\r\n\t\t\t\t\t\t\t// if (!_.isUndefined(this.state.selectedParcel)) {\r\n\t\t\t\t\t\t\t// this.setState({\r\n\t\t\t\t\t\t\t// parcelOptions: [this.state.selectedParcel],\r\n\t\t\t\t\t\t\t// selectedParcel: undefined,\r\n\t\t\t\t\t\t\t// relatedParcels: []\r\n\t\t\t\t\t\t\t// });\r\n\t\t\t\t\t\t\t// } else {\r\n\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tparcelOptions: data,\r\n\t\t\t\t\t\t\t\trelatedParcels: []\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t// }\r\n\r\n\t\t\t\t\t\t\tsetTimeout(() => document.activeElement.blur());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (e.key === 'Clear') {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tparcelOptions: data,\r\n\t\t\t\t\t\t\t\tparcelFound: undefined,\r\n\t\t\t\t\t\t\t\trelatedParcels: []\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t{/*
    {(this.state.parcelFound === true && !_.isUndefined(this.state.parcelOptions) && this.state.parcelOptions.length > 0) ? We found {this.state.parcelOptions.length} results for your search : \"\"}
    */}\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.state.parcelFound === true &&\r\n\t\t\t\t\t\t!_.isUndefined(this.state.parcelOptions) &&\r\n\t\t\t\t\t\tthis.state.parcelOptions.length > 0 ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tWe found {this.state.parcelOptions.length} results for your search{' '}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : !_.isUndefined(this.state.selectedParcel) ? (\r\n\t\t\t\t\t\t\tWe found 1 results for your search \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t}\r\n\r\n\t\t\t\t{!_.isUndefined(this.state.selectedParcel) &&\r\n\t\t\t\t(this.state.parcelFound === true || _.isUndefined(this.state.parcelFound)) &&\r\n\t\t\t\t(_.isUndefined(this.state.parcelOptions) ||\r\n\t\t\t\t\tthis.state.parcelOptions.length === 0) ? this.state.selectedParcel.status.status.toLowerCase() ===\r\n\t\t\t\t\tconfigHelper.ParcelStatuses.CheckedIn.toLowerCase() ||\r\n\t\t\t\tthis.state.selectedParcel.status.status.toLowerCase() ===\r\n\t\t\t\t\tconfigHelper.ParcelStatuses.Due.toLowerCase() ? (\r\n\t\t\t\t\t this.handleSumbit(val)}\r\n\t\t\t\t\t\thandleItemClick={(val) => this.handleParcelItemSelected(val)}\r\n\t\t\t\t\t\tshowoverlay={true}\r\n\t\t\t\t\t/>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t''\r\n\t\t\t\t) : (\r\n\t\t\t\t\t(_.isUndefined(this.state.selectedParcel) || !_.isUndefined(this.state.selectedParcel)) &&\r\n\t\t\t\t\t(this.state.parcelFound === true || _.isUndefined(this.state.parcelFound)) &&\r\n\t\t\t\t\t!_.isUndefined(this.state.parcelOptions) &&\r\n\t\t\t\t\tthis.state.parcelOptions.length > 0 &&\r\n\t\t\t\t\t_.map(this.state.parcelOptions, (parcel, index) => {\r\n\t\t\t\t\t\treturn parcel.status.status.toLowerCase() ===\r\n\t\t\t\t\t\t\tconfigHelper.ParcelStatuses.CheckedIn.toLowerCase() ||\r\n\t\t\t\t\t\tparcel.status.status.toLowerCase() === configHelper.ParcelStatuses.Due.toLowerCase() ? (\r\n\t\t\t\t\t\t\t this.handleSumbit(val)}\r\n\t\t\t\t\t\t\t\tshowoverlay={true}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{relatedParcelsList &&\r\n\t\t\t\trelatedParcelsList.length > 0 && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t1\r\n\t\t\t\t\t\t\t\t? 'parcels'\r\n\t\t\t\t\t\t\t\t: 'parcel'} ${'currently being stored'}`}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{_.map(relatedParcelsList, (parcel, indx) => {\r\n\t\t\t\t\t\t\treturn parcel.status.status.toLowerCase() ===\r\n\t\t\t\t\t\t\t\tconfigHelper.ParcelStatuses.CheckedIn.toLowerCase() ||\r\n\t\t\t\t\t\t\tparcel.status.status.toLowerCase() === configHelper.ParcelStatuses.Due.toLowerCase() ? (\r\n\t\t\t\t\t\t\t\t this.handleSumbit(val)}\r\n\t\t\t\t\t\t\t\t\tshowoverlay={true}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t{this.state.parcelFound === false ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tWe could not find any parcels related to your search. You may want to:{' '}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tYou can also register new parcels or manage existing ones by clicking below\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tthis.props.history.push('/concierge/parcel/management');\r\n\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t\t//window.location.href = window.location.href;\r\n\t\t\t\t\t\t\t//history.pushLater('/concierge/parcel/management');\t\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.props.history.push('/concierge/parcel/register');\r\n\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t

    \r\n\t\t\t\t\tTasks\r\n\t\t\t\t

    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.props.history.push('/concierge/parcel/expected');\r\n\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tmoduleColor={overlayColor}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tthis.props.history.push({\r\n\t\t\t\t\t\t\t\tpathname: '/concierge/parcel/management',\r\n\t\t\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\t\t\tselectedFilterOption: 4\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tmoduleColor={overlayColor}\r\n\t\t\t\t\t/>\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tparcels: parcelSelectors.getParcels(state),\r\n\t\tportalSettings: portalSettingsSelectors.loadGlobalSetting(state),\r\n\t\tparcelSettings: parcelSelectors.getParcelSettings(state),\r\n\t\tparcelsDue: parcelSelectors.getParcelDue(state),\r\n\t\tparcelsExpected: parcelSelectors.getParcelExpected(state)\r\n\t};\r\n}\r\nexport default withRouter(connect(mapStateToProps)(ParcelScreen));\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport autobind from 'react-autobind';\r\nimport {withRouter} from 'react-router-dom';\r\nimport _ from 'lodash';\r\nimport FooterNavigation from '../components/FooterNavigation/FooterNavigation';\r\nimport ModuleMenu from '../components/ModuleMenu/ModuleMenu';\r\nimport GridMenu from '../components/ModuleMenu/GridMenu';\r\nimport FeatureArea from '../components/FeatureArea/FeatureArea';\r\nimport ParcelCheckInOut from '../containers/concierge/parcel/CheckInOutScreen';\r\nimport ResidentScreen from '../containers/concierge/residents/ResidentScreen';\r\nimport KeysScreen from '../containers/concierge/keys/KeysScreen';\r\nimport VisitorScreen from '../containers/concierge/visitors/CheckinVisitorScreen';\r\nimport RoomsScreen from '../containers/concierge/Rooms/RoomsScreen';\r\nimport BookingsScreen from '../containers/concierge/Bookings/BookingsScreen';\r\nimport HeaderNavigation from \"../components/HeaderNavigation/HeaderNavigation\";\r\nimport ParcelScreen from '../containers/concierge/parcel/ParcelScreen';\r\nimport LoginScreen from \"./LoginScreen\";\r\n\r\n//Test loading modules, this would be moved to when use signs in\r\nimport * as authSelectors from \"../store/auth/reducer\";\r\nimport * as authActions from \"../store/auth/actions\";\r\nimport * as moduleActions from '../store/ServiceModules/actions';\r\nimport * as moduleSelectors from '../store/ServiceModules/reducer';\r\nimport * as settingSelector from \"../store/ConciergeSetting/reducer\";\r\n\r\nimport '../sass/containers/landingPage.css';\r\nimport '../sass/containers/parcels.css';\r\nimport '../sass/containers/visitors.css';\r\nimport '../sass/containers/residents.css';\r\n\r\n\r\nclass LandingScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\t\r\n\t\tthis.state = {\r\n\t\t\ttype: 'parcel', //object to represent menu selected,\r\n\t\t\tmodules: [],\r\n\t\t\tfullGrid: false,\r\n\t\t\tnumOfModules: 4,\r\n\t\t\tmoduleSelected: '',\r\n\t\t\tshowModule: '',\r\n\t\t\tselectedImgBG: '',\r\n\t\t\toverlayColor: '',\r\n\t\t\tlanding: true,\r\n\t\t\tcurrentModule: undefined,\r\n\t\t\tfromRedirect:\r\n\t\t\tthis.props.location && this.props.location.state && !_.isUndefined(this.props.location.state.fromRedirect)\r\n\t\t\t\t\t? this.props.location.state.fromRedirect\r\n\t\t\t\t\t: false,\r\n\t\t\tfromRedirectSet: false,\r\n\t\t\tpaymentStatus:\r\n\t\t\tthis.props.location.state && this.props.location.state && !_.isUndefined(this.props.location.state.paymentStatus)\r\n\t\t\t\t\t? this.props.location.state.paymentStatus\r\n\t\t\t\t\t: undefined\r\n\t\t};\r\n\r\n\t\tautobind(this);\r\n\r\n\t\tthis.props.dispatch(authActions.login());\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tconst { modules } = this.props;\r\n\r\n\t\tif (this.state.fromRedirect === true) {\r\n\t\t\tlet selectedModuleObj = _.find(modules, (o) => o.title === this.props.location.state.module);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\ttype: this.props.location.state.module,\r\n\t\t\t\tmodules: modules,\r\n\t\t\t\tselectedModule: this.props.location.state.module,\r\n\t\t\t\tcurrentModule: selectedModuleObj,\r\n\t\t\t\tselectedImgBG: !_.isUndefined(selectedModuleObj) ? selectedModuleObj.imageUrl : '',\r\n\t\t\t\tmoduleSelected: this.props.location.state.module,\r\n\t\t\t\toverlayColor: !_.isUndefined(selectedModuleObj)\r\n\t\t\t\t\t? !_.isUndefined(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t\t\t? selectedModuleObj.imageOverlayTextColour\r\n\t\t\t\t\t\t: '#000'\r\n\t\t\t\t\t: '',\r\n\t\t\t\tshowModule: this.renderDefault(this.props.location.state.module, selectedModuleObj)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t\tthis.props.dispatch(moduleActions.loadModules());\r\n\t}\r\n\t\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (prevProps.modules !== this.props.modules) {\r\n\t\t\tif (this.props.modules && this.props.modules.length > 0 && this.state.fromRedirect === false) {\r\n\t\t\t\tlet setModule = this.props.location && this.props.location.state !== null && !_.isUndefined(this.props.location.state)\r\n\t\t\t\t\t? this.props.location.state.module\r\n\t\t\t\t\t: undefined;\r\n\t\t\t\tlet currentModule = _.find(this.props.modules, (item) => item.title === setModule);\r\n\r\n\t\t\t\tif (_.isUndefined(setModule)) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tmodules: this.props.modules,\r\n\t\t\t\t\t\tcurrentModule: this.props.modules[0],\r\n\t\t\t\t\t\ttype: this.props.modules[0].title,\r\n\t\t\t\t\t\tmoduleSelected: this.props.modules[0].title,\r\n\t\t\t\t\t\tselectedImgBG: !_.isUndefined(this.props.modules[0].imageUrl)\r\n\t\t\t\t\t\t\t? this.props.modules[0].imageUrl\r\n\t\t\t\t\t\t\t: '',\r\n\t\t\t\t\t\toverlayColor: !_.isUndefined(this.props.modules[0].imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? this.props.modules[0].imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '',\r\n\t\t\t\t\t\tshowModule: this.renderDefault(this.props.modules[0].title, this.props.modules[0])\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tmodules: this.props.modules,\r\n\t\t\t\t\t\tcurrentModule: currentModule,\r\n\t\t\t\t\t\ttype: currentModule.title,\r\n\t\t\t\t\t\tmoduleSelected: currentModule.title,\r\n\t\t\t\t\t\tselectedImgBG: !_.isUndefined(currentModule.imageUrl) ? currentModule.imageUrl : '',\r\n\t\t\t\t\t\toverlayColor: !_.isUndefined(currentModule.imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? currentModule.imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '',\r\n\t\t\t\t\t\tshowModule: this.renderDefault(currentModule.title, currentModule)\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (prevProps.location.state !== this.props.location.state && !_.isUndefined(this.props.location.state)) {\r\n\t\t\tlet setModule = !_.isUndefined(this.props.location.state) ? this.props.location.state.module : undefined;\r\n\t\t\t\t\r\n\t\t\tif (setModule) {\r\n\t\t\t\tlet currentModule = _.find(prevProps.modules, (item) => item.title === setModule);\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tmodules: this.props.modules,\r\n\t\t\t\t\tcurrentModule: currentModule,\r\n\t\t\t\t\ttype: currentModule.title,\r\n\t\t\t\t\tmoduleSelected: currentModule.title,\r\n\t\t\t\t\tselectedImgBG: !_.isUndefined(currentModule.imageUrl) ? currentModule.imageUrl : '',\r\n\t\t\t\t\toverlayColor: !_.isUndefined(currentModule.imageOverlayTextColour)\r\n\t\t\t\t\t\t? currentModule.imageOverlayTextColour\r\n\t\t\t\t\t\t: '',\r\n\t\t\t\t\tshowModule: this.renderDefault(currentModule.title, currentModule)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//Function to Render ParcelCheckin-checkout module\r\n\trenderParcelCheckinout(overlayColor) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t

    Check-out

    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t//Function to Render Rooms module\r\n\t//NB: would be obsolete, replaced by renderBookingsScreen\r\n\trenderRoomsView(overlayColor) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t

    Rooms

    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t//Function to Render Rooms module\r\n\trenderResidentsView(overlayColor) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{' '}\r\n\t\t\t\t

    Residents

    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t// //Function to render Parking Module\r\n\t// renderParkingView(overlayColor) {\r\n\t// return
    Parking View Coming Soon
    ;\r\n\t// }\r\n\r\n\t//Function to render Parking Module\r\n\trenderVisitorsView(overlayColor) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t

    Check-in

    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\trenderKeysView(overlayColor) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t

    Keys

    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t//function to Render Bookings module\r\n\trenderBookingsView(overlayColor) {\r\n\t\tlet data = {};\r\n\r\n\t\tif (this.state.fromRedirect === true) {\r\n\t\t\tdata = {\r\n\t\t\t\tserviceId: this.props.location.state.serviceId,\r\n\t\t\t\tfromRedirect: this.state.fromRedirect,\r\n\t\t\t\tselectedResourceId: this.props.location.state.selectedResourceId,\r\n\t\t\t\tselectedResourcesId: this.props.location.state.selectedResourcesId,\r\n\t\t\t\tpaymentStatus: this.props.location.state.paymentStatus,\r\n\t\t\t\tpaymentSetDate: this.props.location.state.date\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t

    Bookings

    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\trenderBlank(overlayColor) {\r\n\t\treturn
    Module Not Available...
    ;\r\n\t}\r\n\r\n\trenderGrid() {\r\n\t\treturn ;\r\n\t}\r\n\trenderDefault(module, currentModule) {\r\n\t\tif (currentModule)\r\n\t\t\tswitch (module) {\r\n\t\t\t\tcase 'Parcels':\r\n\t\t\t\t\treturn this.renderParcelCheckinout(currentModule.imageOverlayTextColour);\r\n\r\n\t\t\t\tcase 'Residents':\r\n\t\t\t\t\treturn this.renderResidentsView(currentModule.imageOverlayTextColour);\r\n\r\n\t\t\t\tcase 'Visitors':\r\n\t\t\t\t\treturn this.renderVisitorsView(currentModule.imageOverlayTextColour);\r\n\r\n\t\t\t\tcase 'Keys':\r\n\t\t\t\t\treturn this.renderKeysView(currentModule.imageOverlayTextColour);\r\n\r\n\t\t\t\tcase 'Rooms':\r\n\t\t\t\t\treturn this.renderRoomsView(currentModule.imageOverlayTextColour);\r\n\t\t\t\tcase 'Bookings':\r\n\t\t\t\t\treturn this.renderBookingsView(currentModule.imageOverlayTextColour);\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t}\r\n\tmoduleMenu() {\r\n\t\tconst { modules } = this.state;\r\n\r\n\t\treturn (\r\n\t\t\t this.handleModuleMenuSelected(e)}\r\n\t\t\t\tselectedModule={this.state.moduleSelected}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n\r\n\thandleModuleMenuSelected(module) {\r\n\t\tconst { modules } = this.state;\r\n\t\tlet selectedModuleObj = _.find(modules, (o) => o.title === module);\r\n\r\n\t\tswitch (module) {\r\n\t\t\tcase 'Parcels':\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttype: module,\r\n\t\t\t\t\tmoduleSelected: module,\r\n\t\t\t\t\tselectedImgBG: !_.isUndefined(selectedModuleObj) ? selectedModuleObj.imageUrl : '',\r\n\t\t\t\t\toverlayColor: !_.isUndefined(selectedModuleObj)\r\n\t\t\t\t\t\t? !_.isUndefined(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? selectedModuleObj.imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '#000'\r\n\t\t\t\t\t\t: '',\r\n\t\t\t\t\tshowModule: this.renderParcelCheckinout(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Residents':\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttype: module,\r\n\t\t\t\t\tselectedImgBG: !_.isUndefined(selectedModuleObj) ? selectedModuleObj.imageUrl : '',\r\n\t\t\t\t\tshowModule: this.renderResidentsView(selectedModuleObj.imageOverlayTextColour),\r\n\t\t\t\t\tmoduleSelected: module,\r\n\t\t\t\t\toverlayColor: !_.isUndefined(selectedModuleObj)\r\n\t\t\t\t\t\t? !_.isUndefined(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? selectedModuleObj.imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '#000'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Visitors':\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttype: module,\r\n\t\t\t\t\tselectedImgBG: !_.isUndefined(selectedModuleObj) ? selectedModuleObj.imageUrl : '',\r\n\t\t\t\t\tshowModule: this.renderVisitorsView(selectedModuleObj.imageOverlayTextColour),\r\n\t\t\t\t\tmoduleSelected: module,\r\n\t\t\t\t\toverlayColor: !_.isUndefined(selectedModuleObj)\r\n\t\t\t\t\t\t? !_.isUndefined(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? selectedModuleObj.imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '#000'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Keys':\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttype: module,\r\n\t\t\t\t\tselectedImgBG: !_.isUndefined(selectedModuleObj) ? selectedModuleObj.imageUrl : '',\r\n\t\t\t\t\tshowModule: this.renderKeysView(selectedModuleObj.imageOverlayTextColour),\r\n\t\t\t\t\tmoduleSelected: module,\r\n\t\t\t\t\toverlayColor: !_.isUndefined(selectedModuleObj)\r\n\t\t\t\t\t\t? !_.isUndefined(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? selectedModuleObj.imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '#000'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Rooms':\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttype: module,\r\n\t\t\t\t\tselectedImgBG: !_.isUndefined(selectedModuleObj) ? selectedModuleObj.imageUrl : '',\r\n\t\t\t\t\tshowModule: this.renderRoomsView(selectedModuleObj.imageOverlayTextColour),\r\n\t\t\t\t\tmoduleSelected: module,\r\n\t\t\t\t\toverlayColor: !_.isUndefined(selectedModuleObj)\r\n\t\t\t\t\t\t? !_.isUndefined(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? selectedModuleObj.imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '#000'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Bookings':\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttype: module,\r\n\t\t\t\t\tselectedImgBG: !_.isUndefined(selectedModuleObj) ? selectedModuleObj.imageUrl : '',\r\n\t\t\t\t\tshowModule: this.renderBookingsView(selectedModuleObj.imageOverlayTextColour),\r\n\t\t\t\t\tmoduleSelected: module,\r\n\t\t\t\t\toverlayColor: !_.isUndefined(selectedModuleObj)\r\n\t\t\t\t\t\t? !_.isUndefined(selectedModuleObj.imageOverlayTextColour)\r\n\t\t\t\t\t\t\t? selectedModuleObj.imageOverlayTextColour\r\n\t\t\t\t\t\t\t: '#000'\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttype: 'Welcome',\r\n\t\t\t\t\tselectedImgBG: '',\r\n\t\t\t\t\tshowModule: this.renderBlank(),\r\n\t\t\t\t\tmoduleSelected: 'default',\r\n\t\t\t\t\toverlayColor: this.props.modules[0].imageOverlayTextColour\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\thandleGridSelected(module) {\r\n\t\t// switch(module){\r\n\t\t// default :\r\n\t\t// }\r\n\t}\r\n\r\n\trender() {\r\n\t\tdocument.body.style = 'background: #f8f8fa;';\r\n\t\t// Body override colour to be diff from home page\r\n\t\tconst { numOfModules, modules } = this.state;\r\n\t\tconst { isLoggedIn, setting } = this.props;\r\n\t\tconst overlayColor = this.state.overlayColor;\r\n\t\tlet moduleListSize = modules && modules.length > 0 ? modules.length : 0;\r\n\t\t\r\n\t\tif (isLoggedIn==true ){\r\n\t\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\t//numOfmodules used to seperate GridView and Menu View\r\n\t\t\t\t\t//moduleListSize <= numOfModules ? (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    Welcome, select a service

    \r\n\r\n\t\t\t\t\t\t{/*test stub for menu,this would be loaded based on the modules api result*/\r\n\t\t\t\t\t\tmodules && this.moduleMenu()}\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t/*section here will be dynamically loaded based on module selection*/\r\n\t\t\t\t\t\t\tthis.state.showModule\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t//)\r\n\t\t\t\t\t// : (\r\n\t\t\t\t\t//
    \r\n\t\t\t\t\t// {/*full grid content displays here,*/}\r\n\t\t\t\t\t// \r\n\t\t\t\t\t//
    \r\n\t\t\t\t\t// )\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t\t}else{\r\n\t\t\treturn \r\n\t\t}\r\n\t}\r\n}\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tisLoggedIn: authSelectors.getIsLoggedIn(state),\r\n\t\tsetting: settingSelector.loadGlobalSetting(state)\r\n\t};\r\n}\r\nexport default withRouter(connect(mapStateToProps)(LandingScreen));\r\n","import React, { Component } from \"react\";\r\nimport Button from \"./Button\";\r\n\r\nimport _ from \"lodash\";\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * The ButtonGroup Component used accross the pages, displayed left and right and allows icons or text for labeling\r\n */\r\nclass ButtonGroup extends Component {\r\n render() {\r\n const {\r\n leftClick,\r\n rightClick,\r\n icon_l,\r\n icon_r,\r\n leftText,\r\n rightText,\r\n } = this.props;\r\n\r\n const leftDisabled =\r\n _.isUndefined(this.props.leftDisabled) ||\r\n this.props.leftDisabled === false\r\n ? { isDisabled: false }\r\n : { isDisabled: true };\r\n const rightDisabled =\r\n _.isUndefined(this.props.rightDisabled) ||\r\n this.props.rightDisabled === false\r\n ? { isDisabled: false }\r\n : { isDisabled: true };\r\n\r\n const iconLeft =\r\n _.isUndefined(icon_l) && (_.isUndefined(leftText) || leftText === \"\")\r\n ? \"arrow-left-c\"\r\n : icon_l;\r\n const iconRight =\r\n _.isUndefined(icon_r) && (_.isUndefined(rightText) || rightText === \"\")\r\n ? \"arrow-right-c\"\r\n : icon_r;\r\n\r\n const sizes = _.isUndefined(this.props.sizes)\r\n ? [\"small\", \"medium\"]\r\n : this.props.sizes;\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nButtonGroup.propTypes = {\r\n /** The sizes of both buttons, [\"medium\" ,\"large\"] or in any combination order*/\r\n sizes: PropTypes.array,\r\n /** Text displayed on the left button*/\r\n leftText: PropTypes.string,\r\n /** Text displayed on the right button*/\r\n rightText: PropTypes.string,\r\n /** Click function specification of the left button */\r\n leftClick: PropTypes.func,\r\n /** Click function specification of the right button */\r\n rightClick: PropTypes.func,\r\n /** Any icons displayed on the left button*/\r\n icon_l: PropTypes.string,\r\n /** Any icons displayed on the right button*/\r\n icon_r: PropTypes.string\r\n};\r\n\r\nexport default ButtonGroup;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\n//import Parsley from \"parsleyjs\";\r\n\r\nimport * as parcelsAction from '../../../store/Parcels/actions';\r\nimport * as parcelsSelector from '../../../store/Parcels/reducer';\r\n\r\nimport * as residentActions from '../../../store/Residents/actions';\r\nimport * as residentSelectors from '../../../store/Residents/reducer';\r\n\r\nimport ModuleMenu from '../../../components/ModuleMenu/ModuleMenu';\r\nimport FooterNavigation from '../../../components/FooterNavigation/FooterNavigation';\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport InputComponent from '../../../components/Input/Input';\r\nimport Button from '../../../components/Button/Button';\r\nimport ButtonGroup from '../../../components/Button/ButtonGroup';\r\nimport DetailList from '../../../components/DetailList/DetailList';\r\n\r\nimport ResidentAddrAutoSuggest from '../../../components/TenantAutoSuggest/ResidentAddrAutoSuggest';\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\n\r\nimport autoBind from 'react-autobind';\r\nimport { createBrowserHistory } from 'history';\r\n\r\n\r\n//import { Link } from \"react-router\";\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nlet history = createBrowserHistory();\r\nclass CheckInScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\ttype: 'parcels',\r\n\t\t\t// Came here from overview page?\r\n\t\t\tbarcode: '',\r\n\t\t\tmemberId:\r\n\t\t\t\tthis.props.location.state && !_.isUndefined(this.props.location.state.memberId)\r\n\t\t\t\t\t? this.props.location.state.memberId //deal with the back button used\r\n\t\t\t\t\t: undefined,\r\n\t\t\taddress: '',\r\n\t\t\ttenant: '',\r\n\t\t\tlocationFullName: '',\r\n\t\t\trows: [],\r\n\t\t\tmodules: []\r\n\t\t};\r\n\r\n\t\tthis.props.dispatch(parcelsAction.getAllLocations());\r\n\r\n\t\tthis.addParcelValidation = null;\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.addValidation();\r\n\t\tthis.props.dispatch(residentActions.getAllResidents());\r\n\t\tthis.setState({\r\n\t\t\tbarcode:\r\n\t\t\t\tthis.props.location.state && this.props.location.state.barcode ? this.props.location.state.barcode : ''\r\n\t\t});\r\n\t}\r\n\r\n\thandleInputChange(e) {\r\n\t\tvar field = e.target.name;\r\n\t\tvar value = e.target.value;\r\n\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\t}\r\n\r\n\taddValidation() {\r\n\t\tthis.addParcelValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tthis.addParcelValidation.destroy();\r\n\t}\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (prevState.memberId !== this.state.memberId && !_.isUndefined(this.state.memberId)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmemberId: this.state.memberId\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(fromSubmit = false) {\r\n\t\tthis.addParcelValidation.validate({ force: true });\r\n\r\n\t\tconst valid = this.addParcelValidation.isValid();\r\n\r\n\t\tthis.setState({\r\n\t\t\taddParcelFormValid: valid,\r\n\t\t\taddParcelFormUsed: true\r\n\t\t});\r\n\r\n\t\tif (valid === true && fromSubmit === true) {\r\n\t\t\tthis.setState({ rows: this.state.rows.concat([ this.state.rows.length ]) });\r\n\r\n\t\t\tthis.formReset();\r\n\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tparcelsAction.addParcelsToQueue([\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbarcode: this.state.barcode,\r\n\t\t\t\t\t\ttenant: this.state.tenant,\r\n\t\t\t\t\t\taddress: this.state.address,\r\n\t\t\t\t\t\tlocation: this.state.location,\r\n\t\t\t\t\t\tlocationFullName: this.state.locationFullName,\r\n\t\t\t\t\t\tmemberId: this.state.memberId,\r\n\t\t\t\t\t\tindex: this.state.rows[this.state.rows.length - 1]\r\n\t\t\t\t\t}\r\n\t\t\t\t])\r\n\t\t\t);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\taddParcelFormUsed: false\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tformReset() {\r\n\t\tthis.setState({\r\n\t\t\tbarcode: ''\r\n\t\t\t//address: \"\",\r\n\t\t\t//tenant: \"\"\r\n\t\t});\r\n\r\n\t\t//this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n\t\t$(this.refs.validate).get(0).reset();\r\n\r\n\t\tthis.addParcelValidation.destroy();\r\n\r\n\t\t// Reset all the select input components to the placeholder value\r\n\t\tfor (let key in this.refs) {\r\n\t\t\tif (key.indexOf('formSelect') === 0) {\r\n\t\t\t\tthis.refs[key].reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.addValidation();\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tremoveFromQueue(index) {\r\n\t\tthis.props.dispatch(parcelsAction.removeParcelFromQueue(index));\r\n\t}\r\n\r\n\tmoduleMenu() {\r\n\t\tconst { modules } = this.props;\r\n\r\n\t\treturn {}} />;\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst locations = this.props.locations.map((location) => {\r\n\t\t\treturn { value: location.id, label: location.locationName };\r\n\t\t});\r\n\r\n\t\tconst { address, barcode, memberId } = this.state;\r\n\r\n\t\tconst currentModule = _.find(this.props.modules, (o) => o.title === 'Parcels');\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t 0 && this.state.memberId !== ''}\r\n\t\t\t\t\t\t\t\tonSelected={(data) => {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tmemberId: data.memberId,\r\n\t\t\t\t\t\t\t\t\t\taddress: data.address,\r\n\t\t\t\t\t\t\t\t\t\ttenant: data.tenant\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\tthis.state.addParcelFormUsed && this.validate();\r\n\t\t\t\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdefaultText={(dataVal) => {}}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// {\r\n\t\t\t\t\t\t\t\t// this.setState({\r\n\t\t\t\t\t\t\t\t// memberId: data.memberId,\r\n\t\t\t\t\t\t\t\t// companyName: data.companyName,\r\n\t\t\t\t\t\t\t\t// tenant: data.tenant\r\n\t\t\t\t\t\t\t\t// });\r\n\t\t\t\t\t\t\t\t// /* Timeout added otherwise validation not fired because autosuggest still updating DOM */\r\n\t\t\t\t\t\t\t\t// setTimeout(() => {\r\n\t\t\t\t\t\t\t\t// this.state.addParcelFormUsed && this.validate();\r\n\t\t\t\t\t\t\t\t// }, 0);\r\n\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\t// />\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.handleInputChange(e);\r\n\r\n\t\t\t\t\t\t\t\t\t!_.isUndefined(e.target.label) &&\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({ locationFullName: e.target.label });\r\n\r\n\t\t\t\t\t\t\t\t\tthis.validate();\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t\t'data-parsley-required': true,\r\n\t\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please select a location'\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.addParcelFormUsed && (\r\n\t\t\t\t\t\t\t\t
    {/*

    Sending Parcel To Server...

    */}
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t 0 ? 'Add Another Parcel' : 'Check-in Parcel'}\r\n\t\t\t\t\t\t\t\thandleClick={() => {\r\n\t\t\t\t\t\t\t\t\tthis.validate(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tisDisabled={_.isUndefined(memberId) || memberId === ''}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.props.queuedParcels && (\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.removeFromQueue(index);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\thistory.push({\r\n\t\t\t\t\t\t\t\tpathname: '/',\r\n\t\t\t\t\t\t\t\tstate: { setModule: 'Parcels' }\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\trightClick={() => {\r\n\t\t\t\t\t\t\thistory.push('/concierge/parcel/checkinreview');\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tlocations: parcelsSelector.getParcelLocations(state),\r\n\t\tqueuedParcels: parcelsSelector.getCheckInQueue(state),\r\n\t\tresidents: residentSelectors.getResidents(state),\r\n\t\tmodules: moduleSelectors.loadModules(state)\r\n\t};\r\n}\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(CheckInScreen);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport Autosuggest from \"react-autosuggest\";\r\nimport InputComponent from \"../../components/Input/Input\";\r\n\r\nimport * as addrLookupActions from \"../../store/AddressLookUp/actions\";\r\nimport * as addrLookupSelectors from \"../../store/AddressLookUp/reducer\";\r\nimport _ from \"lodash\";\r\nimport autoBind from \"react-autobind\";\r\nimport * as $ from \"jquery\";\r\nvar PropTypes = require('prop-types');\r\n\r\nclass AddrLookUpAutoSuggest extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.defaultState = {\r\n value: \"\",\r\n suggestions: [],\r\n valid: false\r\n };\r\n\r\n this.state = this.defaultState;\r\n this.props.dispatch(addrLookupActions.loadAddresses());\r\n this.emptyResponse = {\r\n addresslookupId: \"\",\r\n address: \"\",\r\n valid: false\r\n };\r\n\r\n this.selectedAddressFromDefault = false;\r\n\r\n autoBind(this);\r\n }\r\n\r\n \r\n componentDidUpdate(prevProps, pervState){\r\n\t/** the will reset back to default on subsequet defaultTenantId modified */\r\n if (this.props.defaultAddressId !== prevProps.defaultAddressId && !_.isUndefined(this.props.defaultAddressId)) {\r\n //this.selectedTenantFromDefault = true;\r\n const startAddress = _.find(this.props.addresses, (address) => {\r\n return address.id === Number(this.props.defaultAddressId);\r\n });\r\n if (!_.isUndefined(startAddress)) {\r\n this.handleAddressSelected(startAddress);\r\n this.setState({\r\n value:\r\n startAddress.addr1FlatNumber + `${startAddress.addr2BuildingName ? \" \" + startAddress.addr2BuildingName : \"\"}` + `${startAddress.addr3StreetNumber ? \" \" + startAddress.addr3StreetNumber : \"\"}` + `${startAddress.addr4Town ? \" \" + startAddress.addr4Town : \"\"}`,\r\n valid: true\r\n });\r\n\r\n \r\n }\r\n }\r\n\r\n if (\r\n this.props.addresses.length > 0 &&\r\n !_.isUndefined(this.props.defaultAddressId) &&\r\n this.selectedAddressFromDefault === false\r\n ) {\r\n this.selectedAddressFromDefault = true;\r\n\r\n const startAddress = this.props.addresses.find(address => {\r\n return address.id === Number(this.props.defaultAddressId);\r\n });\r\n\r\n if (!_.isUndefined(startAddress)) {\r\n this.handleAddressSelected(startAddress);\r\n\r\n this.setState({\r\n value:\r\n startAddress.addr1FlatNumber + `${startAddress.addr2BuildingName ? \" \" + startAddress.addr2BuildingName : \"\" }` + `${startAddress.addr3StreetNumber ? \" \" + startAddress.addr3StreetNumber : \"\"}` + `${startAddress.addr4Town ? \" \" + startAddress.addr4Town : \"\"}`,\r\n valid: true\r\n });\r\n }\r\n }\r\n}\r\n\r\n\r\n reset() {\r\n this.setState(this.defaultState);\r\n }\r\n\r\n // Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n getSuggestionValue(suggestion) {\r\n this.handleAddressSelected(suggestion);\r\n if (suggestion) this.setState({ disabled: \"\" });\r\n\r\n let address = \"\";\r\n if(suggestion.addr1FlatNumber)\r\n address = suggestion.addr1FlatNumber;\r\n if(suggestion.addr2BuildingName)\r\n address += `${\" \"}${suggestion.addr2BuildingName}`\r\n if(suggestion.addr3StreetNumber)\r\n address += `${\" \"}${suggestion.addr3StreetNumber}`\r\n if(suggestion.addr4Town)\r\n address += `${\" \"}${suggestion.addr4Town}`\r\n\r\n return address;\r\n }\r\n\r\n getSuggestions(val) {\r\n const { addresses } = this.props;\r\n if (!addresses) return [];\r\n\r\n const value = val.trim().toLowerCase();\r\n\t\tconst parts = value.split(' ').filter((v) => {\r\n\t\t\treturn v !== '';\r\n });\r\n \r\n \r\n const match = _.filter(addresses, o => {\r\n return (o.addr1FlatNumber && _.includes(o.addr1FlatNumber.toLowerCase(), value.trim().toLowerCase()) ||\r\n o.addr2BuildingName && _.includes(o.addr2BuildingName.toLowerCase(), value.trim().toLowerCase()) || \r\n o.addr3StreetNumber && _.includes(o.addr3StreetNumber.toLowerCase(), value.trim().toLowerCase()) ||\r\n o.addr4Town && _.includes(o.addr4Town.toLowerCase(), value.trim().toLowerCase()) || \r\n o.addr5County && _.includes(o.addr5County.toLowerCase(), value.trim().toLowerCase()) ||\r\n o.postCode && _.includes(o.postCode.toLowerCase(), value.trim().toLowerCase())\r\n );\r\n // let numSearch = _.startsWith(\r\n // o.addr1FlatNumber.toLowerCase(),\r\n // val.toLowerCase()\r\n // );\r\n\r\n // if (numSearch === false) {\r\n // let buildingSearch = _.includes(\r\n // o.addr2BuildingName.toLowerCase(),\r\n // val.toLowerCase()\r\n // );\r\n\r\n // if (buildingSearch === true) {\r\n // return buildingSearch;\r\n // }\r\n // }\r\n // return numSearch;\r\n });\r\n\r\n return match;\r\n }\r\n\r\n onSuggestionsFetchRequested = ({ value }) => {\r\n this.setState({ suggestions: this.getSuggestions(value) });\r\n };\r\n\r\n onSuggestionsClearRequested = () => {};\r\n\r\n onChange = (event, { newValue }) => {\r\n if (newValue.length === 0) this.setState({ address: undefined });\r\n if (newValue.length >= 1) {\r\n this.handleAddressChange(newValue);\r\n }\r\n\r\n this.setState({\r\n value: newValue\r\n });\r\n\r\n setTimeout(() => {\r\n // Delayed because parseley not ready if user selected a suggestion\r\n\r\n this.setState({\r\n valid: $(this.refs.autosuggest.input)\r\n .parsley()\r\n .isValid()\r\n });\r\n }, 0);\r\n\r\n //this.checkMatch(newValue);\r\n }\r\n\r\n handleAddressSelected(addr, setValue = false) {\r\n const stateChanges = {\r\n addresslookupId: addr.id,\r\n\r\n address: addr.addr1FlatNumber + `${addr.addr2BuildingName ? \" \" + addr.addr2BuildingName : \"\"}` + `${addr.addr3StreetNumber ? \" \" + addr.addr3StreetNumber : \"\"}` + \" \" + addr.addr4Town,\r\n valid: !_.isUndefined(addr) ? true : false,\r\n ...(setValue\r\n ? {\r\n value: addr.addr1FlatNumber + `${addr.addr2BuildingName ? \" \" + addr.addr2BuildingName : \"\"}` + `${addr.addr3StreetNumber ? \" \" + addr.addr3StreetNumber : \"\"}` + \" \" + addr.addr4Town,\r\n valid: true\r\n }\r\n : {})\r\n };\r\n\r\n this.setState(stateChanges);\r\n\r\n this.props.onSelected && this.props.onSelected(stateChanges);\r\n }\r\n\r\n handleAddressChange(value) {\r\n this.setState({\r\n address: value\r\n });\r\n }\r\n renderSuggestion(suggestion) {\r\n\r\n return (\r\n
    \r\n {suggestion.addr1FlatNumber}\r\n {suggestion.addr2BuildingName ? \" \" + suggestion.addr2BuildingName : \"\"}\r\n {suggestion.addr3StreetNumber ? \" \" + suggestion.addr3StreetNumber : \"\"}{\" \"}\r\n {suggestion.addr4Town}\r\n
    \r\n );\r\n }\r\n\r\n handleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method) {\r\n \r\n\t\tthis.handleAddressSelected(suggestion);\r\n\t}\r\n\r\n checkMatch(currentValue) {\r\n \r\n const value = currentValue.toLowerCase();\r\n this.props.defaultText(currentValue);\r\n const parts = value.split(\" \").filter(value => {\r\n return value !== \"\";\r\n });\r\n\r\n const matchedAddress = _.find(this.props.addresses, address => {\r\n \r\n if ( parts.length >= 1 && \r\n ( _.startsWith(address.addr1FlatNumber.toLowerCase(), value.trim().toLowerCase()) || \r\n _.startsWith(address.addr3StreetNumber.toLowerCase(), value.trim().toLowerCase()) \r\n )\r\n // ( address.addr2BuildingName && _.includes(address.addr2BuildingName.toLowerCase(), value.trim().toLowerCase())) || \r\n // (address.addr3StreetNumber && _.includes(address.addr3StreetNumber.toLowerCase(), value.trim().toLowerCase())) ||\r\n // (address.addr4Town && _.includes(address.addr4Town.toLowerCase(), value.trim().toLowerCase())) || \r\n // (address.addr5County && _.includes(address.addr5County.toLowerCase(), value.trim().toLowerCase())) ||\r\n // (address.postCode && _.includes(address.postCode.toLowerCase(), value.trim().toLowerCase()))\r\n \r\n ) {\r\n return true;\r\n }\r\n // else if (\r\n // parts.length === 2 &&\r\n // _.includes(address.addr2BuildingName, parts[1].toLowerCase())\r\n // ) {\r\n // return true;\r\n // }\r\n\r\n return false;\r\n });\r\n\r\n //console.log(matchedAddress);\r\n \r\n if (_.isUndefined(matchedAddress) === false) {\r\n this.handleAddressSelected(matchedAddress, true);\r\n } else {\r\n this.setState({\r\n valid: false\r\n });\r\n\r\n this.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n }\r\n }\r\n\r\n inputClick() {\r\n if (\r\n this.state.valid === true &&\r\n !_.isUndefined(this.props.clearableIfValid) &&\r\n this.props.clearableIfValid === true\r\n ) {\r\n this.reset();\r\n\r\n this.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n }\r\n }\r\n\r\n render() {\r\n const { value, suggestions, valid } = this.state;\r\n const { label, placeHolder } = this.props;\r\n const disabled =\r\n _.isUndefined(this.props.disabled) || this.props.disabled === false\r\n ? false\r\n : true;\r\n\r\n const inputProps = {\r\n placeholder: \"Address\",\r\n value,\r\n onChange: this.onChange,\r\n onClick: this.inputClick\r\n };\r\n\r\n \r\n return (\r\n {}}\r\n onSuggestionSelected={(event, { suggestion, suggestionValue, suggestionIndex, sectionIndex, method }) =>\r\n\t\t\t\t\tthis.handleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method)}\r\n renderSuggestion={this.renderSuggestion}\r\n inputProps={inputProps}\r\n onBlur={(event, { highlightedSuggestion }) => {\r\n\t\t\t\t\tconsole.log(highlightedSuggestion);\r\n\t\t\t\t}}\r\n theme={{\r\n // maybe make global for reuse at some point\r\n container:\r\n \"auto-suggest Select \" +\r\n (!_.isUndefined(this.props.clearableIfValid) &&\r\n this.props.clearableIfValid === true\r\n ? \"is-clearable\"\r\n : \"\"),\r\n suggestionsList: \"Select-menu-outer\",\r\n suggestion: \"Select-menu\"\r\n }}\r\n renderInputComponent={inputProps => {\r\n const iconProp =\r\n !_.isUndefined(this.props.clearableIfValid) &&\r\n this.props.clearableIfValid === true &&\r\n valid === true\r\n ? { icon: \"ion-close-round\" }\r\n : {};\r\n\r\n return (\r\n {\r\n /* Ensures that member ID fetched even if not selected via autosuggest */\r\n\r\n // this.checkMatch(e.target.value);\r\n }}\r\n parsley={{\r\n \"data-parsley-matches-one-of\": JSON.stringify({\r\n allSuggestions: this.props.addresses.map(address => {\r\n return {\r\n value:\r\n address.addr1FlatNumber +\r\n \r\n `${address.addr2BuildingName ? \" \" + address.addr2BuildingName : \"\"}` +\r\n `${address.addr3StreetNumber ? \" \" + address.addr3StreetNumber : \"\"}` + \" \" + address.addr4Town\r\n\r\n };\r\n })\r\n }),\r\n //\"data-parsley-type\": \"alphanum\",\r\n \"data-parsley-minwords\": 1,\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid tenant address\"\r\n }}\r\n {...iconProp}\r\n />\r\n );\r\n }}\r\n />\r\n );\r\n }\r\n}\r\n\r\nAddrLookUpAutoSuggest.propTypes = {\r\n /* Optional initial Address id to start with, (used when navigating back etc...) */\r\n defaultAddressId: PropTypes.number,\r\n /* Callback function for when item is selected */\r\n onSelected: PropTypes.func,\r\n /* Optional disable the input field */\r\n disabled: PropTypes.bool,\r\n /* Specifies if a X icon shows and the input field becomes clickable if the autosuggest is valid */\r\n clearableIfValid: PropTypes.bool,\r\n /** Optional label text*/\r\n label: PropTypes.string,\r\n /** Optional PlaceHolder Text */\r\n placeHolder: PropTypes.string\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n addresses: addrLookupSelectors.getAddresses(state)\r\n };\r\n}\r\n\r\n//export default connect(mapStateToProps)(AddrLookUpAutoSuggest);\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\r\n AddrLookUpAutoSuggest\r\n);\r\n","import React, { Component } from \"react\";\r\nimport autobind from \"react-autobind\";\r\nimport { connect } from \"react-redux\";\r\nimport _ from \"lodash\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\nimport AddrLookUpAutoSuggest from \"../../../components/AddrLookUpAutoSuggest/AddrLookUpAutoSuggest\";\r\n\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\nimport * as conciergeSelectors from \"../../../store/auth/reducer\";\r\n\r\nimport \"../../../sass/containers/residents.css\";\r\n\r\nimport * as $ from \"jquery\";\r\n\r\nclass AddResidentScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n type: \"residents\",\r\n fname: \"\",\r\n lname: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n addresslookupId: \"\",\r\n address: \"\",\r\n addressValid: false,\r\n residentCreated: false,\r\n resident: undefined,\r\n msgError: \"\",\r\n residentGroups: [],\r\n groupId: undefined,\r\n };\r\n\r\n this.props.dispatch(residentActions.getAllResidents());\r\n this.props.dispatch(residentActions.GetConciergeGroups());\r\n this.addResidentValidation = null;\r\n\r\n autobind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.addValidation();\r\n\r\n if(this.props.conciergeDetails && this.props.conciergeDetails.roles){\r\n this.setState({\r\n residentGroups : _.map(this.props.conciergeDetails.roles, (o, index) => {\r\n \r\n return {name : o, label : o, value : index};\r\n })\r\n });\r\n }\r\n \r\n \r\n }\r\n // componentWillUnmount() {\r\n // this.addResidentValidation.destroy();\r\n // }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (\r\n this.props.residentCreatedstatus !== prevProps.residentCreatedstatus &&\r\n !_.isUndefined(this.props.residentCreatedstatus.status)\r\n ) {\r\n if (this.props.residentCreatedstatus.status === true) {\r\n this.setState({\r\n residentCreated: this.props.residentCreatedstatus.status,\r\n resident: this.props.newResident\r\n });\r\n\r\n } else {\r\n this.setState({\r\n residentCreated: this.props.residentCreatedstatus.status,\r\n error: this.props.residentCreatedstatus.error\r\n });\r\n }\r\n }\r\n\r\n if(this.props.conciergeDetails !== prevProps.conciergeDetails && this.props.conciergeDetails){\r\n this.setState({ \r\n residentGroups :this.props.conciergeDetails.roles && _.map( this.props.conciergeDetails.roles, (o, index) => { \r\n return {name : o, label : o, value : index};\r\n })\r\n });\r\n }\r\n \r\n \r\n }\r\n\r\n\r\n sendRegistrationActivation(status, resi) {\r\n if (status === true && !_.isUndefined(resi)) {\r\n let data = {\r\n id: resi.id,\r\n email: resi.email\r\n };\r\n\r\n this.props.dispatch(\r\n residentActions.sendRegistrationActivation(data, success => {\r\n if (success === true) {\r\n this.setState({\r\n messageSent: true,\r\n msgError: \"\"\r\n })\r\n\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/profile\",\r\n state: {\r\n residentId: resi.id\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n messageSent: false,\r\n msgError: \"Unable to send message\"\r\n });\r\n }\r\n })\r\n );\r\n }\r\n }\r\n addValidation() {\r\n this.addResidentValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n\r\n validate(fromSubmit = false) {\r\n this.addResidentValidation.validate({ force: true });\r\n\r\n let valid = this.addResidentValidation.isValid() && this.state.addressValid;\r\n\r\n // if (!this.state.addressValid) {\r\n // this.setState({\r\n // error: \"Please enter an existing tenant address\"\r\n // });\r\n // }\r\n this.setState({\r\n addResidentFormValid: valid,\r\n addResidentFormUsed: true\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n //this.formReset();\r\n\r\n let groupObj = _.find(this.state.residentGroups, { value : this.state.groupId}); \r\n let residentData = {\r\n phone: this.state.phone,\r\n firstName: this.state.fname,\r\n lastName: this.state.lname,\r\n email: this.state.email,\r\n address: this.state.address,\r\n addressId: this.state.addresslookupId,\r\n groupName : !_.isUndefined(groupObj) ? groupObj.name : \"\"\r\n };\r\n\r\n this.props.dispatch(\r\n residentActions.createNewResident(residentData, success => {\r\n if (success === true) {\r\n this.returnToNewProfile();\r\n }else{\r\n \r\n this.setState({\r\n error: \"Unable to create member\",\r\n //addResidentFormValid : false,\r\n residentCreated : false\r\n });\r\n }\r\n })\r\n );\r\n\r\n this.setState({\r\n // addResidentFormUsed: false\r\n });\r\n }\r\n }\r\n\r\n returnToNewProfile() {\r\n const { newResident } = this.props;\r\n const { residentCreated } = this.state;\r\n if (!_.isUndefined(newResident)) {\r\n this.sendRegistrationActivation(residentCreated, newResident);\r\n }\r\n }\r\n\r\n formReset() {\r\n this.setState({\r\n fname: \"\",\r\n lname: \"\",\r\n email: \"\",\r\n addresslookupId: \"\",\r\n phone: \"\",\r\n address: \"\"\r\n });\r\n\r\n //this.refs[\"addr-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.addResidentValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n\r\n handleInputChange(e) {\r\n let field = e.target.name;\r\n let value = e.target.value;\r\n\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n handleGroupChange(val){\r\n \r\n let field = val.target.name;\r\n\t\tlet value = val.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value,\r\n\t\t\tgroupId: value,\r\n\t\t});\r\n }\r\n changeSubNav() {\r\n //navBut = document.getElementsByClassName('visitors-button').attr(order,1;;\r\n }\r\n render() {\r\n\r\n const {\r\n fname,\r\n lname,\r\n email,\r\n phone,\r\n addressDefault,\r\n residentGroups\r\n\r\n } = this.state;\r\n \r\n const currentModule = _.find(\r\n this.props.modules,\r\n o => o.title === \"Residents\"\r\n );\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n >\r\n
    \r\n {\r\n this.handleInputChange(e);\r\n }}\r\n value={fname}\r\n parsley={{\r\n \"data-parsley-pattern\": \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n \"data-parsley-minlength\": 2,\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid first name\"\r\n }}\r\n />\r\n {\r\n this.handleInputChange(e);\r\n }}\r\n value={lname}\r\n parsley={{\r\n \"data-parsley-pattern\": \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n \"data-parsley-minlength\": 2,\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\": \"Please enter a valid last name\"\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.setState({\r\n addresslookupId: data.addresslookupId,\r\n address: data.address,\r\n addressValid: data.valid\r\n });\r\n\r\n setTimeout(() => {\r\n this.state.addResidentFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => {\r\n this.setState({\r\n addressDefault: dataVal\r\n });\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n {\r\n this.handleInputChange(e);\r\n //this.validate();\r\n }}\r\n value={email}\r\n parsley={{\r\n \"data-parsley-required\": true,\r\n \"data-parsley-type\": \"email\",\r\n //\"data-parsley-validate-if-empty\": true,\r\n \"data-parsley-error-message\": \"Please enter a valid email\"\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.handleInputChange(e);\r\n }}\r\n value={phone}\r\n parsley={{\r\n //\"data-parsley-type\": \"digits\",\r\n \"data-parsley-validate-if-empty\": false,\r\n \"data-parsley-minlength\": 11,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid phone number\"\r\n }}\r\n />\r\n
    \r\n\r\n\r\n
    \r\n this.handleGroupChange(e)}\r\n options={_.map(this.props.conciergeDetails.roles, (o, index) => {\r\n \r\n return {name : o, label : o, value : index};\r\n })}\r\n />\r\n
    \r\n\r\n \r\n {this.state.addResidentFormUsed &&\r\n this.state.addResidentFormUsed === true &&\r\n addressDefault &&\r\n this.state.addressValid === false && (\r\n

    {this.state.error}

    \r\n )}\r\n
    \r\n {!_.isUndefined(this.props.residentCreatedstatus) &&\r\n (this.state.residentCreated === true ? (\r\n

    Member created

    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}{this.props.residentError ? this.props.residentError : \"\" }

    \r\n )\r\n ))}\r\n {this.props.registerNotificationSent && this.state.messageSent === true ?\r\n (

    Message sent

    ) : (

    {this.state.msgError}

    )\r\n }\r\n
    \r\n
    \r\n\r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { setModule: \"Residents\" }\r\n });\r\n }}\r\n rightClick={e => {\r\n this.validate(true);\r\n }}\r\n />\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\nfunction mapStateToProps(state) {\r\n return {\r\n modules: moduleSelectors.loadModules(state),\r\n residentCreatedstatus: residentSelectors.residentCreatedStatus(state),\r\n newResident: residentSelectors.getNewResident(state),\r\n registerNotificationSent: residentSelectors.registerNotificationSent(state),\r\n residentGroups: residentSelectors.GetConciergeGroups(state),\r\n conciergeDetails : conciergeSelectors.getConciergeDetails(state), \r\n residentError : residentSelectors.residentError(state)\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(AddResidentScreen));\r\n","import React, { Component } from \"react\";\r\nimport autobind from \"react-autobind\";\r\nimport { connect } from \"react-redux\";\r\nimport _ from \"lodash\";\r\nimport { Link } from 'react-router-dom';\r\nimport {withRouter} from 'react-router-dom';\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\n\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\n\r\n//Test loading modules, this would be moved to when use signs in\r\n\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\n\r\nimport \"../../../sass/containers/residents.css\";\r\n\r\nimport * as $ from \"jquery\";\r\nimport Button from \"../../../components/Button/Button\";\r\n\r\nclass ResidentProfile extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n type: \"residents\",\r\n residentId: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.residentId\r\n : \"\",\r\n resident: undefined,\r\n fname: \"\",\r\n lname: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n addresslookupId: \"\",\r\n address: \"\",\r\n residentCreated: false,\r\n isApproved: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.isApproved\r\n : null,\r\n residentApprovalUpdated: null,\r\n residentUpdatedApprovalStatus: [],\r\n residentUpdated: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.residentUpdated\r\n : null\r\n };\r\n\r\n this.props.dispatch(residentActions.getAllResidents());\r\n\r\n this.addResidentValidation = null;\r\n\r\n autobind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.addValidation();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.residents !== prevProps.residents) {\r\n let resi = _.find(\r\n this.props.residents,\r\n res => res.id === this.state.residentId\r\n );\r\n\r\n if (!_.isUndefined(resi))\r\n this.setState({\r\n resident: resi,\r\n phone:\r\n (!_.isUndefined(resi) && !_.isUndefined(resi.mobileNumber)) ||\r\n !_.isEmpty(resi.mobileNumber)\r\n ? resi.mobileNumber\r\n : \"\",\r\n email: !_.isUndefined(resi) ? resi.email : \"\",\r\n fullName: !_.isUndefined(resi)\r\n ? resi.firstName + \" \" + resi.lastName\r\n : \"\",\r\n avatarUrl: !_.isUndefined(resi) ? resi.avatarUrl : \"\",\r\n address: !_.isUndefined(resi)\r\n ? `${resi.addressLine1}` + `${resi.addressLine2 ? \" \" + resi.addressLine2 : \"\"}`\r\n : \"\",\r\n addresslookupId: !_.isUndefined(resi) ? resi.addressLookupId : \"\",\r\n isApproved: !_.isUndefined(resi) ? resi.isApproved : null\r\n });\r\n }\r\n }\r\n\r\n addValidation() {\r\n this.addResidentValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n\r\n validate(fromSubmit = false) {\r\n if (fromSubmit === true) {\r\n //this.formReset();\r\n let residentData = {\r\n phone: this.state.phone,\r\n firstName: this.state.fname,\r\n lastName: this.state.lname,\r\n email: this.state.email,\r\n address: this.state.address,\r\n addressId: this.state.addresslookupId,\r\n isApproved: this.state.isApproved,\r\n residentApprovalUpdatedStatus: this.state.residentApprovalUpdated,\r\n residentUpdated: this.location.state.residentUpdated\r\n };\r\n\r\n this.props.dispatch(residentActions.createNewResident(residentData));\r\n this.props.dispatch(residentActions.updateResident(residentData));\r\n // this.props.dispatch(residentActions.updateApprovalResident(residentData));\r\n\r\n this.setState({\r\n addResidentFormUsed: false\r\n });\r\n }\r\n }\r\n\r\n componentDidCatch() {\r\n // this.addResidentValidation.destroy();\r\n }\r\n\r\n formReset() {\r\n this.setState({\r\n fname: \"\",\r\n lname: \"\",\r\n email: \"\",\r\n addresslookupId: \"\",\r\n phone: \"\",\r\n address: \"\"\r\n });\r\n\r\n //this.refs[\"addr-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.addResidentValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n\r\n handleInputChange(e) {\r\n let field = e.target.name;\r\n let value = e.target.value;\r\n\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n handleArchiveClick() {\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/profile\",\r\n state: {\r\n residentId: this.props.location.state.residentId,\r\n isApproved: this.state.isApproved,\r\n residentApprovalUpdatedStatus: this.state.residentApprovalUpdated\r\n }\r\n });\r\n }\r\n\r\n handleSubmit(event) {\r\n event.preventDefault();\r\n }\r\n\r\n render() {\r\n\r\n const {\r\n residentId,\r\n avatarUrl,\r\n } = this.state;\r\n const currentModule = _.find(\r\n this.props.modules,\r\n o => o.title === \"Residents\"\r\n );\r\n\r\n // const searched = _find(this.props.searchResidentsQueue, o => o.addressLine1 )\r\n /**used to style the profile image */\r\n let avatarStyle = {\r\n backgroundImage: `${\"url(\" + avatarUrl + \")\"}`\r\n };\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n {/* // {this.state.resident && ( */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/archive_profile\",\r\n state: {\r\n residentId: residentId,\r\n isApproved: this.state.isApproved\r\n }\r\n });\r\n }}\r\n >\r\n {this.state.isApproved === true ? \"Archive this resident\" : \"Re-activate this resident\"} {\" \"}\r\n \r\n \r\n

    \r\n

    \r\n {this.state.fullName}\r\n

    \r\n

    {this.state.address}

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n {this.state.addResidentFormUsed &&

    }\r\n
    \r\n {this.props.residentCreatedstatus &&\r\n (this.state.residentCreated === true ? (\r\n

    Member created

    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}

    \r\n )\r\n ))}\r\n
    \r\n {this.state.isApproved === true ? (\r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { setModule: \"Residents\" }\r\n });\r\n }}\r\n rightClick={e => {\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/profileinfo\",\r\n state: { residentId: residentId }\r\n });\r\n }}\r\n />\r\n ) : (\r\n
    \r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { residentId: residentId }\r\n });\r\n }}\r\n />\r\n
    \r\n )}\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n modules: moduleSelectors.loadModules(state),\r\n residents: residentSelectors.getResidents(state),\r\n searchResidentsQueue: residentSelectors.getSearchedResidents(state),\r\n residentUpdatedStatus: residentSelectors.residentUpdatedStatus(state),\r\n residentUpdatedApprovalStatus: residentSelectors.residentUpdatedApprovalStatus(\r\n state\r\n )\r\n };\r\n}\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\r\n ResidentProfile\r\n);\r\n","import React, { Component } from \"react\";\r\nimport \"../../sass/components/ProfileCard/index.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\n/**\r\n * This is a card component for the parcel lite section\r\n *\r\n */\r\n\r\nclass ProfileCard extends Component {\r\n render() {\r\n const { name, address, picture, txtColor } = this.props;\r\n\r\n let profileStyle = {\r\n backgroundImage: \"url(\" + this.props.picture + \")\",\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\",\r\n borderRadius: \"50%\",\r\n marginLeft: \"64px\",\r\n marginTop: \"50px\"\r\n };\r\n // let profileStyle = {\r\n // backgroundImage:\"url(\" + picture +}\r\n // }\r\n //console.log(dateArrived);\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {/**\"profile**/}\r\n
    \r\n\r\n
    \r\n
    \r\n

    \r\n {name}\r\n

    \r\n

    {address}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nProfileCard.propType = {\r\n name: PropTypes.string,\r\n address: PropTypes.string,\r\n picture: PropTypes.string\r\n};\r\n\r\nexport default ProfileCard;\r\n","import React, { Component } from \"react\";\r\nimport autobind from \"react-autobind\";\r\nimport { connect } from \"react-redux\";\r\nimport _ from \"lodash\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\n\r\nimport ProfileCard from \"../../../components/ProfileCard/ProfileCard\";\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\n\r\n\r\n//Test loading modules, this would be moved to when use signs in\r\n\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\n\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\n\r\nimport \"../../../sass/containers/residents.css\";\r\n\r\nimport * as $ from \"jquery\";\r\n\r\nclass ResidentArchive extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n type: \"residents\",\r\n residentId: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.residentId\r\n : \"\",\r\n resident: undefined,\r\n fname: \"\",\r\n lname: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n avatarUrl : \"\",\r\n addresslookupId: \"\",\r\n address: \"\",\r\n residentCreated: false,\r\n isApproved: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.isApproved\r\n : null,\r\n residentApprovalUpdated: false\r\n };\r\n\r\n this.props.dispatch(residentActions.getAllResidents());\r\n this.addResidentValidation = null;\r\n\r\n autobind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.residents !== prevProps.residents && this.props.residents) {\r\n let resi = _.find(\r\n this.props.residents,\r\n res => res.id === this.state.residentId\r\n );\r\n\r\n this.setState({\r\n resident: resi,\r\n phone:\r\n (!_.isUndefined(resi) && !_.isUndefined(resi.mobileNumber)) ||\r\n !_.isEmpty(resi.mobileNumber)\r\n ? resi.mobileNumber\r\n : \"\",\r\n email: !_.isUndefined(resi) ? resi.email : \"\",\r\n fullName: !_.isUndefined(resi)\r\n ? resi.firstName + \" \" + resi.lastName\r\n : \"\",\r\n avatarUrl: !_.isUndefined(resi) ? resi.avatarUrl : \"\",\r\n address: !_.isUndefined(resi)\r\n ? `${resi.addressLine1 + \" \" + resi.addressLine2}`\r\n : \"\",\r\n isApproved: !_.isUndefined(resi) ? resi.isApproved : null\r\n });\r\n }\r\n\r\n \r\n }\r\n\r\n \r\n validate(fromSubmit = false) {\r\n if (fromSubmit === true) {\r\n //this.formReset();\r\n\r\n let residentData = {\r\n phone: this.state.phone,\r\n firstName: this.state.fname,\r\n lastName: this.state.lname,\r\n email: this.state.email,\r\n address: this.state.address,\r\n addressId: this.state.addresslookupId,\r\n isApproved: this.state.isApproved === true ? false : true,\r\n residentApprovalUpdated: this.state.residentApprovalUpdated\r\n };\r\n\r\n this.props.dispatch(\r\n residentActions.updateApprovalResident(residentData, success => {\r\n if (success === true) {\r\n this.returnToProfile();\r\n }\r\n })\r\n );\r\n\r\n this.setState({\r\n addResidentFormUsed: false\r\n });\r\n\r\n \r\n }\r\n }\r\n\r\n // componentDidCatch() {\r\n // // this.addResidentValidation.destroy();\r\n // }\r\n\r\n returnToProfile() {\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/profile\",\r\n state: {\r\n residentId: this.state.residentId,\r\n //isApproved: this.state.isApproved,\r\n residentApprovalUpdated: this.state.residentApprovalUpdatedStatus\r\n }\r\n });\r\n }\r\n\r\n formReset() {\r\n this.setState({\r\n fname: \"\",\r\n lname: \"\",\r\n email: \"\",\r\n addresslookupId: \"\",\r\n phone: \"\",\r\n address: \"\"\r\n });\r\n\r\n //this.refs[\"addr-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n // $(this.refs.validate)\r\n // .get(0)\r\n // .reset();\r\n\r\n this.addResidentValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n // this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n\r\n \r\n }\r\n\r\n handleInputChange(e) {\r\n let field = e.target.name;\r\n let value = e.target.value;\r\n\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n \r\n\r\n handleSubmit(event) {\r\n event.preventDefault();\r\n this.validate(true);\r\n\r\n }\r\n\r\n\r\n render() {\r\n\r\n const currentModule = _.find(\r\n this.props.modules,\r\n o => o.title === \"Residents\"\r\n );\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n this.handleSubmit(e)}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n >\r\n {this.state.residentId && \r\n }\r\n \r\n {this.state.addResidentFormUsed &&

    }\r\n
    \r\n {this.props.residentApprovalUpdated &&\r\n (this.state.residentApprovalUpdatedStatus === true ? (\r\n

    Member updated

    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}

    \r\n )\r\n ))}\r\n
    \r\n
    \r\n\r\n {\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/profile\",\r\n state: {\r\n residentId: this.props.location.state.residentId,\r\n isApproved: this.state.isApproved,\r\n residentUpdatedApprovalStatus: this.state.residentApprovalUpdated\r\n }\r\n });\r\n }}\r\n rightClick={e => {\r\n this.validate(true);\r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\nfunction mapStateToProps(state) {\r\n return {\r\n modules: moduleSelectors.loadModules(state),\r\n residents: residentSelectors.getResidents(state),\r\n residentUpdatedStatus: residentSelectors.residentUpdatedStatus(state),\r\n residentUpdatedApprovalStatus: residentSelectors.residentUpdatedApprovalStatus(\r\n state\r\n )\r\n };\r\n}\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\r\n ResidentArchive\r\n);\r\n","import React, { Component } from \"react\";\r\nimport autobind from \"react-autobind\";\r\nimport { connect } from \"react-redux\";\r\nimport _ from \"lodash\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\n\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\nimport AddressLookUp from \"../../../components/AddrLookUpAutoSuggest/AddrLookUpAutoSuggest\";\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\nimport * as addressLookupActions from \"../../../store/AddressLookUp/actions\";\r\nimport * as addressLookupSelector from \"../../../store/AddressLookUp/reducer\";\r\nimport * as $ from \"jquery\";\r\n\r\n\r\n\r\nclass ResidentEditProfilePage extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n type: \"residents\",\r\n residentId: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.residentId\r\n : \"\",\r\n resident: undefined,\r\n firstName: \"\",\r\n lastName: \"\",\r\n address: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n addressLine1: \"\",\r\n addressLine2: \"\",\r\n addresslookupId: undefined,\r\n residentUpdated: false,\r\n addressValid: false\r\n };\r\n\r\n this.props.dispatch(residentActions.getAllResidents());\r\n this.props.dispatch(addressLookupActions.loadAddresses());\r\n this.props.dispatch(residentActions.GetConciergeGroups());\r\n\r\n this.addResidentValidation = null;\r\n autobind(this);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.addValidation();\r\n }\r\n componentWillUnmount() {\r\n this.addResidentValidation.destroy();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.residents !== prevProps.residents && this.props.residents) {\r\n let resi = _.find(\r\n this.props.residents,\r\n res => res.id === this.state.residentId\r\n );\r\n\r\n this.setState({\r\n resident: resi,\r\n firstName: !_.isUndefined(resi) ? resi.firstName : \"\",\r\n lastName: !_.isUndefined(resi) ? resi.lastName : \"\",\r\n address: !_.isUndefined(resi)\r\n ? resi.addressLine1 + `${resi.addressLine2 ? \" \" + resi.addressLine2 : \"\"}`\r\n : \"\",\r\n phone: !_.isUndefined(resi) ? resi.mobileNumber : \"\",\r\n email: !_.isUndefined(resi) ? resi.email : \"\",\r\n addresslookupId: !_.isUndefined(resi) ? resi.addressLookupId : undefined\r\n });\r\n }\r\n\r\n\r\n if (\r\n this.props.residentUpdatedStatus !== prevProps.residentUpdatedStatus && this.props.residentUpdatedStatus &&\r\n !_.isUndefined(this.props.residentUpdatedStatus.status)\r\n ) {\r\n if (this.props.residentUpdatedStatus.status === true) {\r\n this.setState({\r\n residentUpdated: this.props.residentUpdatedStatus.status\r\n });\r\n } else {\r\n this.setState({\r\n residentUpdated: this.props.residentUpdatedStatus.status,\r\n error: this.props.residentUpdatedStatus.error\r\n });\r\n }\r\n }\r\n }\r\n\r\n addValidation() {\r\n this.addResidentValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n\r\n validate(fromSubmit = false) {\r\n this.addResidentValidation.validate({ force: true });\r\n\r\n const valid =\r\n this.addResidentValidation.isValid() && this.state.addressValid;\r\n\r\n // if (!this.state.addressValid) {\r\n // this.setState({\r\n // error: \"Please enter an existing tenant address\"\r\n // });\r\n // }\r\n\r\n this.setState({\r\n addResidentFormValid: valid,\r\n addResidentFormUsed: true\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.formReset();\r\n\r\n let address = _.find(\r\n this.props.addresses,\r\n addr => addr.id === this.state.addresslookupId\r\n );\r\n\r\n let residentData = {\r\n mobileNumber: this.state.phone,\r\n firstName: this.state.firstName,\r\n lastName: this.state.lastName,\r\n email: this.state.email,\r\n addressLine1: address.addr1FlatNumber,\r\n addressLine2: `${address.addr2BuildingName ? address.addr2BuildingName : \"\"}`,\r\n postCode: address.postCode,\r\n addressLookupId: address.id\r\n };\r\n\r\n this.props.dispatch(\r\n residentActions.updateResident(residentData, success => {\r\n if (success === true) {\r\n this.returnToProfile();\r\n }\r\n //this.props.dispatch(residentActions.getAllResidents());\r\n })\r\n );\r\n\r\n this.setState({\r\n addResidentFormUsed: false\r\n });\r\n }\r\n }\r\n\r\n returnToProfile() {\r\n this.props.history.push({\r\n pathname: \"/concierge/residents/profile\",\r\n state: {\r\n residentId: this.state.residentId,\r\n residentUpdated: this.state.residentUpdated\r\n }\r\n });\r\n }\r\n\r\n formReset() {\r\n // this.setState({\r\n // fname: \"\",\r\n // lname: \"\",\r\n // email: \"\",\r\n // addresslookupId: \"\",\r\n // phone: \"\",\r\n // address: \"\"\r\n // });\r\n\r\n // this.refs[\"addr-auto-suggest\"] &&\r\n // this.refs[\"addr-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.addResidentValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n // setTimeout(function() {\r\n // this.returnToProfile();\r\n // }.bind(this), 2000);\r\n }\r\n handleInputChange(e) {\r\n let field = e.target.name;\r\n let value = e.target.value;\r\n\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n render() {\r\n const {\r\n firstName,\r\n lastName,\r\n email,\r\n phone,\r\n address,\r\n addresslookupId,\r\n addressDefault \r\n } = this.state;\r\n const currentModule = _.find(\r\n this.props.modules,\r\n o => o.title === \"Residents\"\r\n );\r\n\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n >\r\n
    \r\n this.handleInputChange(e)}\r\n value={firstName}\r\n parsley={{\r\n \"data-parsley-pattern\": \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n \"data-parsley-minlength\": 2,\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid first name\"\r\n }}\r\n />\r\n this.handleInputChange(e)}\r\n value={lastName}\r\n parsley={{\r\n \"data-parsley-pattern\": \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n \"data-parsley-minlength\": 2,\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid last name\"\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n {\r\n this.setState({\r\n addresslookupId: data.addresslookupId,\r\n address: data.address,\r\n addressValid: data.valid\r\n });\r\n setTimeout(() => {\r\n this.state.addResidentFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => {\r\n this.setState({\r\n addressDefault: dataVal\r\n });\r\n }}\r\n />\r\n }\r\n\r\n this.handleInputChange(e)}\r\n value={email}\r\n parsley={{\r\n \"data-parsley-type\": \"email\",\r\n \"data-parsley-required\": true,\r\n //\"data-parsley-validate-if-empty\": false,\r\n \"data-parsley-error-message\": \"Please enter a valid email\"\r\n }}\r\n disabled={true}\r\n />\r\n this.handleInputChange(e)}\r\n value={_.isEmpty(phone) ? \"\" : phone}\r\n parsley={{\r\n //\"data-parsley-type\": \"digits\",\r\n \"data-parsley-validate-if-empty\": false,\r\n \"data-parsley-minlength\": 11,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid phone number\"\r\n }}\r\n />\r\n\r\n\r\n
    \r\n\r\n \r\n {this.state.addResidentFormUsed &&\r\n this.state.addResidentFormUsed === true &&\r\n addressDefault &&\r\n !_.isEmpty(addressDefault) &&\r\n this.state.addressValid === false && (\r\n

    {this.state.error}

    \r\n )}\r\n
    \r\n {this.props.residentUpdatedStatus &&\r\n (this.state.residentUpdated === true ? (\r\n

    Member Updated

    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}

    \r\n )\r\n ))}\r\n
    \r\n
    \r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { setModule: \"Residents\" }\r\n });\r\n // this.props.history.push({\r\n // pathname: \"/concierge/residents/profile\",\r\n // state: {\r\n // residentId: this.props.location.state.residentId,\r\n // residentUpdated: this.state.residentUpdated\r\n // }\r\n // });\r\n }}\r\n rightClick={e => {\r\n this.validate(true);\r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n modules: moduleSelectors.loadModules(state),\r\n residents: residentSelectors.getResidents(state),\r\n addresses: addressLookupSelector.getAddresses(state),\r\n residentUpdatedStatus: residentSelectors.residentUpdatedStatus(state),\r\n residentGroups: residentSelectors.GetConciergeGroups(state),\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(ResidentEditProfilePage));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport * as authActions from \"../store/auth/actions\";\r\nimport * as authSelectors from \"../store/auth/reducer\";\r\nimport HeaderNavigation from \"../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../components/FooterNavigation/FooterNavigation\";\r\nimport * as settingActions from \"../store/ConciergeSetting/actions\";\r\nimport * as settingSelector from \"../store/ConciergeSetting/reducer\";\r\nimport autoBind from \"react-autobind\";\r\nimport LoginForm from \"../components/LoginForm/LoginForm\";\r\nimport { createBrowserHistory } from 'history';\r\n\r\nimport \"../sass/static/logout.css\";\r\nimport \"../sass/static/forgotPassword.css\";\r\n\r\nconst browserHistory = createBrowserHistory();\r\nconst location = browserHistory.location;\r\nclass ForgotPassword extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n error: false,\r\n emailFormSuccesssfull: null,\r\n emailSuccessfull: null\r\n };\r\n autoBind(this);\r\n this.props.dispatch(settingActions.getGlobalSetting());\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.isLoggedIn === true) {\r\n browserHistory.push(\"/\");\r\n }\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n if (this.props.emailVerify !== nextProps.emailVerify) {\r\n this.setState({\r\n emailFormSuccesssfull: nextProps.emailVerify\r\n });\r\n }\r\n }\r\n handleEmailChange(e) {\r\n this.props.dispatch(authActions.setEmail(e.target.value));\r\n }\r\n\r\n handlePasswordChange(e) {\r\n e.target.value.length < 8\r\n ? this.setState({ error: true })\r\n : this.setState({ error: false });\r\n\r\n this.props.dispatch(authActions.setPassword(e.target.value));\r\n }\r\n\r\n handleSubmit(e) {\r\n e.preventDefault();\r\n\r\n this.props.dispatch(\r\n authActions.ResetPasswordEmail(this.props.email, success => {\r\n if (success) {\r\n this.setState({\r\n emailSuccessfull: success\r\n });\r\n setTimeout(() => {\r\n browserHistory.push(\"/passwordrecoverysent\");\r\n }, 0);\r\n } else {\r\n this.setState({\r\n emailSuccessfull: false\r\n });\r\n this.props.dispatch(authActions.setRequestStatus(false));\r\n }\r\n })\r\n );\r\n }\r\n render() {\r\n\r\n const { settings } = this.props;\r\n let bgImage = \"\";\r\n if (settings) {\r\n bgImage = settings.mainBackgroundImage;\r\n }\r\n const bgStyle = {\r\n backgroundImage: \"url('\" + bgImage + \"')\",\r\n backgroundRepeatY: \"no-repeat\",\r\n backgroundSize: \"cover\"\r\n };\r\n\r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n

    Password Recovery

    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isLoggedIn: authSelectors.getIsLoggedIn(state),\r\n password: authSelectors.getPassword(state),\r\n email: authSelectors.getEmail(state),\r\n emailVerify: authSelectors.emailVerifyStatus(state),\r\n settings: settingSelector.loadGlobalSetting(state)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(ForgotPassword);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport HeaderNavigation from \"../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../components/FooterNavigation/FooterNavigation\";\r\nimport Button from \"../components/Button/Button\";\r\nimport autoBind from \"react-autobind\";\r\n\r\nimport * as authSelectors from \"../store/auth/reducer\";\r\nimport * as authActions from \"../store/auth/actions\";\r\nimport * as settingActions from \"../store/ConciergeSetting/actions\";\r\nimport * as settingSelector from \"../store/ConciergeSetting/reducer\";\r\nimport \"../sass/static/logout.css\";\r\n\r\nimport \"../sass/static/passwordRecoverySent.css\"\r\n\r\nclass PassRecoverySent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.props.dispatch(settingActions.getGlobalSetting());\r\n autoBind(this);\r\n }\r\n\r\n handleResend(e) {\r\n const { email } = this.props;\r\n\r\n if (email) this.props.dispatch(authActions.ResetPasswordEmail(email));\r\n }\r\n\r\n render() {\r\n const { settings } = this.props;\r\n let bgImage = \"\";\r\n if (settings) {\r\n bgImage = settings.mainBackgroundImage;\r\n }\r\n const bgStyle = {\r\n backgroundImage: \"url('\" + bgImage + \"')\",\r\n backgroundRepeatY: \"no-repeat\",\r\n backgroundSize: \"cover\"\r\n };\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n

    Sent!

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n Check your inbox and follow the instructions\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n isLoggedIn: authSelectors.getIsLoggedIn(state),\r\n email: authSelectors.getEmail(state),\r\n settings: settingSelector.loadGlobalSetting(state)\r\n };\r\n}\r\nexport default connect(mapStateToProps)(PassRecoverySent);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport * as authActions from \"../store/auth/actions\";\r\nimport * as authSelectors from \"../store/auth/reducer\";\r\nimport * as settingActions from \"../store/ConciergeSetting/actions\";\r\nimport * as settingSelector from \"../store/ConciergeSetting/reducer\";\r\nimport HeaderNavigation from \"../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../components/FooterNavigation/FooterNavigation\";\r\nimport Button from \"../components/Button/Button\";\r\nimport autoBind from \"react-autobind\";\r\nimport LoginForm from \"../components/LoginForm/LoginForm\";\r\nimport {withRouter} from 'react-router-dom';\r\n\r\nimport * as cryptoUtil from \"../utility/cryptoUtility\";\r\n\r\nimport \"../sass/static/logout.css\";\r\nimport \"../sass/static/newPassword.css\";\r\n\r\n\r\nclass PasswordRecoveryNewPassword extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n email: \"\",\r\n guid: \"\",\r\n valid: false,\r\n error: false,\r\n\r\n resetFormSuccesssfull: false\r\n };\r\n\r\n autoBind(this);\r\n this.props.dispatch(settingActions.getGlobalSetting());\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.isLoggedIn === true) {\r\n this.props.history.push(\"/\");\r\n }\r\n this.setState({\r\n email: this.props.location.query.email,\r\n guid: this.props.location.query.guid\r\n });\r\n\r\n let data = {\r\n email: this.props.location.query.email,\r\n tokenid: this.props.location.query.guid\r\n };\r\n this.props.dispatch(authActions.verifyRequest(data), success => { });\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n if (this.props.passwordReset !== nextProps.passwordReset) {\r\n this.setState({\r\n resetFormSuccesssfull: nextProps.passwordReset\r\n });\r\n }\r\n if (this.props.validRequest !== nextProps.validRequest) {\r\n this.setState({\r\n valid: nextProps.validRequest\r\n });\r\n }\r\n }\r\n handleEmailChange(e) {\r\n // this.props.dispatch(authActions.setEmail(e.target.value));\r\n }\r\n\r\n handlePasswordChange(e) {\r\n e.target.value.length < 8\r\n ? this.setState({ error: true })\r\n : this.setState({ error: false });\r\n\r\n this.props.dispatch(authActions.setPassword(e.target.value));\r\n }\r\n\r\n handleSubmit(e) {\r\n e.preventDefault();\r\n\r\n const { email, guid } = this.state;\r\n\r\n const data = {\r\n email: cryptoUtil.encryptAES(email),\r\n tokenid: cryptoUtil.encryptAES(guid),\r\n password: cryptoUtil.encryptAES(this.props.password)\r\n };\r\n\r\n this.props.dispatch(authActions.resetpassword(data), success => {\r\n if (success) {\r\n this.setState({\r\n resetFormSuccesssfull: success\r\n });\r\n }\r\n });\r\n }\r\n render() {\r\n const { resetFormSuccesssfull, valid } = this.state;\r\n const { settings } = this.props;\r\n let bgImage = \"\";\r\n if (settings) {\r\n bgImage = settings.mainBackgroundImage;\r\n }\r\n const bgStyle = {\r\n backgroundImage: \"url('\" + bgImage + \"')\",\r\n backgroundRepeatY: \"no-repeat\",\r\n backgroundSize: \"cover\"\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n

    Password Recovery

    \r\n
    \r\n\r\n
    \r\n
    \r\n {valid === false ? (\r\n
    \r\n

    \r\n Oops, unable to verify your request\r\n

    \r\n
    \r\n {\r\n this.props.history.push(\"/forgotpassword\");\r\n }}\r\n text=\"Resend Email\"\r\n size=\"medium\"\r\n />\r\n
    \r\n
    \r\n ) : (\r\n
    \r\n {resetFormSuccesssfull === false && (\r\n \r\n )}\r\n\r\n {resetFormSuccesssfull === true && (\r\n
    \r\n
    \r\n
      \r\n
    • \r\n Your password has been reset successfully\r\n
    • \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.history.push(\"/\");\r\n }}\r\n text=\"Go to Login\"\r\n size=\"medium\"\r\n />\r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isLoggedIn: authSelectors.getIsLoggedIn(state),\r\n password: authSelectors.getPassword(state),\r\n passwordReset: authSelectors.passwordReset(state),\r\n validRequest: authSelectors.emailVerifyStatus(state),\r\n settings: settingSelector.loadGlobalSetting(state)\r\n };\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps)(PasswordRecoveryNewPassword));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport HeaderNavigation from \"../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../components/FooterNavigation/FooterNavigation\";\r\nimport autoBind from \"react-autobind\";\r\nimport * as authSelectors from \"../store/auth/reducer\";\r\nimport * as settingActions from \"../store/ConciergeSetting/actions\";\r\nimport * as settingSelector from \"../store/ConciergeSetting/reducer\";\r\n\r\nimport \"../sass/static/logout.css\";\r\n\r\nimport \"../sass/static/tsandcs.css\"\r\n\r\nclass TermsAndConditions extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n autoBind(this);\r\n this.props.dispatch(settingActions.getGlobalSetting());\r\n }\r\n\r\n\r\n render() {\r\n const { settings } = this.props;\r\n let bgImage = \"\";\r\n if (settings) {\r\n bgImage = settings.mainBackgroundImage;\r\n }\r\n const bgStyle = {\r\n backgroundImage: \"url('\" + bgImage + \"')\",\r\n backgroundRepeatY: \"no-repeat\",\r\n backgroundSize: \"cover\"\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n

    Terms and Conditions

    \r\n
    \r\n\r\n
    \r\n\r\n

    \r\n So you have your new digital camera and clicking away to glory anything and everything in sight. Now you want to print them and you need the best photo printers to print your fantastic photos. Let us talk about the various printers in the market and some tips on choosing the best photo printers.\r\n\r\nMost of the printers could easily be purchased under $500. While all of them have similar features, it is better to be aware of certain key features that determines their price and print quality. First to look out for is the printing width. It differs among printers. Normally they are available with a width of either 8.5 inches or 13 inches. A 6 color printer is adequate but if you want good black and white images as well it is better to go for 8-color printer.\r\n\r\nMany of the best photo printers today have the ability to print directly from your camera or flash memory card through a simple device. You must also look for the printing speed per minute. Generally it takes up to 10 minutes for one color photo so you must factor it in when choosing the model. When you want to buy multi use printers, please note that for good quality photo printing you need to buy a dedicated printer or a digital photo printer that accepts the most popular memory cards.\r\n\r\nNow let us see the top 5 best photo printers and some of their features:\r\n\r\nEpson Stylus Pro 4000 can take in paper wider than 11 inches thus making it very convenient. The high quality color and grayscale printing and the ability to make use of rolls of paper instead of sheets make it very economical too.\r\n\r\nCanon Pixma IP8500 Photo Printer is another best photo printer in our top 5 list. It scores very high on speed, color and print quality. Almost all users love the 8 color cartridges. One disadvantage is the absence of media card slot – simply unacceptable in a high-end printer. The built in duplexer and good text printing however makes up for this disadvantage as it could be used for general and business use as well.\r\n\r\nCanon Slephy DS700 is the best photo printer in the portable category. It plugs in directly into your TV so you could examine your photos in detail before printing them without having to transfer them to a PC.\r\n\r\nThe ever popular Epson Picture Mate is another best seller in its newest version – The Epson Picture Mate Deluxe. Though it has many added features and higher speeds, it no longer seem to have the cost-effectiveness per print of the older model.\r\n\r\nAnother best photo printer worth considering is the Sony PictureStation DPP-FP30. the installation is simple and the quality is simply Sony standards. However a small problem is the high running costs.\r\n\r\nSo have fun with the best photo printer that you have selected and may your photo memories come alive as good photo prints too!\r\n

    \r\n
    \r\n \r\n\r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n isLoggedIn: authSelectors.getIsLoggedIn(state),\r\n email: authSelectors.getEmail(state),\r\n settings: settingSelector.loadGlobalSetting(state)\r\n };\r\n}\r\nexport default connect(mapStateToProps)(TermsAndConditions);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Autosuggest from 'react-autosuggest';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'lodash';\r\nimport autoBind from 'react-autobind';\r\nimport * as $ from 'jquery';\r\nimport moment from 'moment';\r\n\r\nimport InputComponent from '../../components/Input/Input';\r\n\r\nimport * as residentActions from '../../store/Residents/actions';\r\nimport * as residentSelectors from '../../store/Residents/reducer';\r\nimport * as visitorActions from '../../store/Visitors/actions';\r\nimport * as visitorSelectors from '../../store/Visitors/reducer';\r\n\r\n/**\r\n * Pairs up an 0 &&\r\n\t\t\t!_.isUndefined(nextProps.defaultTenantId) &&\r\n\t\t\tthis.selectedTenantFromDefault === false\r\n\t\t) {\r\n\t\t\tthis.selectedTenantFromDefault = true;\r\n\r\n\t\t\tconst startTenant = nextProps.residents.find((tenant) => {\r\n\t\t\t\treturn tenant.id === nextProps.defaultTenantId;\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleTenantSelected(startTenant);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalue: startTenant.firstName + ' ' + startTenant.lastName,\r\n\t\t\t\tvalid: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (nextProps.visitors && nextProps.visitors.length > 0) {\r\n\t\t\tlet lookupVisitor = _.map(nextProps.visitors, (x) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: x.id,\r\n\t\t\t\t\tfirstName: x.firstName,\r\n\t\t\t\t\tlastName: x.surname,\r\n\t\t\t\t\temail: x.email,\r\n\t\t\t\t\ttype: x.memberType,\r\n\t\t\t\t\tcompanyName: x.companyName\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t\tlet lookupMember =\r\n\t\t\t\tnextProps.residents && nextProps.residents.length > 0\r\n\t\t\t\t\t? _.map(nextProps.residents, (o) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\t\t\temail: o.email,\r\n\t\t\t\t\t\t\t\tfirstName: o.firstName,\r\n\t\t\t\t\t\t\t\tlastName: o.lastName,\r\n\t\t\t\t\t\t\t\ttype: o.memberType,\r\n\t\t\t\t\t\t\t\tcompanyName: ''\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t: [];\r\n\t\t\tlet lookupArray = lookupMember;\r\n\r\n\t\t\tif (lookupVisitor && lookupVisitor.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < lookupVisitor.length; i++) {\r\n\t\t\t\t\tlookupArray.push(lookupVisitor[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tlookupMembers: lookupArray\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (nextProps.visitors.length === 0) {\r\n\t\t\tlet lookupMember =\r\n\t\t\t\tnextProps.residents && nextProps.residents.length > 0\r\n\t\t\t\t\t? _.map(nextProps.residents, (o) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\t\t\temail: o.email,\r\n\t\t\t\t\t\t\t\tfirstName: o.firstName,\r\n\t\t\t\t\t\t\t\tlastName: o.lastName,\r\n\t\t\t\t\t\t\t\ttype: o.memberType,\r\n\t\t\t\t\t\t\t\tcompanyName: ''\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t: [];\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tlookupMembers: lookupMember\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.setState(this.defaultState);\r\n\t}\r\n\r\n\t// Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n\tgetSuggestionValue(suggestion) {\r\n\t\t// const { name } = this.state;\r\n\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t\tif (suggestion) this.setState({ disabled: '' });\r\n\r\n\t\t/**Handle what is displayed on the auto-suggest Text field */\r\n\t\treturn `${suggestion.firstName} ${suggestion.lastName}`;\r\n\t}\r\n\r\n\tgetSuggestions(val) {\r\n\t\tconst { lookupMembers } = this.state;\r\n\t\tif (!lookupMembers) return [];\r\n\r\n\t\t//safe guard residents data return null value in some records\r\n\t\tvar data_ = _.filter(lookupMembers, (obj) => {\r\n\t\t\treturn obj.firstName !== null || obj.lastName !== null;\r\n\t\t});\r\n\t\tlet suggestionsAvailable = false;\r\n\t\tconst match = _.filter(data_, (o) => {\r\n\t\t\tsuggestionsAvailable = o.firstName && _.startsWith(o.firstName.toLowerCase().trim(), val.toLowerCase());\r\n\t\t\tif (suggestionsAvailable === false) {\r\n\t\t\t\tsuggestionsAvailable = o.lastName && _.startsWith(o.lastName.toLowerCase().trim(), val.toLowerCase());\r\n\t\t\t\tif (suggestionsAvailable === false) {\r\n\t\t\t\t\tsuggestionsAvailable =\r\n\t\t\t\t\t\to.firstName &&\r\n\t\t\t\t\t\to.lastName &&\r\n\t\t\t\t\t\t_.startsWith(\r\n\t\t\t\t\t\t\to.firstName.toLowerCase().trim() + ' ' + o.lastName.toLowerCase().trim(),\r\n\t\t\t\t\t\t\tval.toLowerCase()\r\n\t\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn suggestionsAvailable;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tonSuggestionsFetchRequested = ({ value }) => {\r\n\t\tthis.setState({ suggestions: this.getSuggestions(value) });\r\n\t};\r\n\r\n\tonSuggestionsClearRequested = () => {};\r\n\r\n\tonChange = (event, { newValue }) => {\r\n\t\tif (newValue.length === 0) this.setState({ tenant: undefined });\r\n\t\tif (newValue.length > 2) {\r\n\t\t\tthis.handleTenantChange(newValue);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tvalue: newValue\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t// Delayed because parseley not ready if user selected a suggestion\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalid: $(this.refs.autosuggest.input).parsley().isValid()\r\n\t\t\t});\r\n\t\t}, 0);\r\n\r\n\t\t//\tthis.checkMatch(newValue);\r\n\t};\r\n\r\n\thandleTenantSelected(ten, setValue = false) {\r\n\t\tconst stateChanges = {\r\n\t\t\tmemberId: ten.id,\r\n\t\t\tcompanyName: ten.companyName,\r\n\t\t\ttenant: ten.firstName + ' ' + ten.lastName,\r\n\t\t\ttype: ten.type,\r\n\t\t\t...(setValue ? { value: ten.firstName + ' ' + ten.lastName, valid: true } : {})\r\n\t\t};\r\n\r\n\t\tthis.setState(stateChanges);\r\n\r\n\t\tthis.props.onSelected && this.props.onSelected(stateChanges);\r\n\t}\r\n\r\n\thandleTenantChange(value) {\r\n\t\t// const { memberId } = this.state;\r\n\t\tthis.setState({\r\n\t\t\tname: value\r\n\t\t});\r\n\t}\r\n\r\n\t/**Handles what fields are displayed in the drop down List, styling can be applied to list*/\r\n\trenderSuggestion(suggestion, { query, isHighlighted }) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{suggestion.firstName} {suggestion.lastName} {'['} {suggestion.type}\r\n\t\t\t\t{' ] '}\r\n\t\t\t\t{suggestion.companyName}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\thandleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method) {\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t}\r\n\r\n\tcheckMatch(currentValue) {\r\n\t\tconst matchedTenant = this.state.lookupMembers.find((tenant) => {\r\n\t\t\tconst value = currentValue.toLowerCase();\r\n\t\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\t\treturn value !== '';\r\n\t\t\t});\r\n\r\n\t\t\tif (\r\n\t\t\t\tparts.length === 2 &&\r\n\t\t\t\ttenant.firstName.toLowerCase() === parts[0].trim() &&\r\n\t\t\t\ttenant.lastName.toLowerCase() === parts[1].trim()\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(matchedTenant) === false) {\r\n\t\t\tthis.handleTenantSelected(matchedTenant);\r\n\t\t} else {\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\tinputClick() {\r\n\t\tif (\r\n\t\t\tthis.state.valid === true &&\r\n\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\tthis.props.clearableIfValid === true\r\n\t\t) {\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { value, suggestions, valid, lookupMembers } = this.state;\r\n\t\tconst { label, placeHolder } = this.props;\r\n\t\tconst disabled = _.isUndefined(this.props.disabled) || this.props.disabled === false ? false : true;\r\n\r\n\t\tconst inputProps = {\r\n\t\t\tplaceholder: 'Tenant',\r\n\t\t\tvalue,\r\n\t\t\tonChange: this.onChange,\r\n\t\t\tonClick: this.inputClick\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\tthis.handleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method)}\r\n\t\t\t\trenderSuggestion={this.renderSuggestion}\r\n\t\t\t\tinputProps={inputProps}\r\n\t\t\t\ttheme={{\r\n\t\t\t\t\t// maybe make global for reuse at some point\r\n\t\t\t\t\tcontainer:\r\n\t\t\t\t\t\t'auto-suggest Select ' +\r\n\t\t\t\t\t\t(!_.isUndefined(this.props.clearableIfValid) && this.props.clearableIfValid === true\r\n\t\t\t\t\t\t\t? 'is-clearable'\r\n\t\t\t\t\t\t\t: ''),\r\n\t\t\t\t\tsuggestionsList: 'Select-menu-outer',\r\n\t\t\t\t\tsuggestion: 'Select-menu'\r\n\t\t\t\t}}\r\n\t\t\t\trenderInputComponent={(inputProps) => {\r\n\t\t\t\t\tconst iconProp =\r\n\t\t\t\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\t\t\t\tthis.props.clearableIfValid === true &&\r\n\t\t\t\t\t\tvalid === true\r\n\t\t\t\t\t\t\t? { icon: 'ion-close-round' }\r\n\t\t\t\t\t\t\t: { icon: 'ion-chevron-down' };\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\t\t\t\t\t\t\t\t//this.checkMatch(e.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t'data-parsley-matches-one-of': JSON.stringify({\r\n\t\t\t\t\t\t\t\t\tallSuggestions: lookupMembers.map((tenant) => {\r\n\t\t\t\t\t\t\t\t\t\treturn { value: tenant.firstName + ' ' + tenant.lastName };\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t'data-parsley-pattern': \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/8059370/\r\n\t\t\t\t\t\t\t\t'data-parsley-minlength': 4,\r\n\t\t\t\t\t\t\t\t'data-parsley-required': false,\r\n\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter an existing tenant name'\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t{...iconProp}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tresidents: residentSelectors.getResidents(state),\r\n\t\tvisitors: visitorSelectors.getVisitors(state)\r\n\t};\r\n}\r\n\r\nResidentVisitorAutoSuggest.propTypes = {\r\n\t/* Optional initial tenant id to start with, (used when navigating back etc...) */\r\n\tdefaultTenantId: PropTypes.number,\r\n\t/* Callback function for when item is selected */\r\n\tonSelected: PropTypes.func,\r\n\t/* Optional disable the input field */\r\n\tdisabled: PropTypes.bool,\r\n\t/* Specifies if a X icon shows and the input field becomes clickable if the autosuggest is valid */\r\n\tclearableIfValid: PropTypes.bool,\r\n\t/** Optional label text*/\r\n\tlabel: PropTypes.string,\r\n\t/** Optional PlaceHolder Text */\r\n\tplaceHolder: PropTypes.string\r\n};\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ResidentVisitorAutoSuggest);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autobind from \"react-autobind\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport * as $ from \"jquery\";\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\n\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\nimport AddressLookUp from \"../../../components/AddrLookUpAutoSuggest/AddrLookUpAutoSuggest\";\r\nimport * as visitorSelectors from \"../../../store/Visitors/reducer\";\r\nimport * as keysActions from \"../../../store/Keys/actions\";\r\nimport * as keySelectors from \"../../../store/Keys/reducer\";\r\nimport * as addressLookupActions from \"../../../store/AddressLookUp/actions\";\r\nimport * as addressLookupSelectors from \"../../../store/AddressLookUp/reducer\";\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\nimport DataList from \"../../../components/DetailList/DetailList\";\r\nimport DataListMulti from \"../../../components/DetailList/DetailList5Column\";\r\nimport ResidentVisitorAutoSuggest from \"../../../components/TenantAutoSuggest/ResidentVisitorAutoSuggest\";\r\nimport \"../../../sass/containers/Keys/index.css\";\r\nimport \"../../../sass/components/DateTimePicker/index.css\";\r\nconst searchOption = {\r\n Resident: \"name\",\r\n Address: \"address\",\r\n KeyCode: \"barcode\"\r\n};\r\n\r\nclass keysTestScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type: \"keys\",\r\n search: \"\",\r\n searchType:\r\n searchOption.KeyCode /** This would store the search option by (name / address) default set as name*/,\r\n validSearch: false,\r\n keysLog: [],\r\n keyList: [],\r\n keLogList: [],\r\n phoneNumber: \"\",\r\n email: \"\",\r\n currentDate: moment(new Date()).format(\"DD/MM/YYYY\"),\r\n currentTime: moment(new Date()).format(\"HH:mm \"),\r\n expectedReturnDate: \"\",\r\n name: \"\",\r\n addresslookupId: undefined,\r\n address: \"\",\r\n selectedKey: undefined,\r\n tenant: \"\",\r\n tenantId: \"\",\r\n selectedTenant: undefined,\r\n selectedVisitor: undefined,\r\n selectedDate: moment(),\r\n statuses: undefined,\r\n overdueKeyList: []\r\n };\r\n\r\n this.props.dispatch(keysActions.getAllKeys());\r\n this.props.dispatch(keysActions.getKeyStatuses());\r\n this.props.dispatch(residentActions.getAllResidents());\r\n this.props.dispatch(addressLookupActions.loadAddresses());\r\n this.assignKeyValidation = null;\r\n autobind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.addValidation();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.assignKeyValidation.destroy();\r\n }\r\n componentWillUpdate(nextProps, nextState) {\r\n if (\r\n this.state.selectedVisitor !== nextState.selectedVisitor &&\r\n !_.isUndefined(nextState.selectedVisitor)\r\n ) {\r\n this.setState({\r\n email: nextState.selectedVisitor.email\r\n });\r\n }\r\n\r\n if (\r\n this.state.selectedTenant !== nextState.selectedTenant &&\r\n !_.isUndefined(nextState.selectedTenant)\r\n ) {\r\n this.setState({\r\n phoneNumber: nextState.selectedTenant.mobileNumber,\r\n email: nextState.selectedTenant.email\r\n });\r\n }\r\n\r\n if (\r\n (this.state.selectedTenant !== nextState.selectedTenant &&\r\n _.isUndefined(nextState.selectedTenant)) ||\r\n (this.state.selectedVisitor !== nextState.selectedVisitor &&\r\n _.isUndefined(nextState.selectedVisitor))\r\n ) {\r\n this.setState({\r\n email: \"\",\r\n phoneNumber: \"\"\r\n });\r\n }\r\n\r\n // if(this.state.selectedVisitor !== nextState.selectedVisitor && _.isUndefined(nextState.selectedVisitor)){\r\n // this.setState({\r\n // email: \"\"\r\n // });\r\n // }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n // if (this.state.selectedKey !== nextState.selectedKey) {\r\n // console.log(\"change triggered\");\r\n // this.setState({\r\n // selectedKey: nextState.selectedKey,\r\n // addresslookupId: !_.isUndefined(nextState.selectedKey)\r\n // ? nextState.selectedKey.lookupAddressId\r\n // : undefined\r\n // });\r\n // }\r\n // if (this.state.addresslookupId !== nextState.addresslookupId) {\r\n // this.setState({\r\n // addresslookupId: nextState.addresslookupId\r\n // });\r\n // }\r\n\r\n /**load keys statuses */\r\n if (\r\n prevProps.statuses !== this.props.statuses &&\r\n !_.isUndefined(this.props.statuses)\r\n ) {\r\n this.setState({\r\n statuses: this.props.statuses\r\n });\r\n }\r\n\r\n /**find over due keys */\r\n if (prevProps.keys !== this.props.keys && this.props.keys.length > 0) {\r\n // let ovKeyList = _.filter(nextProps.keys, o => o.status === \"overdue\");\r\n // this.setState({\r\n // overdueKeyList: _.filter(\r\n // _.map(ovKeyList, o => {\r\n // var addr = _.find(\r\n // nextProps.addressLookup,\r\n // address => address.id === o.lookupAddressId\r\n // );\r\n // if (!_.isUndefined(addr)) {\r\n // let item = {\r\n // id: o.id,\r\n // status: _.startCase(_.camelCase(o.status)),\r\n // address: `${addr.addr2BuildingName} ${\",\"} ${\r\n // addr.addr1FlatNumber\r\n // }`\r\n // };\r\n // return item;\r\n // }\r\n // return null;\r\n // }),\r\n // val => {\r\n // return val !== null;\r\n // }\r\n // )\r\n // });\r\n }\r\n\r\n if (\r\n prevProps.keysLog !== this.props.keysLog &&\r\n this.props.keysLog.length > 0\r\n ) {\r\n this.setState({\r\n keysLog: _.filter(this.props.keysLog, o => o !== null)\r\n });\r\n }\r\n }\r\n\r\n handleKeyLogList(data) {\r\n this.props.dispatch(keysActions.getKeyLogByKeyStatus(data));\r\n }\r\n handleChange(e) {\r\n var field = e.target.name;\r\n var value = e.target.value;\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n /**handle selected option, deselected to default option (barcode) */\r\n handleSearchOption(selected) {\r\n this.setState({\r\n searchType:\r\n this.state.searchType === selected ? searchOption.KeyCode : selected\r\n });\r\n }\r\n handleKeyPressSearch(e) {\r\n const { search, searchType } = this.state;\r\n const { addressLookup, keys } = this.props;\r\n\r\n let addr_data = undefined;\r\n let key_data = [];\r\n let keyList = [];\r\n\r\n if (e.key === \"Enter\") {\r\n if (searchType === searchOption.Address) {\r\n this.setState({\r\n validSearch: true\r\n });\r\n\r\n /**Find address from lookup */\r\n addr_data = _.find(\r\n addressLookup,\r\n address =>\r\n address.addr1FlatNumber.toLowerCase() === search.toLowerCase()\r\n );\r\n\r\n /**Match addresslookup id to key addresslookid */\r\n key_data = !_.isUndefined(addr_data)\r\n ? _.filter(keys, item => item.lookupAddressId === addr_data.id)\r\n : [];\r\n\r\n /**for each key record foun, re form data to custom list for display */\r\n keyList = _.filter(\r\n _.map(key_data, data => {\r\n if (data.lookupAddressId === addr_data.id) {\r\n let key_Addr = {\r\n id: data.id,\r\n status: _.startCase(_.camelCase(data.status)),\r\n address: `${addr_data.addr2BuildingName} ${\",\"} ${\r\n addr_data.addr1FlatNumber\r\n }`\r\n };\r\n return key_Addr;\r\n }\r\n return null;\r\n }),\r\n item => item !== null\r\n );\r\n } else if (searchType === searchOption.Resident) {\r\n this.setState({\r\n validSearch: true\r\n });\r\n\r\n /**Check search data for paired name value */\r\n var split = search\r\n .trim()\r\n .split(\" \")\r\n .filter(value => {\r\n return value !== \"\";\r\n });\r\n\r\n let residents = [];\r\n\r\n /**First name condition used */\r\n if (split.length === 1) {\r\n residents = _.filter(\r\n this.props.residents,\r\n item =>\r\n item.firstName.toLowerCase() === split[0].toLowerCase() ||\r\n item.lastName.toLowerCase() === split[0].toLowerCase()\r\n );\r\n } else if (split.length > 1) {\r\n /**paired name condition. split to first and last name */\r\n residents = _.filter(\r\n this.props.residents,\r\n item =>\r\n item.firstName.toLowerCase() === split[0].toLowerCase() &&\r\n item.lastName.toLowerCase() === split[1].toLowerCase()\r\n );\r\n }\r\n\r\n /**Filter key records with corresponding resident address lookup id value */\r\n key_data = _.filter(keys, keyItem => {\r\n let k_val = _.find(\r\n residents,\r\n r => r.addressLookupId === keyItem.lookupAddressId\r\n );\r\n\r\n return !_.isUndefined(k_val);\r\n });\r\n\r\n /**for each key record foun, re form data to custom list for display */\r\n keyList = _.map(key_data, keyItem => {\r\n let addr = _.find(\r\n addressLookup,\r\n o => o.id === keyItem.lookupAddressId\r\n );\r\n if (keyItem.lookupAddressId === addr.id) {\r\n let key_val = {\r\n id: keyItem.id,\r\n status: keyItem.status,\r\n address: `${addr.addr2BuildingName} ${\",\"} ${\r\n addr.addr1FlatNumber\r\n }`\r\n };\r\n\r\n return key_val;\r\n }\r\n\r\n return null;\r\n });\r\n } else {\r\n keyList = _.map(_.filter(keys, o => o.barcode === search), item => {\r\n let addr = _.find(\r\n addressLookup,\r\n address => address.id === item.lookupAddressId\r\n );\r\n return {\r\n id: item.id,\r\n status: item.status,\r\n address: `${addr.addr2BuildingName} ${\",\"} ${addr.addr1FlatNumber}`\r\n };\r\n });\r\n }\r\n }\r\n\r\n let logLst = _.map(keyList, o => {\r\n return { KeyId: o.id };\r\n });\r\n\r\n if (logLst && logLst.length > 0) this.handleKeyLogList(logLst);\r\n\r\n this.setState({\r\n keyList: keyList\r\n });\r\n }\r\n\r\n handleViewClick(e) {\r\n let selectKey = _.find(this.props.keys, o => o.id === e);\r\n\r\n this.setState({\r\n selectedKey: selectKey,\r\n addresslookupId: !_.isUndefined(selectKey)\r\n ? selectKey.lookupAddressId\r\n : undefined\r\n });\r\n }\r\n\r\n handleDateChange(val) {\r\n this.setState({\r\n selectedDate: val\r\n });\r\n }\r\n\r\n addValidation() {\r\n this.assignKeyValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n validate(fromSubmit = false) {\r\n this.assignKeyValidation.validate({ force: true });\r\n const valid = this.assignKeyValidation.isValid();\r\n\r\n this.setState({\r\n assignKeyFormValid: valid,\r\n assignKeyFormUsed: true\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.formReset();\r\n\r\n this.handleAssign();\r\n this.setState({\r\n assignKeyFormUsed: false\r\n });\r\n }\r\n }\r\n formReset() {\r\n this.setState({\r\n email: \"\",\r\n addresslookupId: \"\",\r\n phone: \"\",\r\n address: \"\",\r\n selectedKey: undefined,\r\n tenant: \"\",\r\n tenantId: \"\",\r\n selectedTenant: undefined,\r\n selectedDate: moment()\r\n });\r\n\r\n this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n this.refs[\"addr-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.assignKeyValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n handleAssign() {\r\n const { selectedKey, selectedTenant } = this.state;\r\n\r\n let data;\r\n if (selectedKey) {\r\n data = {\r\n keyId: selectedKey.id,\r\n memberId: this.state.tenantId,\r\n expectedDateReturn: this.state.selectedDate,\r\n recipientType: !_.isUndefined(selectedTenant)\r\n ? this.state.selectedTenant.memberType\r\n : !_.isUndefined(this.state.selectedVisitor) ? \"Visitor\" : \"\",\r\n visitorId: !_.isUndefined(this.state.selectedVisitor)\r\n ? this.state.selectedVisitor.id\r\n : \"\"\r\n };\r\n\r\n this.props.dispatch(keysActions.assignKey(data, success => { }));\r\n }\r\n }\r\n render() {\r\n const {\r\n phoneNumber,\r\n email,\r\n address,\r\n\r\n tenant,\r\n\r\n currentDate,\r\n currentTime,\r\n selectedDate,\r\n keyList\r\n } = this.state;\r\n\r\n const { keysLog, keys, addressLookup } = this.props;\r\n\r\n let currentKeyList = _.map(keyList, o => {\r\n var val = _.find(keysLog, item => item.keyId === o.id);\r\n\r\n if (o.status !== \"available\" && !_.isUndefined(val)) {\r\n let recipient = {};\r\n\r\n if (val.recipientType === \"Visitor\") {\r\n recipient = {\r\n name: `${val.visitor.firstName} ${val.visitor.surname}`\r\n };\r\n } else {\r\n recipient = {\r\n name: `${val.resident.firstName} ${val.resident.lastName}`\r\n };\r\n }\r\n\r\n return {\r\n id: val.keyId,\r\n status: _.startCase(_.camelCase(o.status)),\r\n type: val.recipientType,\r\n name: recipient ? recipient.name : \"\",\r\n address: o.address\r\n };\r\n }\r\n\r\n return {\r\n id: o.id,\r\n status: _.startCase(_.camelCase(o.status)),\r\n type: \" \",\r\n name: \" \",\r\n address: o.address\r\n };\r\n });\r\n\r\n let overdueKeyList = [];\r\n let ovKeyList = _.filter(keys, o => o.status === \"overdue\");\r\n\r\n if (ovKeyList.length > 0)\r\n overdueKeyList = _.filter(\r\n _.map(ovKeyList, o => {\r\n var addr = _.find(\r\n addressLookup,\r\n address => address.id === o.lookupAddressId\r\n );\r\n if (!_.isUndefined(addr)) {\r\n let item = {\r\n id: o.id,\r\n status: _.startCase(_.camelCase(o.status)),\r\n address: `${addr.addr2BuildingName} ${\",\"} ${\r\n addr.addr1FlatNumber\r\n }`\r\n };\r\n\r\n return item;\r\n }\r\n return null;\r\n }),\r\n val => {\r\n return val !== null;\r\n }\r\n );\r\n\r\n //console.log(this.props);\r\n //console.log(this.state);\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {/**Search form */}\r\n\r\n
    \r\n \r\n this.handleKeyPressSearch(e)}\r\n />\r\n\r\n
    \r\n {\r\n this.handleSearchOption(searchOption.Address);\r\n }}\r\n >\r\n Address\r\n
    \r\n
    \r\n {\r\n this.handleSearchOption(searchOption.Resident);\r\n }}\r\n >\r\n Name\r\n
    \r\n
    \r\n\r\n {\r\n this.handleViewClick(e)}\r\n emptyMessage=\"We could not find any keys related to your search\"\r\n />\r\n\r\n /** this.handleViewClick(e)}\r\n emptyMessage=\"We could not find any keys related to your search\"\r\n />*/\r\n }\r\n\r\n

    Keys Overdue

    \r\n\r\n {\r\n console.log(\"an overdue key has been selected\");\r\n }}\r\n emptyMessage=\"There are currently no overdue keys\"\r\n />\r\n\r\n {/** End of search form and list*/}\r\n
    \r\n {/** Key info and assign*/}\r\n\r\n {\r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n >\r\n
    \r\n {\r\n console.log(data);\r\n this.setState({\r\n tenantId: data.memberId,\r\n tenant: data.tenant,\r\n selectedTenant:\r\n data.type !== \"Visitor\"\r\n ? _.find(\r\n this.props.residents,\r\n o => o.id === data.memberId\r\n )\r\n : undefined,\r\n selectedVisitor:\r\n data.type === \"Visitor\"\r\n ? _.find(\r\n this.props.visitors,\r\n x => x.id === data.memberId\r\n )\r\n : undefined\r\n });\r\n setTimeout(() => {\r\n this.state.assignKeyFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => { }}\r\n />\r\n {/* {\r\n this.setState({\r\n tenantId: data.memberId,\r\n tenant: data.tenant,\r\n selectedTenant: _.find(\r\n this.props.residents,\r\n o => o.id === data.memberId\r\n )\r\n });\r\n setTimeout(() => {\r\n this.state.assignKeyFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => {}}\r\n />*/}\r\n
    \r\n
    \r\n {\r\n this.handleChange(e);\r\n }}\r\n value={phoneNumber}\r\n parsley={{\r\n \"data-parsley-type\": \"digits\",\r\n \"data-parsley-minlength\": 11,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid phone number\"\r\n }}\r\n />\r\n {\r\n this.handleChange(e);\r\n }}\r\n value={email}\r\n parsley={{\r\n \"data-parsley-type\": \"email\",\r\n \"data-parsley-validate-if-empty\": false,\r\n \"data-parsley-error-message\": \"Please enter a valid email\"\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.setState({\r\n addresslookupId: data.addresslookupId,\r\n address: data.address\r\n });\r\n setTimeout(() => {\r\n this.state.assignKeyFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => { }}\r\n />\r\n
    \r\n
    \r\n
    \r\n this.handleChange(e)}\r\n />\r\n this.handleChange(e)}\r\n />\r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n {this.props.keyActionStatus &&\r\n !_.isUndefined(this.props.keyActionStatus.action) &&\r\n (this.props.keyActionStatus.action === true ? (\r\n

    Key Assigned

    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}

    \r\n )\r\n ))}\r\n
    \r\n
    \r\n
    \r\n { }}\r\n rightClick={e => {\r\n this.validate(true);\r\n }}\r\n />\r\n
    \r\n \r\n }\r\n\r\n {/**End of key assign section */}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n keys: keySelectors.loadAllKeys(state),\r\n addressLookup: addressLookupSelectors.getAddresses(state),\r\n residents: residentSelectors.getResidents(state),\r\n keyActionStatus: keySelectors.getKeyActionStatus(state),\r\n assignedKey: keySelectors.assignedKey(state),\r\n statuses: keySelectors.loadkeyStatuses(state),\r\n keysLog: keySelectors.loadKeysLog(state),\r\n visitors: visitorSelectors.getVisitors(state)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\r\n keysTestScreen\r\n);\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autobind from \"react-autobind\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport * as $ from \"jquery\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\n\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\nimport AddressLookUp from \"../../../components/AddrLookUpAutoSuggest/AddrLookUpAutoSuggest\";\r\n\r\nimport ResidentVisitorAutoSelect from \"../../../components/TenantAutoSuggest/ResidentVisitorAutoSuggest\";\r\nimport * as keysActions from \"../../../store/Keys/actions\";\r\nimport * as keySelectors from \"../../../store/Keys/reducer\";\r\nimport * as addressLookupActions from \"../../../store/AddressLookUp/actions\";\r\nimport * as addressLookupSelectors from \"../../../store/AddressLookUp/reducer\";\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\nimport * as visitorSelectors from \"../../../store/Visitors/reducer\";\r\n\r\nimport \"../../../sass/containers/Keys/index.css\";\r\nimport \"../../../sass/components/DateTimePicker/index.css\";\r\n\r\nclass KeyAssignScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type: \"keys\",\r\n validSearch: false,\r\n keyList: [],\r\n overlayColor: \"\",\r\n keyId: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.keyId\r\n : \"\",\r\n phoneNumber: \"\",\r\n email: \"\",\r\n currentDate: moment(new Date()).format(\"DD/MM/YYYY\"),\r\n currentTime: moment(new Date()).format(\"HH:mm \"),\r\n expectedReturnDate: \"\",\r\n name: \"\",\r\n addresslookupId: \"\",\r\n address: \"\",\r\n selectedKey: undefined,\r\n tenant: \"\",\r\n tenantId: \"\",\r\n selectedTenant: undefined,\r\n selectedVisitor: undefined,\r\n selectedDate: moment(),\r\n status: \"\"\r\n };\r\n\r\n this.props.dispatch(keysActions.getAllKeys());\r\n this.props.dispatch(keysActions.getKeyStatuses());\r\n this.props.dispatch(residentActions.getAllResidents());\r\n this.props.dispatch(addressLookupActions.loadAddresses());\r\n this.assignKeyValidation = null;\r\n autobind(this);\r\n }\r\n\r\n componentWillMount() {\r\n \r\n }\r\n\r\n componentDidMount() {\r\n this.addValidation();\r\n\r\n let overlayColor;\r\n let currentModule = _.find(this.props.modules, o => o.title === \"Keys\");\r\n overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\r\n this.setState({\r\n overlayColor: overlayColor\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.assignKeyValidation.destroy();\r\n }\r\n componentWillUpdate(nextProps, nextState) {\r\n \r\n\r\n // if(this.state.selectedVisitor !== nextState.selectedVisitor && _.isUndefined(nextState.selectedVisitor)){\r\n // this.setState({\r\n // email: \"\"\r\n // });\r\n // }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.keys !== this.props.keys && this.props.keys.length > 0) {\r\n let currentKey = _.find(this.props.keys, { id: this.state.keyId });\r\n this.setState({\r\n selectedKey: currentKey\r\n });\r\n }\r\n if (\r\n this.state.selectedVisitor !== prevState.selectedVisitor &&\r\n !_.isUndefined(this.state.selectedVisitor)\r\n ) {\r\n this.setState({\r\n email: this.state.selectedVisitor.email\r\n });\r\n }\r\n\r\n if (\r\n this.state.selectedTenant !== prevState.selectedTenant &&\r\n !_.isUndefined(this.state.selectedTenant)\r\n ) {\r\n this.setState({\r\n phoneNumber: this.state.selectedTenant.mobileNumber,\r\n email: this.state.selectedTenant.email\r\n });\r\n }\r\n\r\n if (\r\n (this.state.selectedTenant !== prevState.selectedTenant &&\r\n _.isUndefined(this.state.selectedTenant)) ||\r\n (this.state.selectedVisitor !== prevState.selectedVisitor &&\r\n _.isUndefined(this.state.selectedVisitor))\r\n ) {\r\n this.setState({\r\n email: \"\",\r\n phoneNumber: \"\"\r\n });\r\n }\r\n }\r\n\r\n handleChange(e) {\r\n var field = e.target.name;\r\n var value = e.target.value;\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n handleDateChange(val) {\r\n this.setState({\r\n selectedDate: val\r\n });\r\n }\r\n\r\n addValidation() {\r\n this.assignKeyValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n validate(fromSubmit = false) {\r\n this.assignKeyValidation.validate({ force: true });\r\n const valid = this.assignKeyValidation.isValid();\r\n\r\n this.setState({\r\n assignKeyFormValid: valid,\r\n assignKeyFormUsed: true\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.formReset();\r\n\r\n this.handleAssign();\r\n this.setState({\r\n assignKeyFormUsed: false\r\n });\r\n }\r\n }\r\n formReset() {\r\n this.setState({\r\n email: \"\",\r\n addresslookupId: \"\",\r\n phoneNumber: \"\",\r\n address: \"\",\r\n tenant: \"\",\r\n tenantId: \"\",\r\n selectedTenant: undefined,\r\n selectedVisitor: undefined,\r\n selectedDate: moment()\r\n });\r\n\r\n //deprecated \r\n //this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n //this.refs[\"addr-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.assignKeyValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n handleAssign() {\r\n const { selectedKey, selectedTenant } = this.state;\r\n\r\n let data;\r\n if (selectedKey) {\r\n data = {\r\n keyId: selectedKey.id,\r\n memberId: this.state.tenantId,\r\n expectedDateReturn: this.state.selectedDate,\r\n recipientType: !_.isUndefined(selectedTenant)\r\n ? this.state.selectedTenant.memberType\r\n : !_.isUndefined(this.state.selectedVisitor) ? \"Visitor\" : \"\",\r\n visitorId: !_.isUndefined(this.state.selectedVisitor)\r\n ? this.state.selectedVisitor.id\r\n : \"\"\r\n };\r\n\r\n this.props.dispatch(\r\n keysActions.assignKey(data, success => {\r\n if (success === true) {\r\n\r\n let notifyData = {\r\n keyId: data.keyId,\r\n memberId: data.memberId,\r\n dateAssigned: moment().format(\"YYYY-MM-DD HH:mm\"),\r\n visitorId: data.visitorId,\r\n recipientType: data.recipientType\r\n };\r\n this.props.dispatch(keysActions.sendKeyAssignedNotification(notifyData, status => {\r\n if (status === true) {\r\n setTimeout(() => {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: \"Keys\" }\r\n });\r\n }, 1001);\r\n window.scrollTo(0, 0);\r\n } else {\r\n this.setState({\r\n error: \"unable to send email\"\r\n })\r\n }\r\n }))\r\n\r\n } else {\r\n this.setState({\r\n error: \"Sorry! unable to assign key! \"\r\n });\r\n }\r\n })\r\n );\r\n }\r\n }\r\n render() {\r\n const {\r\n phoneNumber,\r\n email,\r\n tenant,\r\n selectedTenant,\r\n currentDate,\r\n currentTime,\r\n selectedDate\r\n } = this.state;\r\n\r\n const currentModule = _.find(this.props.modules, o => o.title === \"Keys\");\r\n\r\n // console.log(this.props);\r\n // console.log(this.state);\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {\r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n >\r\n
    \r\n {/**Uncoment to replace, component includes visitor on lookup */}\r\n {\r\n this.setState({\r\n tenantId: data.memberId,\r\n tenant: data.tenant,\r\n selectedTenant:\r\n data.type !== \"Visitor\"\r\n ? _.find(\r\n this.props.residents,\r\n o => o.id === data.memberId\r\n )\r\n : undefined,\r\n selectedVisitor:\r\n data.type === \"Visitor\"\r\n ? _.find(\r\n this.props.visitors,\r\n x => x.id === data.memberId\r\n )\r\n : undefined\r\n });\r\n setTimeout(() => {\r\n this.state.assignKeyFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => { }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.handleChange(e);\r\n }}\r\n value={\r\n !_.isUndefined(selectedTenant)\r\n ? !selectedTenant.mobileNumber ? \"\" : selectedTenant.mobileNumber\r\n : !phoneNumber ? \"\" : phoneNumber\r\n }\r\n parsley={{\r\n // \"data-parsley-type\": \"digits\",\r\n \"data-parsley-minlength\": 11,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid phone number\"\r\n }}\r\n />\r\n {\r\n this.handleChange(e);\r\n }}\r\n value={\r\n !_.isUndefined(selectedTenant)\r\n ? selectedTenant.email\r\n : email\r\n }\r\n parsley={{\r\n \"data-parsley-type\": \"email\",\r\n \"data-parsley-validate-if-empty\": false,\r\n \"data-parsley-error-message\": \"Please enter a valid email\"\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.setState({\r\n addresslookupId: data.addresslookupId,\r\n address: data.address\r\n });\r\n setTimeout(() => {\r\n this.state.assignKeyFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => { }}\r\n />\r\n
    \r\n
    \r\n
    \r\n this.handleChange(e)}\r\n />\r\n this.handleChange(e)}\r\n />\r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n {this.props.keyActionStatus &&\r\n !_.isUndefined(this.props.keyActionStatus.action) &&\r\n (this.props.keyActionStatus.action === true ? (\r\n

    Key Assigned.

    {!_.isUndefined(this.props.notifyStatus) && this.props.notifyStatus === true ?

    Notification sent...

    :\r\n

    {_.isUndefined(this.props.notifyStatus) ? \"\" : \"Notification unsuccessfull...\"}

    }
    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}

    \r\n )\r\n ))}\r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: \"Keys\" }\r\n });\r\n }}\r\n rightClick={e => {\r\n this.validate(true);\r\n }}\r\n />\r\n
    \r\n \r\n }\r\n\r\n {/**End of key assign section */}\r\n
    \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n keys: keySelectors.loadAllKeys(state),\r\n addressLookup: addressLookupSelectors.getAddresses(state),\r\n residents: residentSelectors.getResidents(state),\r\n keyActionStatus: keySelectors.getKeyActionStatus(state),\r\n visitors: visitorSelectors.getVisitors(state),\r\n modules: moduleSelectors.loadModules(state),\r\n notifyStatus: keySelectors.getNotificationSentsuccess(state)\r\n };\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(\r\n KeyAssignScreen\r\n));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autobind from \"react-autobind\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport * as $ from \"jquery\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport Button from \"../../../components/Button/Button\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\nimport * as keysActions from \"../../../store/Keys/actions\";\r\nimport * as keySelectors from \"../../../store/Keys/reducer\";\r\nimport * as addressLookupActions from \"../../../store/AddressLookUp/actions\";\r\nimport * as addressLookupSelectors from \"../../../store/AddressLookUp/reducer\";\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\n\r\n\r\nimport * as moduleActions from \"../../../store/ServiceModules/actions\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\n\r\nimport DataList from \"../../../components/DetailList/DetailList\";\r\nimport DataListMulti from \"../../../components/DetailList/DetailList5Column\";\r\nimport \"../../../sass/containers/Keys/index.css\";\r\nimport \"../../../sass/components/DateTimePicker/index.css\";\r\n\r\n\r\nclass KeyProfileScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type: \"keys\",\r\n keyId: \"\",\r\n overlayColor: \"\",\r\n keyBarcode: \"\",\r\n phoneNumber: \"\",\r\n email: \"\",\r\n currentDate: moment(new Date()).format(\"DD/MM/YYYY\"),\r\n currentTime: moment(new Date()).format(\"HH:mm \"),\r\n dateReturned: undefined,\r\n dateAssigned: undefined,\r\n timeAssigned: undefined,\r\n expectedReturnDate: moment(),\r\n name: \"\",\r\n selectedKey: \"\",\r\n selectedKeyLog: undefined,\r\n topLink: false,\r\n archive: \"\",\r\n keys: this.props.keys\r\n };\r\n \r\n if(this.props.keys == undefined || this.props.keys.length <= 0 ){\r\n this.props.dispatch(keysActions.getAllKeys());\r\n }\r\n\r\n this.props.dispatch(keysActions.getKeyStatuses());\r\n this.props.dispatch(residentActions.getAllResidents());\r\n this.props.dispatch(addressLookupActions.loadAddresses());\r\n this.props.dispatch(moduleActions.loadModules());\r\n this.updateKeyValidation = null;\r\n autobind(this);\r\n }\r\n\r\n\r\n \r\n componentDidMount() {\r\n if(this.state.keys != undefined && this.state.keys.length > 0){\r\n \r\n let currentKey = _.find(this.state.keys, o => o.id === this.props.location.state.keyId);\r\n \r\n this.setState({\r\n selectedKey: currentKey,\r\n keyBarcode: currentKey ? currentKey.barcode : \"\",\r\n status: currentKey ? currentKey.status : \"\",\r\n archive: currentKey.status\r\n });\r\n this.trackCurrentKey(currentKey.id);\r\n }\r\n\r\n const { keyId } = this.state;\r\n this.addValidation();\r\n\r\n let overlayColor;\r\n let currentModule = _.find(this.props.modules, o => o.title === \"Keys\");\r\n overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\r\n this.setState({\r\n overlayColor: overlayColor\r\n });\r\n\r\n \r\n if ( !_.isUndefined(this.props.location.state) && this.props.location.state.keyId) {\r\n this.props.dispatch(keysActions.loadKeyLogList(null, this.props.location.state.keyId));\r\n this.handleKeyLogList([{ keyId: this.props.location.state.keyId }]);\r\n\r\n this.setState({\r\n keyId: this.props.location.state.keyId\r\n });\r\n }\r\n \r\n }\r\n \r\n // componentWillUnmount() {\r\n // this.props.dispatch(keysActions.resetAction(\"*\"));\r\n // this.props.dispatch(keysActions.setSelectedKey(\"*\"))\r\n // }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.keys !== this.props.keys && this.props.keys.length > 0) {\r\n let currentKey = _.find(this.props.keys, o => o.id === this.state.keyId);\r\n\r\n this.setState({\r\n selectedKey: currentKey,\r\n keyBarcode: currentKey ? currentKey.barcode : \"\",\r\n status: currentKey ? currentKey.status : \"\",\r\n archive: currentKey.status,\r\n keys: this.props.keys\r\n });\r\n\r\n this.trackCurrentKey(currentKey.id);\r\n }\r\n\r\n if (prevProps.loglist !== this.props.loglist && this.props.loglist.length > 0) {\r\n let currentKeyLog = this.props.loglist[0];\r\n\r\n if (currentKeyLog) {\r\n let keyRecipient = {};\r\n\r\n if (currentKeyLog.recipientType !== \"Visitor\") {\r\n keyRecipient = {\r\n name: `${currentKeyLog.resident.firstName} ${\r\n currentKeyLog.resident.lastName\r\n }`,\r\n email: currentKeyLog.resident.email,\r\n phoneNumber: !currentKeyLog.resident.mobileNumber ? \"\" : currentKeyLog.resident.mobileNumber\r\n };\r\n } else {\r\n keyRecipient = {\r\n name: `${currentKeyLog.visitor.firstName} ${\r\n currentKeyLog.visitor.surname\r\n }`,\r\n email: currentKeyLog.visitor.email,\r\n phoneNumber: \"\"\r\n };\r\n }\r\n console.log(\"selected: \",currentKeyLog);\r\n this.setState({\r\n selectedKeyLog: currentKeyLog,\r\n name: keyRecipient.name,\r\n phoneNumber: !keyRecipient.phoneNumber ? \"\" : keyRecipient.phoneNumber,\r\n email: keyRecipient.email,\r\n expectedReturnDate: moment(currentKeyLog.expectedDateReturn),\r\n dateAssigned: moment(currentKeyLog.dateTimeReceived).format(\"DD/MM/YYYY\"),\r\n timeAssigned: moment.utc(currentKeyLog.dateTimeReceived).format(\"HH:mm \")\r\n });\r\n }\r\n }\r\n\r\n if (\r\n this.state.topLink !== prevState.topLink &&\r\n this.state.topLink === true\r\n ) {\r\n this.onStartTop();\r\n }\r\n\r\n if (this.state.keyId !== prevState.keyId && this.state.keyId) {\r\n this.trackCurrentKey(this.state.keyId);\r\n this.props.dispatch(keysActions.loadKeyLogList(null, this.state.keyId));\r\n }\r\n\r\n if (this.props.keyActionStatus !== prevProps.keyActionStatus) {\r\n this.props.dispatch(keysActions.getAllKeys());\r\n }\r\n\r\n }\r\n\r\n onStartTop() {\r\n window.scrollTo(0, 0);\r\n this.setState({\r\n topLink: false\r\n });\r\n }\r\n\r\n handleChange(e) {\r\n var field = e.target.name;\r\n var value = e.target.value;\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n trackCurrentKey(id) {\r\n this.props.dispatch(keysActions.setSelectedKey(id, success => {\r\n \r\n }));\r\n \r\n this.handleKeyLogList([{ keyId: id }]);\r\n \r\n }\r\n handleKeyLogList(data) {\r\n this.props.dispatch(keysActions.getKeyLogByKeyStatus(data));\r\n }\r\n handleHistoryView(e) { }\r\n\r\n handleViewClick(e) {\r\n this.setState({\r\n topLink: true\r\n });\r\n this.props.history.push({\r\n pathname: \"/concierge/keys/profile\",\r\n state: {\r\n keyId: e\r\n }\r\n });\r\n\r\n let updateCurrentKey = _.find(this.props.keys, item => item.id === e);\r\n this.setState({\r\n keyId: e,\r\n selectedKey: updateCurrentKey,\r\n keyBarcode: updateCurrentKey ? updateCurrentKey.barcode : \"\",\r\n status: updateCurrentKey ? updateCurrentKey.status : \"\"\r\n });\r\n\r\n this.handleKeyLogList([{ keyId: e }]);\r\n }\r\n addValidation() {\r\n this.updateKeyValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n\r\n validate(fromSubmit = false) {\r\n this.props.history.push({\r\n pathname: \"/concierge/keys/assign\",\r\n state: { keyId: this.state.keyId }\r\n });\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n validateReturn(fromSubmit = false) {\r\n this.props.history.push({\r\n pathname: \"/concierge/keys/return\",\r\n state: {\r\n keyId: this.state.keyId,\r\n keyLogId: this.state.selectedKeyLog.keyLogId\r\n }\r\n });\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n validateStatus(fromSubmit = false) {\r\n this.updateKeyValidation.validate({ force: true });\r\n const valid = this.updateKeyValidation.isValid();\r\n\r\n this.setState({\r\n updateKeyFormValid: valid,\r\n updateKeyFormUsed: false\r\n });\r\n\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.formReset();\r\n\r\n this.handleUpdate({\r\n keyId: this.state.keyId,\r\n status: this.state.archive.toLowerCase()\r\n });\r\n this.setState({\r\n updateKeyFormUsed: true\r\n });\r\n\r\n setTimeout(() => {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: \"Keys\" }\r\n });\r\n window.scrollTo(0, 0);\r\n }, 5001);\r\n\r\n }\r\n }\r\n formReset() {\r\n this.setState({\r\n archive: \"\"\r\n });\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.updateKeyValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n\r\n handleUpdate(data) {\r\n this.props.dispatch(keysActions.updateKeyStatus(data), success => {\r\n if (success === true) {\r\n \r\n }\r\n });\r\n }\r\n formatString(str) {\r\n if (str && str.length > 10) {\r\n return str.substr(0, 4) + \"...\" + str.substr(str.length - 3, str.length);\r\n }\r\n return str;\r\n }\r\n\r\n handleReturn() {\r\n\r\n }\r\n\r\n render() {\r\n const {\r\n phoneNumber,\r\n email,\r\n name,\r\n overlayColor,\r\n selectedKey,\r\n dateAssigned,\r\n timeAssigned,\r\n expectedReturnDate,\r\n keys\r\n } = this.state;\r\n\r\n const { addressLookup, keyHistory } = this.props;\r\n\r\n const keyStyle = {\r\n color: overlayColor\r\n };\r\n\r\n \r\n const currentModule = _.find(this.props.modules, o => o.title === \"Keys\");\r\n\r\n\r\n\r\n /**Get address for current key profile */\r\n let address = selectedKey\r\n ? _.find(addressLookup, addr => addr.id === selectedKey.lookupAddressId)\r\n : \"\";\r\n\r\n /**Get related key, filter keys with selected key lookup address id */\r\n let relatedKeys = selectedKey\r\n ? _.filter(\r\n _.map(\r\n _.filter(\r\n keys,\r\n item => item.lookupAddressId === selectedKey.lookupAddressId\r\n ),\r\n keyItem => {\r\n let addr = _.find(addressLookup, { id: keyItem.lookupAddressId });\r\n if (keyItem.id !== selectedKey.id)\r\n return {\r\n id: keyItem.id,\r\n barcode: keyItem.barcode,\r\n address: addr\r\n ? `${addr.addr1FlatNumber} ${addr.addr2BuildingName}`\r\n : \"\"\r\n };\r\n\r\n return null;\r\n }\r\n ),\r\n o => o !== null\r\n )\r\n : [];\r\n\r\n /**compile keyHistry to object format needed using map */\r\n let keyHistoryList = _.take(\r\n _.map(keyHistory, logItem => {\r\n /**Find the address id look for key */\r\n let keyData = _.find(keys, o => o.id === logItem.keyId);\r\n let keyAddr = _.find(\r\n addressLookup,\r\n addr => addr.id === keyData.lookupAddressId\r\n );\r\n\r\n return {\r\n id: logItem.keyLogId,\r\n status: logItem.status,\r\n name: `${logItem.firstName} ${logItem.lastName}`,\r\n type: logItem.recipientType,\r\n address: `${keyAddr.addr1FlatNumber}${\r\n keyAddr.addr2BuildingName ? \", \" + keyAddr.addr2BuildingName : \"\"\r\n }`, \r\n dateAssigned: !_.isUndefined(logItem.dateAssigned)\r\n ? moment(logItem.dateAssigned).format(\"DD/MM/YYYY\")\r\n : \"\",\r\n dateReturned: !_.isUndefined(logItem.dateReturned) && (logItem.dateReturned > logItem.dateAssigned)\r\n ? moment(logItem.dateReturned).format(\"DD/MM/YYYY\")\r\n : \"\"\r\n\r\n };\r\n\r\n }),\r\n 5\r\n );\r\n let ArchiveStatus = [\r\n { value: \"faulty\", label: \"Faulty\" },\r\n { value: \"lost\", label: \"Lost\" }\r\n ];\r\n\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {address\r\n ? `${address.addr1FlatNumber} ${address.addr2BuildingName} `\r\n : \"\"}\r\n \r\n\r\n {this.state.status === \"assigned\" ||\r\n this.state.status === \"overdue\" ? (\r\n
    \r\n
    \r\n {\r\n this.handleChange(e);\r\n }}\r\n value={name}\r\n />\r\n
    \r\n
    \r\n {\r\n this.handleChange(e);\r\n }}\r\n value={phoneNumber}\r\n\r\n />\r\n\r\n {\r\n this.handleChange(e);\r\n }}\r\n value={email}\r\n parsley={{\r\n \"data-parsley-type\": \"email\",\r\n \"data-parsley-validate-if-empty\": false,\r\n \"data-parsley-error-message\": \"Please enter a valid email\"\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n this.handleChange(e)}\r\n />\r\n this.handleChange(e)}\r\n />\r\n
    \r\n\r\n \r\n
    \r\n\r\n
    \r\n this.validateReturn(true, e)}\r\n />\r\n
    \r\n
    \r\n ) : (\r\n
    \r\n this.validate(true, e)}\r\n isDisabled={this.state.status === \"faulty\" || this.state.status === \"lost\" ? true : false}\r\n />\r\n
    \r\n )}\r\n\r\n
    \r\n

    Keys History

    \r\n\r\n
    \r\n this.handleHistoryView(e)}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n

    Related Keys

    \r\n {\r\n
    \r\n this.handleViewClick(e)}\r\n />\r\n
    \r\n }\r\n
    \r\n\r\n
    \r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n >\r\n

    Key Archive

    \r\n\r\n {\r\n this.handleChange(e);\r\n\r\n\r\n !_.isUndefined(e.target.label) &&\r\n this.setState({ archive: e.target.label });\r\n\r\n this.validateStatus();\r\n }}\r\n options={ArchiveStatus}\r\n parsley={{\r\n \"data-parsley-required\": true,\r\n \"data-parsley-error-message\": \"Please select status\"\r\n }}\r\n />\r\n \r\n
    \r\n {this.props.keyActionStatus &&\r\n !_.isUndefined(this.props.keyActionStatus.action) &&\r\n (this.state.updateKeyFormUsed && this.state.updateKeyFormUsed === true) && (this.state.updateKeyFormValid && this.state.updateKeyFormValid === true) ? (\r\n

    Key Archived

    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}

    \r\n )\r\n )}\r\n
    \r\n
    \r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: \"Keys\" }\r\n });\r\n window.scrollTo(0, 0);\r\n }}\r\n rightClick={e => {\r\n this.validateStatus(true);\r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n keys: keySelectors.loadAllKeys(state),\r\n addressLookup: addressLookupSelectors.getAddresses(state),\r\n residents: residentSelectors.getResidents(state),\r\n keyActionStatus: keySelectors.getKeyActionStatus(state),\r\n keyLog: keySelectors.loadKeysLog(state),\r\n loglist: keySelectors.getKeyLogList(state),\r\n modules: moduleSelectors.loadModules(state),\r\n keyHistory: keySelectors.getKeyLogList(state)\r\n };\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(\r\n KeyProfileScreen\r\n));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autobind from \"react-autobind\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport * as $ from \"jquery\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\nimport AddressLookUp from \"../../../components/AddrLookUpAutoSuggest/AddrLookUpAutoSuggest\";\r\nimport * as keysActions from \"../../../store/Keys/actions\";\r\nimport * as keySelectors from \"../../../store/Keys/reducer\";\r\nimport * as addressLookupActions from \"../../../store/AddressLookUp/actions\";\r\nimport * as addressLookupSelectors from \"../../../store/AddressLookUp/reducer\";\r\nimport * as residentActions from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\n\r\nimport \"../../../sass/containers/Keys/index.css\";\r\nimport \"../../../sass/components/DateTimePicker/index.css\";\r\n\r\nclass KeyReturnScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type: \"keys\",\r\n keyList: [],\r\n overlayColor: \"\",\r\n keyId: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.keyId\r\n : \"\",\r\n keyLogId: !_.isUndefined(this.props.location.state)\r\n ? this.props.location.state.keyLogId\r\n : \"\",\r\n phoneNumber: \"\",\r\n email: \"\",\r\n currentDate: moment(new Date()).format(\"DD/MM/YYYY\"),\r\n currentTime: moment(new Date()).format(\"HH:mm \"),\r\n name: \"\",\r\n addresslookupId: undefined,\r\n address: \"\",\r\n selectedKey: undefined,\r\n tenant: \"\",\r\n recipient: undefined,\r\n dateTimeReceived: moment(),\r\n expectedDateReturn: moment(),\r\n selectedKeyLog: undefined\r\n };\r\n\r\n this.props.dispatch(keysActions.getAllKeys());\r\n this.props.dispatch(keysActions.getKeyStatuses());\r\n this.props.dispatch(residentActions.getAllResidents());\r\n this.props.dispatch(addressLookupActions.loadAddresses());\r\n this.returnKeyValidation = null;\r\n autobind(this);\r\n }\r\n\r\n componentWillMount() {\r\n let overlayColor;\r\n let currentModule = _.find(this.props.modules, o => o.title === \"Keys\");\r\n overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\r\n this.setState({\r\n overlayColor: overlayColor\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n const { keyId } = this.state;\r\n this.addValidation();\r\n if (keyId) {\r\n this.handleKeyLogList([{ keyId: keyId }]);\r\n }\r\n\r\n}\r\n\r\n componentWillUnmount() {\r\n this.returnKeyValidation.destroy();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.keys !== this.props.keys && this.props.keys.length > 0) {\r\n let currentKey = _.find(this.props.keys, { id: this.state.keyId });\r\n this.setState({\r\n selectedKey: currentKey\r\n });\r\n }\r\n\r\n if (prevProps.keyLog !== this.props.keyLog && this.props.keyLog.length > 0) {\r\n let currentKeyLog = _.find(this.props.keyLog, { id : this.state.keyId });\r\n\r\n if (!_.isUndefined(currentKeyLog)) {\r\n let keyRecipient = {};\r\n\r\n if (currentKeyLog.recipientType === \"Visitor\") {\r\n keyRecipient = {\r\n name: `${currentKeyLog.visitor.firstName} ${\r\n currentKeyLog.visitor.surname\r\n }`,\r\n phoneNumber: \"\",\r\n email: currentKeyLog.visitor.email\r\n };\r\n } else {\r\n keyRecipient = {\r\n name: `${currentKeyLog.resident.firstName} ${\r\n currentKeyLog.resident.lastName\r\n }`,\r\n phoneNumber: !currentKeyLog.resident.mobileNumber ? \"\" : currentKeyLog.resident.mobileNumber,\r\n email: currentKeyLog.resident.email\r\n };\r\n }\r\n \r\n this.setState({\r\n selectedKeyLog: currentKeyLog,\r\n name: `${keyRecipient.name}`,\r\n phoneNumber: keyRecipient.phoneNumber,\r\n email: keyRecipient.email,\r\n expectedDateReturn: moment(currentKeyLog.expectedDateReturn),\r\n dateTimeReceived: moment(currentKeyLog.dateTimeReceived)\r\n });\r\n }\r\n }\r\n }\r\n handleKeyLogList(data) {\r\n this.props.dispatch(keysActions.getKeyLogByKeyStatus(data));\r\n }\r\n\r\n handleChange(e) {\r\n var field = e.target.name;\r\n var value = e.target.value;\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n handleDateChange(val) {\r\n this.setState({\r\n selectedDate: val\r\n });\r\n }\r\n\r\n addValidation() {\r\n this.returnKeyValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n validate(fromSubmit = false) {\r\n this.returnKeyValidation.validate({ force: true });\r\n const valid = this.returnKeyValidation.isValid();\r\n\r\n this.setState({\r\n returnKeyFormValid: valid,\r\n returnKeyFormUsed: true\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.handleReturn();\r\n this.formReset();\r\n this.setState({\r\n returnKeyFormUsed: false\r\n });\r\n setTimeout(() => {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: \"Keys\" }\r\n });\r\n }, 1001);\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n formReset() {\r\n this.setState({\r\n email: \"\",\r\n addresslookupId: \"\",\r\n phoneNumber: \"\",\r\n address: \"\",\r\n selectedKey: undefined,\r\n name: \"\",\r\n keyId: undefined,\r\n keyLogId: \"\",\r\n selectedTenant: undefined,\r\n expectedDateReturn: moment(),\r\n dateTimeReceived: moment()\r\n });\r\n\r\n //this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n // this.refs[\"addr-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.returnKeyValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n\r\n handleReturn() {\r\n const { keyId, keyLogId } = this.state;\r\n\r\n var data = {\r\n keyId: keyId,\r\n keyLogId: keyLogId\r\n };\r\n\r\n this.props.dispatch(keysActions.returnKey(data, success => {\r\n if (success === true) {\r\n this.props.dispatch(keysActions.sendKeyReturnNotification(data, complete => {\r\n if (complete === true) { }\r\n }));\r\n }\r\n }));\r\n }\r\n render() {\r\n const {\r\n phoneNumber,\r\n email,\r\n address,\r\n name,\r\n currentTime,\r\n dateTimeReceived,\r\n expectedDateReturn\r\n } = this.state;\r\n\r\n const currentModule = _.find(this.props.modules, o => o.title === \"Keys\");\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {\r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n style={{ marginTop: 56 }}\r\n >\r\n
    \r\n {\r\n this.handleChange(e);\r\n }}\r\n value={name}\r\n // parsley={{\r\n // \"data-parsley-type\": \"Alphanum\",\r\n // \"data-parsley-validate-if-empty\": false,\r\n // \"data-parsley-error-message\": \"Please enter a valid name\"\r\n // }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.handleChange(e);\r\n }}\r\n value={phoneNumber}\r\n parsley={{\r\n \"data-parsley-type\": \"digits\",\r\n \"data-parsley-minlength\": 11,\r\n \"data-parsley-error-message\":\r\n \"Please enter a valid phone number\"\r\n }}\r\n />\r\n {\r\n this.handleChange(e);\r\n }}\r\n value={email}\r\n parsley={{\r\n \"data-parsley-type\": \"email\",\r\n \"data-parsley-validate-if-empty\": false,\r\n \"data-parsley-error-message\": \"Please enter a valid email\"\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.setState({\r\n addresslookupId: data.addresslookupId,\r\n address: data.address\r\n });\r\n setTimeout(() => {\r\n this.state.returnKeyFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => { }}\r\n />\r\n
    \r\n
    \r\n
    \r\n this.handleChange(e)}\r\n />\r\n this.handleChange(e)}\r\n />\r\n
    \r\n
    \r\n \r\n\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {this.props.keyActionStatus &&\r\n !_.isUndefined(this.props.keyActionStatus.action) &&\r\n (this.props.keyActionStatus.action === true ? (\r\n

    Key returned

    \r\n ) : (\r\n this.state.error && (\r\n

    {this.state.error}

    \r\n )\r\n ))}\r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: \"Keys\" }\r\n });\r\n window.scrollTo(0, 0);\r\n }}\r\n rightClick={e => {\r\n this.validate(true);\r\n }}\r\n />\r\n
    \r\n \r\n }\r\n\r\n {/**End of key assign section */}\r\n
    \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n keys: keySelectors.loadAllKeys(state),\r\n addressLookup: addressLookupSelectors.getAddresses(state),\r\n residents: residentSelectors.getResidents(state),\r\n keyActionStatus: keySelectors.getKeyActionStatus(state),\r\n keyLog: keySelectors.loadKeysLog(state),\r\n modules: moduleSelectors.loadModules(state)\r\n };\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(\r\n KeyReturnScreen\r\n));\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Autosuggest from 'react-autosuggest';\r\nimport InputComponent from '../../components/Input/Input';\r\n// import Parsley from \"parsleyjs\";\r\nimport PropTypes from 'prop-types';\r\nimport * as tenantActions from '../../store/Tenants/actions';\r\nimport * as tenantSelector from '../../store/Tenants/reducer';\r\n\r\nimport * as residentActions from '../../store/Residents/actions';\r\nimport * as residentSelectors from '../../store/Residents/reducer';\r\n\r\nimport _ from 'lodash';\r\nimport autoBind from 'react-autobind';\r\nimport * as $ from 'jquery';\r\n\r\n/**\r\n * Pairs up an 0 &&\r\n\t\t\t!_.isUndefined(nextProps.defaultTenantId) &&\r\n\t\t\tthis.selectedTenantFromDefault === false\r\n\t\t) {\r\n\t\t\tthis.selectedTenantFromDefault = true;\r\n\r\n\t\t\tconst startTenant = nextProps.residents.find((tenant) => {\r\n\t\t\t\treturn tenant.id === nextProps.defaultTenantId;\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleTenantSelected(startTenant);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalue: startTenant.firstName + ' ' + startTenant.lastName,\r\n\t\t\t\tvalid: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (nextProps.residents && nextProps.residents.length > 0) {\r\n\t\t\tlet lookupMember =\r\n\t\t\t\tnextProps.tenants && nextProps.tenants.length > 0\r\n\t\t\t\t\t? _.map(nextProps.tenants, (o) => {\r\n\t\t\t\t\t\t\tlet resident = _.find(nextProps.residents, { id: o.id });\r\n\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\t\t\temail: o.email,\r\n\t\t\t\t\t\t\t\tfirstName: o.firstName,\r\n\t\t\t\t\t\t\t\tlastName: o.lastName,\r\n\t\t\t\t\t\t\t\ttype: resident.memberType,\r\n\t\t\t\t\t\t\t\taddress: resident.addressLine1 + ' ' + resident.addressLine2 + ', ' + resident.postCode,\r\n\t\t\t\t\t\t\t\tcompanyName: o.companyName\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t: [];\r\n\t\t\tlet lookupArray = lookupMember;\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tlookupMembers: lookupArray\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.setState(this.defaultState);\r\n\t}\r\n\r\n\t// Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n\tgetSuggestionValue(suggestion) {\r\n\t\t// const { name } = this.state;\r\n\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t\tif (suggestion) this.setState({ disabled: '' });\r\n\r\n\t\treturn `${suggestion.firstName} ${suggestion.lastName}`;\r\n\t}\r\n\r\n\tgetSuggestions(val) {\r\n\t\t//const { tenants } = this.props;\r\n\t\tconst { lookupMembers } = this.state;\r\n\r\n\t\tif (!lookupMembers) return [];\r\n\t\t//if (!tenants) return [];\r\n\r\n\t\t//safe guard residents data return null value in some records\r\n\t\tvar data_ = _.reject(lookupMembers, obj => {\r\n\t\t\treturn obj.firstName == null || _.isUndefined(obj.firstName);\r\n\t\t});\r\n\r\n\t\tvar data_l = _.reject(lookupMembers, obj => {\r\n\t\t\treturn obj.lastName == null || _.isUndefined(obj.lastName);\r\n\t\t});\r\n\r\n\t\tvar match = _.filter(data_, (o) => {\r\n\t\t\t\r\n\t\t\treturn _.startsWith(o.firstName.toLowerCase(), val.toLowerCase());\r\n\t\t});\r\n\r\n\t\tif(match.length == 0){\r\n\r\n\t\t\tmatch = _.filter(data_l, (o) => {\r\n\t\t\t\r\n\t\t\t\treturn _.startsWith(o.lastName.toLowerCase(), val.toLowerCase());\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\treturn match;\r\n\t}\r\n\r\n\tonSuggestionsFetchRequested = ({ value }) => {\r\n\t\tthis.setState({ suggestions: this.getSuggestions(value) });\r\n\t};\r\n\r\n\tonSuggestionsClearRequested = () => {};\r\n\r\n\tonChange = (event, { newValue }) => {\r\n\t\tif (newValue.length === 0) this.setState({ tenant: undefined });\r\n\t\tif (newValue.length > 2) {\r\n\t\t\tthis.handleTenantChange(newValue);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tvalue: newValue\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t// Delayed because parseley not ready if user selected a suggestion\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalid: $(this.refs.autosuggest.input).parsley().isValid()\r\n\t\t\t});\r\n\t\t}, 0);\r\n\r\n\t\tthis.checkMatch(newValue);\r\n\t};\r\n\r\n\thandleTenantSelected(ten, setValue = false) {\r\n\t\tconst stateChanges = {\r\n\t\t\tmemberId: ten.id,\r\n\t\t\tcompanyName: ten.companyName,\r\n\t\t\ttenant: ten.firstName + ' ' + ten.lastName,\r\n\t\t\ttype: ten.memberType,\r\n\t\t\taddress: ten.address,\r\n\r\n\t\t\t...(setValue ? { value: ten.firstName + ' ' + ten.lastName, valid: true } : {})\r\n\t\t};\r\n\r\n\t\tthis.setState(stateChanges);\r\n\r\n\t\tthis.props.onSelected && this.props.onSelected(stateChanges);\r\n\t}\r\n\r\n\thandleTenantChange(value) {\r\n\t\t// const { memberId } = this.state;\r\n\t\tthis.setState({\r\n\t\t\tname: value\r\n\t\t});\r\n\t}\r\n\r\n\trenderSuggestion(suggestion) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{suggestion.firstName} {suggestion.lastName} {'['} {suggestion.type} {']'} {suggestion.address}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tcheckMatch(currentValue) {\r\n\t\tconst matchedTenant = _.find(this.state.lookupMembers, (tenant) => {\r\n\t\t\tconst value = currentValue.toLowerCase();\r\n\t\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\t\treturn value !== '';\r\n\t\t\t});\r\n\r\n\t\t\tif (\r\n\t\t\t\tparts.length === 2 &&\r\n\t\t\t\ttenant.firstName.toLowerCase() === parts[0].trim() &&\r\n\t\t\t\ttenant.lastName.toLowerCase() === parts[1].trim()\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(matchedTenant) === false) {\r\n\t\t\tthis.handleTenantSelected(matchedTenant);\r\n\t\t} else {\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\tinputClick() {\r\n\t\tif (\r\n\t\t\tthis.state.valid === true &&\r\n\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\tthis.props.clearableIfValid === true\r\n\t\t) {\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { value, suggestions, valid } = this.state;\r\n\t\tconst { label, placeHolder } = this.props;\r\n\t\tconst disabled = _.isUndefined(this.props.disabled) || this.props.disabled === false ? false : true;\r\n\r\n\t\tconst inputProps = {\r\n\t\t\tplaceholder: 'Tenant',\r\n\t\t\tvalue,\r\n\t\t\tonChange: this.onChange,\r\n\t\t\tonClick: this.inputClick\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t {}}\r\n\t\t\t\trenderSuggestion={this.renderSuggestion}\r\n\t\t\t\tinputProps={inputProps}\r\n\t\t\t\ttheme={{\r\n\t\t\t\t\t// maybe make global for reuse at some point\r\n\t\t\t\t\tcontainer:\r\n\t\t\t\t\t\t'auto-suggest Select ' +\r\n\t\t\t\t\t\t(!_.isUndefined(this.props.clearableIfValid) && this.props.clearableIfValid === true\r\n\t\t\t\t\t\t\t? 'is-clearable'\r\n\t\t\t\t\t\t\t: ''),\r\n\t\t\t\t\tsuggestionsList: 'Select-menu-outer',\r\n\t\t\t\t\tsuggestion: 'Select-menu'\r\n\t\t\t\t}}\r\n\t\t\t\trenderInputComponent={(inputProps) => {\r\n\t\t\t\t\tconst iconProp =\r\n\t\t\t\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\t\t\t\tthis.props.clearableIfValid === true &&\r\n\t\t\t\t\t\tvalid === true\r\n\t\t\t\t\t\t\t? { icon: 'ion-close-round' }\r\n\t\t\t\t\t\t\t: { icon: 'ion-chevron-down' };\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\r\n\t\t\t\t\t\t\t\tthis.checkMatch(e.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t'data-parsley-matches-one-of': JSON.stringify({\r\n\t\t\t\t\t\t\t\t\tallSuggestions: this.props.tenants.map((tenant) => {\r\n\t\t\t\t\t\t\t\t\t\treturn { value: tenant.firstName + ' ' + tenant.lastName };\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t'data-parsley-pattern': \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/8059370/\r\n\t\t\t\t\t\t\t\t'data-parsley-minlength': 4,\r\n\t\t\t\t\t\t\t\t'data-parsley-required': true,\r\n\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter an existing tenant name'\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t{...iconProp}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\ttenants: tenantSelector.getAllTenants(state),\r\n\t\tresidents: residentSelectors.getResidents(state)\r\n\t};\r\n}\r\n\r\nTenantAddrTypeAutoSuggest.propTypes = {\r\n\t/* Optional initial tenant id to start with, (used when navigating back etc...) */\r\n\tdefaultTenantId: PropTypes.number,\r\n\t/* Callback function for when item is selected */\r\n\tonSelected: PropTypes.func,\r\n\t/* Optional disable the input field */\r\n\tdisabled: PropTypes.bool,\r\n\t/* Specifies if a X icon shows and the input field becomes clickable if the autosuggest is valid */\r\n\tclearableIfValid: PropTypes.bool,\r\n\t/** Optional label text*/\r\n\tlabel: PropTypes.string,\r\n\t/** Optional PlaceHolder Text */\r\n\tplaceHolder: PropTypes.string\r\n};\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(TenantAddrTypeAutoSuggest);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Autosuggest from 'react-autosuggest';\r\nimport InputComponent from '../../components/Input/Input';\r\n// import Parsley from \"parsleyjs\";\r\nimport PropTypes from 'prop-types';\r\nimport * as tenantActions from '../../store/Tenants/actions';\r\nimport * as tenantSelector from '../../store/Tenants/reducer';\r\n\r\nimport * as residentActions from '../../store/Residents/actions';\r\nimport * as residentSelectors from '../../store/Residents/reducer';\r\n\r\nimport _ from 'lodash';\r\nimport autoBind from 'react-autobind';\r\nimport * as $ from 'jquery';\r\n\r\n/**\r\n * Pairs up an 0 &&\r\n\t\t\t!_.isUndefined(this.props.defaultTenantId) &&\r\n\t\t\tthis.selectedTenantFromDefault === false\r\n\t\t) {\r\n\t\t\tthis.selectedTenantFromDefault = true;\r\n\r\n\t\t\tconst startTenant = this.props.residents.find((tenant) => {\r\n\t\t\t\treturn tenant.id === Number(this.props.defaultTenantId);\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleTenantSelected(startTenant);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalue: startTenant.firstName + ' ' + startTenant.lastName,\r\n\t\t\t\tvalid: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.props.residents !== prevProps.residents && this.props.residents.length > 0) {\r\n\t\t\tlet lookupMember =\r\n\t\t\t\tthis.props.tenants && this.props.tenants.length > 0\r\n\t\t\t\t\t? _.map(this.props.tenants, (o) => {\r\n\t\t\t\t\t\t\tlet resident = _.find(this.props.residents, { id: o.id });\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: o.id,\r\n\t\t\t\t\t\t\t\temail: o.email,\r\n\t\t\t\t\t\t\t\tfirstName: o.firstName,\r\n\t\t\t\t\t\t\t\tlastName: o.lastName,\r\n\t\t\t\t\t\t\t\ttype: resident.memberType,\r\n\t\t\t\t\t\t\t\taddress: resident.addressLine1 + ' ' + resident.addressLine2 + ', ' + resident.postCode,\r\n\t\t\t\t\t\t\t\tcompanyName: o.companyName\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t: [];\r\n\t\t\tlet lookupArray = lookupMember;\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tlookupMembers: lookupArray\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.props.defaultTenantId !== prevProps.defaultTenantId && this.props.defaultTenantId) {\r\n\t\t\tconst startTenant = this.props.residents.find((tenant) => {\r\n\t\t\t\treturn tenant.id === Number(this.props.defaultTenantId);\r\n\t\t\t});\r\n \r\n\t\t\tthis.handleTenantSelected(startTenant);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalue: startTenant.firstName + ' ' + startTenant.lastName,\r\n\t\t\t\tvalid: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\treset() {\r\n\t\tthis.setState(this.defaultState);\r\n\t}\r\n\r\n\t// Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n\tgetSuggestionValue(suggestion) {\r\n\t\t// const { name } = this.state;\r\n\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t\tif (suggestion) this.setState({ disabled: '' });\r\n\r\n\t\treturn `${suggestion.firstName} ${suggestion.lastName}`;\r\n\t}\r\n\r\n\tgetSuggestions(val) {\r\n\t\t//const { tenants } = this.props;\r\n\t\tconst { lookupMembers } = this.state;\r\n\r\n\t\tif (!lookupMembers) return [];\r\n\t\t//if (!tenants) return [];\r\n\r\n\t\t//safe guard residents data return null value in some records\r\n\t\tvar data_ = _.filter(lookupMembers, (obj) => {\r\n\t\t\treturn obj.firstName !== null || obj.lastName !== null;\r\n\t\t});\r\n\r\n\t\tconst match = _.filter(data_, (o) => {\r\n\t\t\treturn _.startsWith(o.firstName.toLowerCase(), val.toLowerCase());\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tonSuggestionsFetchRequested = ({ value }) => {\r\n\t\tthis.setState({ suggestions: this.getSuggestions(value) });\r\n\t};\r\n\r\n\tonSuggestionsClearRequested = () => {};\r\n\r\n\tonChange = (event, { newValue }) => {\r\n\t\tif (newValue.length === 0) this.setState({ tenant: undefined });\r\n\t\tif (newValue.length > 2) {\r\n\t\t\tthis.handleTenantChange(newValue);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tvalue: newValue\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t// Delayed because parseley not ready if user selected a suggestion\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalid: $(this.refs.autosuggest.input).parsley().isValid()\r\n\t\t\t});\r\n\t\t}, 0);\r\n\r\n\t\tthis.checkMatch(newValue);\r\n\t};\r\n\r\n\thandleTenantSelected(ten, setValue = false) {\r\n\t\tconst stateChanges = {\r\n\t\t\tmemberId: ten.id,\r\n\t\t\tcompanyName: ten.companyName,\r\n\t\t\ttenant: ten.firstName + ' ' + ten.lastName,\r\n\t\t\ttype: ten.memberType,\r\n\t\t\taddress: ten.address,\r\n\r\n\t\t\t...(setValue ? { value: ten.firstName + ' ' + ten.lastName, valid: true } : {})\r\n\t\t};\r\n\r\n\t\tthis.setState(stateChanges);\r\n\r\n\t\tthis.props.onSelected && this.props.onSelected(stateChanges);\r\n\t}\r\n\r\n\thandleTenantChange(value) {\r\n\t\t// const { memberId } = this.state;\r\n\t\tthis.setState({\r\n\t\t\tname: value\r\n\t\t});\r\n\t}\r\n\r\n\trenderSuggestion(suggestion) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{suggestion.firstName} {suggestion.lastName} {'['} {suggestion.type} {']'} {suggestion.companyName}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tcheckMatch(currentValue) {\r\n\t\tconst matchedTenant = this.props.tenants.find((tenant) => {\r\n\t\t\tconst value = currentValue.toLowerCase();\r\n\t\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\t\treturn value !== '';\r\n\t\t\t});\r\n\r\n\t\t\tif (\r\n\t\t\t\tparts.length === 2 &&\r\n\t\t\t\ttenant.firstName.toLowerCase() === parts[0].trim() &&\r\n\t\t\t\ttenant.lastName.toLowerCase() === parts[1].trim()\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(matchedTenant) === false) {\r\n\t\t\tthis.handleTenantSelected(matchedTenant);\r\n\t\t} else {\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\tinputClick() {\r\n\t\tif (\r\n\t\t\tthis.state.valid === true &&\r\n\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\tthis.props.clearableIfValid === true\r\n\t\t) {\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { value, suggestions, valid } = this.state;\r\n\t\tconst { label, placeHolder } = this.props;\r\n\t\tconst disabled = _.isUndefined(this.props.disabled) || this.props.disabled === false ? false : true;\r\n\r\n\t\tconst inputProps = {\r\n\t\t\tplaceholder: 'Tenant',\r\n\t\t\tvalue,\r\n\t\t\tonChange: this.onChange,\r\n\t\t\tonClick: this.inputClick\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t {}}\r\n\t\t\t\trenderSuggestion={this.renderSuggestion}\r\n\t\t\t\tinputProps={inputProps}\r\n\t\t\t\ttheme={{\r\n\t\t\t\t\t// maybe make global for reuse at some point\r\n\t\t\t\t\tcontainer:\r\n\t\t\t\t\t\t'auto-suggest Select ' +\r\n\t\t\t\t\t\t(!_.isUndefined(this.props.clearableIfValid) && this.props.clearableIfValid === true\r\n\t\t\t\t\t\t\t? 'is-clearable'\r\n\t\t\t\t\t\t\t: ''),\r\n\t\t\t\t\tsuggestionsList: 'Select-menu-outer',\r\n\t\t\t\t\tsuggestion: 'Select-menu'\r\n\t\t\t\t}}\r\n\t\t\t\trenderInputComponent={(inputProps) => {\r\n\t\t\t\t\tconst iconProp = this.props.arrowHide\r\n\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t: !_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\t\t\t\t\tthis.props.clearableIfValid === true &&\r\n\t\t\t\t\t\t\tvalid === true\r\n\t\t\t\t\t\t\t? { icon: 'ion-close-round' }\r\n\t\t\t\t\t\t\t: { icon: 'ion-chevron-down' };\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\r\n\t\t\t\t\t\t\t\tthis.checkMatch(e.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t'data-parsley-matches-one-of': JSON.stringify({\r\n\t\t\t\t\t\t\t\t\tallSuggestions: this.props.tenants.map((tenant) => {\r\n\t\t\t\t\t\t\t\t\t\treturn { value: tenant.firstName + ' ' + tenant.lastName };\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t'data-parsley-pattern': \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/8059370/\r\n\t\t\t\t\t\t\t\t'data-parsley-minlength': 4,\r\n\t\t\t\t\t\t\t\t'data-parsley-required': true,\r\n\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter an existing tenant name'\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t{...iconProp}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\ttenants: tenantSelector.getAllTenants(state),\r\n\t\tresidents: residentSelectors.getResidents(state)\r\n\t};\r\n}\r\n\r\nTenantAutoSuggest.propTypes = {\r\n\t/* Optional initial tenant id to start with, (used when navigating back etc...) */\r\n\tdefaultTenantId: PropTypes.number,\r\n\t/* Callback function for when item is selected */\r\n\tonSelected: PropTypes.func,\r\n\t/* Optional disable the input field */\r\n\tdisabled: PropTypes.bool,\r\n\t/* Specifies if a X icon shows and the input field becomes clickable if the autosuggest is valid */\r\n\tclearableIfValid: PropTypes.bool,\r\n\t/** Optional label text*/\r\n\tlabel: PropTypes.string,\r\n\t/** Optional PlaceHolder Text */\r\n\tplaceHolder: PropTypes.string\r\n};\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(TenantAutoSuggest);\r\n","import React, { Component } from \"react\";\r\n// eslint-disable-next-line\r\nimport Parsley from \"parsleyjs\";\r\nimport Select from \"react-select\";\r\nimport TimePicker from \"rc-time-picker\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport _ from \"lodash\";\r\n// eslint-disable-next-line\r\nimport * as $ from \"jquery\";\r\nimport \"../../sass/components/Input/react-select.css\";\r\nimport \"../../sass/components/Input/indexnew.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * Renders a input text element or select form element with standardised label format\r\n * value will be bound internally to state by default or optionally to something passed in from the parent component\r\n * accepts autoSuggestProps when this component is rendered inside of react-autosuggest renderInputComponent method\r\n */\r\n\r\nclass InputNewComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n render: true,\r\n value: _.isUndefined(this.props.value) ? \"\" : this.props.value,\r\n icon_change: \"ion-chevron-down\"\r\n };\r\n\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.parselyToReactSelect();\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState){\r\n if(this.props.value !== prevProps.value && _.isUndefined(this.props.value)){\r\n if (this.props.type === \"select\" ){\r\n this.reset();\r\n }\r\n }\r\n }\r\n\r\n parselyToReactSelect() {\r\n // For react-select, parsely properties need adding manually to the source of truth\r\n // {\r\n this.setState({ render: true }, () => {\r\n this.parselyToReactSelect();\r\n });\r\n }\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n label,\r\n name,\r\n placeHolder,\r\n //value,\r\n handleChange,\r\n type,\r\n options,\r\n maxLength,\r\n handleTimeChange,\r\n defaultValue,\r\n dateValue,\r\n defaultSelect,\r\n handleDateChange,\r\n defaultMin\r\n } = this.props;\r\n\r\n let { autoSuggestProps } = this.props;\r\n\r\n let disabled;\r\n\r\n if (_.isUndefined(autoSuggestProps)) {\r\n autoSuggestProps = {};\r\n }\r\n\r\n if (this.state.render === true) {\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n {(type => {\r\n // Bind the value if it is present\r\n const valueBind = !_.isUndefined(this.props.value)\r\n ? { value: this.props.value }\r\n : {};\r\n\r\n switch (type) {\r\n case \"select\":\r\n disabled =\r\n _.isUndefined(this.props.disabled) ||\r\n this.props.disabled === false\r\n ? false\r\n : true;\r\n return (\r\n {\r\n return option.value.toString() === this.props.value.toString();\r\n })) ? this.props.value : this.state.value}\r\n disabled={disabled}\r\n onChange={value => {\r\n\r\n this.setState({ value: value.value }, () => {\r\n const label_ = _.find(options, option => {\r\n return option.value === value.value;\r\n });\r\n const label = _.isUndefined(label_) ? undefined : label_.label;\r\n\r\n handleChange({\r\n target: { name: name, value: value.value, label: label }\r\n });\r\n });\r\n }}\r\n onClose={() => {\r\n\r\n this.setState({\r\n icon_change: \"ion-chevron-down\"\r\n });\r\n }}\r\n onOpen={() => {\r\n\r\n this.setState({\r\n icon_change: \"ion-chevron-up\"\r\n });\r\n }}\r\n\r\n />\r\n );\r\n\r\n case \"timePicker\":\r\n return (\r\n \r\n );\r\n\r\n case \"datePicker\":\r\n return (\r\n \r\n );\r\n\r\n case \"password\":\r\n case \"email\":\r\n case \"text\":\r\n default:\r\n const blurBind = _.isUndefined(this.props.onBlur)\r\n ? {}\r\n : { onBlur: this.props.onBlur };\r\n\r\n disabled =\r\n _.isUndefined(this.props.disabled) ||\r\n this.props.disabled === false\r\n ? false\r\n : \"disabled\";\r\n\r\n return (\r\n {\r\n\r\n e.persist();\r\n setTimeout(() => {\r\n handleChange(e);\r\n }, 0);\r\n }}\r\n autoComplete=\"off\"\r\n maxLength={maxLength}\r\n disabled={disabled}\r\n {...this.props.parsley}\r\n {...valueBind}\r\n {...autoSuggestProps}\r\n {...blurBind}\r\n placeholder={placeHolder} // has priority over one added in autoSuggestProps so comes after\r\n />\r\n );\r\n }\r\n })(type)}\r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n }\r\n}\r\nInputNewComponent.propTypes = {\r\n /* Optional function to run on blur of the input field */\r\n onBlur: PropTypes.func,\r\n /** If the input is disabled */\r\n disabled: PropTypes.bool,\r\n /** If the input is uneditable and for display only */\r\n uneditable: PropTypes.bool,\r\n /** Optional value so the input can be bound to an item in the parents state */\r\n value: PropTypes.string,\r\n /** Optional autosuggest properties when this component is rendered inside of react-autosuggest renderInputComponent method */\r\n autoSuggestProps: PropTypes.object,\r\n /** Label displayed above input

    {\r\n // const { target: { value } } = event;\r\n\r\n const selectedRow = idx;\r\n\r\n // And do whatever you need with it's value, for example change state \r\n this.setState({\r\n IsDeletePopoverOpen: false,\r\n activeRow: selectedRow\r\n });\r\n };\r\n\r\n render() {\r\n const { listType, data, pageClass } = this.props;\r\n\r\n let { headingsAlone } = this.props;\r\n\r\n ;\r\n // const config = this.listsConfig.types.find(type => {\r\n // return type.name === listType;\r\n // });\r\n const config = _.find(this.listsConfig.types, type => {\r\n return type.name === listType;\r\n });\r\n\r\n if (_.isUndefined(headingsAlone)) {\r\n headingsAlone = false;\r\n }\r\n\r\n if ((_.isUndefined(data) || data.length === 0) && headingsAlone === false) {\r\n return false;\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    Visitor Name
    \r\n
    Company
    \r\n
    \r\n
    \r\n\r\n {data.length > 0 &&\r\n data.map((row, rowIndex) => {\r\n return (\r\n
    \r\n
    {\r\n\r\n\r\n if (this.state.selectedItem === rowIndex) {\r\n this.setState({\r\n selectedItem: undefined\r\n })\r\n this.props.selectedDetail(\r\n undefined\r\n );\r\n } else {\r\n this.setState({\r\n selectedItem: rowIndex\r\n })\r\n this.props.selectedDetail(\r\n this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[3]\r\n )\r\n );\r\n }\r\n\r\n }}>\r\n
    \r\n {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[0]\r\n )}
    \r\n
    {this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[1]\r\n )}\r\n
    \r\n
    \r\n {\r\n
    \r\n\r\n {this.state.activeRow !== rowIndex ?\r\n
    \r\n {\r\n\r\n this.handleClick(rowIndex)\r\n if (this.props.resetForm) {\r\n this.props.resetForm(true);\r\n }\r\n\r\n }}>\"\"\r\n
    \r\n :\r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ activeRow: \"\" })\r\n }}>Back\r\n {\r\n\r\n this.setState({\r\n IsDeletePopoverOpen: false,\r\n activeRow: \"\",\r\n selectedItem: undefined\r\n });\r\n\r\n this.props.actionClick(\r\n this.accessObjectByString(\r\n data[rowIndex],\r\n config.fields[3]\r\n )\r\n );\r\n\r\n\r\n }}>\"\"\r\n
    \r\n }\r\n\r\n
    \r\n }\r\n
    \r\n\r\n )\r\n })}\r\n\r\n\r\n {data.length === 0 && (\r\n
    \r\n \r\n {this.props.emptyMessage}\r\n \r\n
    \r\n )}\r\n\r\n\r\n
    \r\n\r\n\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nDetailListWithOverlay.propTypes = {\r\n\r\n /** First Heading Text for the coloumn */\r\n heading1: PropTypes.string,\r\n /** Second Heading Text for the coloumn */\r\n heading2: PropTypes.string,\r\n /** Third Heading Text for the coloumn */\r\n heading3: PropTypes.string,\r\n /** Message to display if the table is empty */\r\n emptyMessage: PropTypes.string,\r\n /** Function that is called for clicking on the icon */\r\n actionClick: PropTypes.func,\r\n /** If list data is empty can headings be displayed on their own? */\r\n headingsAlone: PropTypes.bool,\r\n /** The configuration to use from listsConfig in the component constrctor. (specifies icon and data to column mappings) */\r\n listType: PropTypes.string,\r\n /** An array of objects, fields are variable as long as configuration is available for mappings in listsConfig */\r\n data: PropTypes.array,\r\n /**The class name for the detail list */\r\n pageClass: PropTypes.string\r\n};\r\n\r\nexport default DetailListWithOverlay;\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autoBind from \"react-autobind\";\r\nimport { createBrowserHistory } from 'history';\r\nimport {withRouter} from 'react-router-dom';\r\nimport * as $ from \"jquery\";\r\n\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport \"rc-time-picker/assets/index.css\";\r\nimport _ from \"lodash\";\r\n//import Datepicker from \"react-datepicker\";\r\n\r\nimport moment from \"moment\";\r\nimport dateFormat from \"dateformat\";\r\n\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\n\r\nimport TenantAddrTypeAutoSuggest from \"../../../components/TenantAutoSuggest/TenantAddrTypeAutoSuggest\";\r\nimport TenantCompanyTypeAutoSuggest from \"../../../components/TenantAutoSuggest/TenantCompanyTypeAutoSuggest\";\r\n\r\nimport Button from \"../../../components/Button/Button\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputNewComponent from \"../../../components/Input/InputNew\";\r\n\r\n\r\nimport DetailListWithOverlay from \"../../../components/DetailList/DetailListWithOverlay\";\r\n\r\nimport * as serviceModulesActions from \"../../../store/ServiceModules/actions\";\r\nimport * as settingSelector from \"../../../store/ConciergeSetting/reducer\";\r\n\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\nimport * as tenantActions from \"../../../store/Tenants/actions\";\r\nimport * as tenantSelector from \"../../../store/Tenants/reducer\";\r\nimport * as meetingAction from \"../../../store/Meetings/actions\";\r\nimport * as meetingSelector from \"../../../store/Meetings/reducer\";\r\n\r\nimport * as visitorSelector from \"../../../store/Visitors/reducer\";\r\nimport * as visitorActions from \"../../../store/Visitors/actions\";\r\n\r\nimport \"../../../sass/containers/visitors/index.css\";\r\n\r\n\r\nfunction generateOptions(length, excludedOptions) {\r\n const arr = [];\r\n for (let value = 0; value < length; value++) {\r\n if (excludedOptions.indexOf(value) < 0) {\r\n arr.push(value);\r\n }\r\n }\r\n return arr;\r\n}\r\nfunction disabledMinutes(h) {\r\n var min_arr = [0];\r\n for (let value = 0; value < 60; value++) {\r\n let curr_min = value + 5;\r\n if (curr_min < 60 && (curr_min % 5 === 0)) {\r\n min_arr.push(curr_min);\r\n }\r\n }\r\n switch (h) {\r\n default:\r\n return generateOptions(60, min_arr);\r\n }\r\n}\r\n\r\nconst PortalTypes = serviceModulesActions.getPortalTypes();\r\n\r\nconst StatusMessages = {\r\n Booked: \"Visitors successfully booked\",\r\n Updated: \"Visitors successfully updated\",\r\n UpdatedList: \"Visitor updated\"\r\n};\r\n\r\nconst browserHistory = createBrowserHistory();\r\nconst location = browserHistory.location;\r\nclass VisitorBooking extends Component {\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: \"\",\r\n name: \"\",\r\n suggestions: [],\r\n tenantId: \"\",\r\n tenantCompany: \"\",\r\n tenantName: \"\",\r\n tenantAddress: \"\",\r\n tenantType: \"\",\r\n startDate: moment(),\r\n timeFrom: moment(),\r\n timeTo: moment().add(1, 'hours'),\r\n now: moment().format(\"LLLL\"),\r\n addVisitorFormUsed: false,\r\n visitorName: \"\",\r\n visitorCompany: \"\",\r\n visitorEmail: \"\",\r\n rows: [0],\r\n type: \"Visitors\",\r\n specialInstruction: \"\",\r\n commercial: false,\r\n portalType: this.props.setting && !_.isUndefined(this.props.setting.portalType) ? this.props.setting.portalType : \"\",\r\n isSucessfull: undefined,\r\n IsAddMutipleEnable: false,\r\n isCheckboxChecked: false,\r\n isMeetindAdded: false,\r\n message: \"\"\r\n };\r\n\r\n this.addVisitorValidation = null;\r\n // this.addDatepickerValidation = null;\r\n autoBind(this);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n\r\n\r\n this.props.dispatch(meetingAction.clearMeetings());\r\n const { specialInstruction } = this.state;\r\n\r\n /** Just to get it all working */\r\n\r\n this.addValidation();\r\n this.props.dispatch(tenantActions.getAllTenants());\r\n\r\n if (specialInstruction === \"\" && this.props.instruction) {\r\n this.setState({\r\n specialInstruction: this.props.instruction\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n \r\n componentWillUnmount() {\r\n this.addVisitorValidation.destroy();\r\n this.props.dispatch(meetingAction.clearMeetings());\r\n this.props.dispatch(meetingAction.setMettingsQueue([]));\r\n this.props.dispatch(visitorActions.resetVisitorCheckedIn());\r\n // this.addDatepickerValidation.destroy();\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.setting !== prevProps.setting && !_.isUndefined(this.props.setting)) {\r\n this.setState({\r\n portalType: this.props.setting.portalType\r\n });\r\n }\r\n\r\n //triggered when new meetings record are added and checkedin, send email notifications.\r\n if(this.props.visitorCheckedIn !== prevProps.visitorCheckedIn && this.props.visitorCheckedIn && this.props.visitorCheckedIn.length > 0){\r\n\r\n this.props.dispatch(\r\n meetingAction.notifyCheckedIn(this.props.visitorCheckedIn, (status) => {\r\n if (status === true) {\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n if ((this.props.meetings !== prevProps.meetings) && (this.state.addSingleMeeting !== prevState.addSingleMeeting) && this.state.addSingleMeeting === true) {\r\n\r\n this.props.dispatch(meetingAction.createNewMeetings(this.props.meetings, success => {\r\n if (success === true) {\r\n \r\n this.setState({\r\n addSingleMeeting: undefined,\r\n isVistorSave: true,\r\n isMeetindAdded: true\r\n })\r\n }\r\n }));\r\n }\r\n\r\n // After the meetings are added listened to newly created meetings and checked them In\r\n\r\n if (this.props.meetingsAdded !== prevProps.meetingsAdded && this.props.meetingsAdded.length > 0) {\r\n\r\n this.props.dispatch(visitorActions.checkinVisitor(this.props.meetingsAdded, success => {\r\n if (success === true) {\r\n this.setState({\r\n visitorName: \"\",\r\n visitorEmail: \"\",\r\n visitorCompany: \"\",\r\n selectedStatus: undefined,\r\n selected: undefined,\r\n isSucessfull: true,\r\n message: \"Visitors Successfully Checked-in\",\r\n timeFrom: moment(),\r\n timeTo: moment().add(1, 'hours')\r\n\r\n });\r\n\r\n this.resetAutoSelect();\r\n this.props.dispatch(meetingAction.setMettingsQueue([]));\r\n\r\n }\r\n }));\r\n\r\n\r\n }\r\n }\r\n\r\n \r\n\r\n addValidation() {\r\n this.addVisitorValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n\r\n }\r\n\r\n resetValidation() {\r\n\t\t$(this.refs.validate).get(0).reset();\r\n\t\tthis.addVisitorValidation.destroy();\r\n }\r\n \r\n validate(fromSubmit = false) {\r\n this.addVisitorValidation.validate({ force: true });\r\n // this.addDatepickerValidation.validate({ force: true });\r\n const valid = this.addVisitorValidation.isValid();\r\n // this.addVisitorValidation.isValid() &&\r\n // this.addDatepickerValidation.isValid();\r\n\r\n this.setState({\r\n addVisitorFormValid: valid,\r\n addVisitorFormUsed: true,\r\n rows: this.state.rows.concat([this.state.rows.length]),\r\n isVistorSave: false,\r\n\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.formReset();\r\n const {\r\n\r\n timeFrom,\r\n startDate,\r\n timeTo,\r\n tenantId,\r\n visitorName,\r\n visitorCompany,\r\n tenantCompany,\r\n tenantName,\r\n tenantType,\r\n visitorEmail,\r\n rows,\r\n specialInstruction\r\n } = this.state;\r\n\r\n const timeFromExpected = dateFormat(timeFrom, \"isoTime\");\r\n const timeToExpected = dateFormat(timeTo, \"isoTime\");\r\n const dateExpected = dateFormat(startDate._d, \"isoDate\");\r\n\r\n let dueDT = moment(dateExpected + \" \" + timeFromExpected);\r\n let toDT = moment(dateExpected + \" \" + timeToExpected);\r\n\r\n if (this.state.selectedStatus === true) {\r\n const { meetings } = this.props;\r\n\r\n var data = {\r\n tenantId: tenantId,\r\n tenantName: tenantName,\r\n tenantCompany: tenantCompany,\r\n tenantType: tenantType,\r\n name: visitorName,\r\n companyName: visitorCompany,\r\n dueDate: dueDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n endDate: toDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n status: \"notified\",\r\n email: visitorEmail,\r\n specialInstruction: specialInstruction,\r\n\r\n };\r\n\r\n\r\n let setMeetings = _.map(meetings, (meeting, index) => {\r\n if (meeting.index === this.state.selected) {\r\n return {\r\n ...data, index: meeting.index\r\n }\r\n }\r\n return meeting\r\n });\r\n\r\n this.props.dispatch(meetingAction.setMettingsQueue(setMeetings));\r\n this.setState({\r\n isSucessfull: true,\r\n message: StatusMessages.UpdatedList\r\n });\r\n } else {\r\n this.setState({\r\n rows: this.state.rows.concat([this.state.rows.length])\r\n });\r\n\r\n\r\n var data_ = {\r\n tenantId: tenantId,\r\n tenantName: tenantName,\r\n tenantCompany: tenantCompany,\r\n tenantType: tenantType,\r\n name: visitorName,\r\n companyName: visitorCompany,\r\n dueDate: dueDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n endDate: toDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n status: \"notified\",\r\n email: visitorEmail,\r\n specialInstruction: specialInstruction,\r\n index: rows[rows.length - 1]\r\n };\r\n\r\n\r\n this.props.dispatch(meetingAction.addMeetingToQueue([data_]));\r\n\r\n this.setState({\r\n isMeetindAdded: true,\r\n isSucessfull: false\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n MultipleVisitors() {\r\n\r\n this.props.dispatch(meetingAction.clearMeetings());\r\n this.props.dispatch(meetingAction.setMettingsQueue([]));\r\n this.setState({\r\n IsAddMutipleEnable: !this.state.IsAddMutipleEnable,\r\n isSucessfull: false,\r\n message: \"\",\r\n selectedStatus:undefined\r\n })\r\n\r\n\r\n }\r\n\r\n\r\n addMeetingToStore() {\r\n\r\n this.addVisitorValidation.validate({ force: true });\r\n const valid = this.addVisitorValidation.isValid();\r\n if (valid === true) {\r\n this.formReset();\r\n const {\r\n\r\n timeFrom,\r\n startDate,\r\n timeTo,\r\n tenantId,\r\n visitorName,\r\n visitorCompany,\r\n tenantCompany,\r\n tenantName,\r\n tenantType,\r\n visitorEmail,\r\n rows,\r\n specialInstruction\r\n } = this.state;\r\n\r\n const timeFromExpected = dateFormat(timeFrom, \"isoTime\");\r\n const timeToExpected = dateFormat(timeTo, \"isoTime\");\r\n const dateExpected = dateFormat(startDate._d, \"isoDate\");\r\n\r\n let dueDT = moment(dateExpected + \" \" + timeFromExpected);\r\n let toDT = moment(dateExpected + \" \" + timeToExpected);\r\n\r\n var data = {\r\n tenantId: tenantId,\r\n tenantName: tenantName,\r\n tenantCompany: tenantCompany,\r\n tenantType: tenantType,\r\n name: visitorName,\r\n companyName: visitorCompany,\r\n dueDate: dueDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n endDate: toDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n status: \"notified\",\r\n email: visitorEmail,\r\n specialInstruction: specialInstruction,\r\n index: rows[rows.length - 1]\r\n };\r\n\r\n\r\n this.props.dispatch(meetingAction.addMeetingToQueue([data], success => {\r\n\r\n this.setState({ addSingleMeeting: true });\r\n\r\n }));\r\n\r\n\r\n // this.setState({\r\n // visitorCompany:\"\",\r\n // isCheckboxChecked:true,\r\n // isMeetindAdded:true,\r\n // })\r\n }\r\n }\r\n\r\n\r\n\r\n formReset() {\r\n // Doesnt seem to be working....\r\n // this.addParcelValidation.reset();\r\n\r\n\r\n this.setState({\r\n visitorName: \"\",\r\n visitorEmail: \"\",\r\n visitorCompany: \"\",\r\n selectedStatus: undefined,\r\n selected: undefined,\r\n message: \"\",\r\n timeFrom: moment()\r\n });\r\n // this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.addVisitorValidation.destroy();\r\n //this.addDatePickerValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n\r\n resetAutoSelect() {\r\n\r\n this.setState({\r\n tenantCompany: \"\",\r\n tenantAddress: \"\"\r\n });\r\n\r\n // this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n\r\n handleSubmit(e) {\r\n\r\n\r\n\r\n if (this.state.IsAddMutipleEnable) {\r\n \r\n\r\n const { meetings } = this.props;\r\n this.props.dispatch(meetingAction.createNewMeetings(meetings, success => {\r\n if (success === true) {\r\n this.resetAutoSelect();\r\n \r\n this.setState({\r\n message: \"\",\r\n isVistorSave: true,\r\n isMeetindAdded: true,\r\n tenantId: \"\",\r\n tenantName: \"\",\r\n tenantCompany: \"\",\r\n tenantType: \"\",\r\n //startDate: moment(),\r\n timeFrom: moment(),\r\n timeTo: moment().add(1, 'hours')\r\n\r\n })\r\n }\r\n }));\r\n }\r\n else {\r\n this.addMeetingToStore();\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n removeFromQueue(index) {\r\n //index\r\n this.props.dispatch(meetingAction.removeMeetingFromQueue(index));\r\n\r\n }\r\n\r\n\r\n\r\n IsCheckinVisitorsDisabled() {\r\n\r\n if (this.state.isCheckboxChecked) {\r\n if (this.state.tenantId !== \"\" && this.state.visitorName !== \"\") {\r\n if (this.state.isMeetindAdded) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n\r\n }\r\n else {\r\n\r\n return true;\r\n }\r\n }\r\n \r\n\r\n }\r\n\r\n\r\n\r\n handleCancel() {\r\n\r\n this.setState({\r\n isSucessfull: false,\r\n message: \"\"\r\n });\r\n\r\n\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { module: \"Visitors\" }\r\n });\r\n window.scrollTo(0, 0)\r\n\r\n }\r\n\r\n\r\n\r\n handleInputChange(e) {\r\n const field = e.target.name;\r\n const value = e.target.value;\r\n this.setState({\r\n [field]: value,\r\n message: \"\",\r\n isSuccessfull: undefined\r\n });\r\n }\r\n\r\n\r\n\r\n handleDateChange(date) {\r\n this.setState({\r\n startDate: date\r\n });\r\n }\r\n handleTimeFromChange(val) {\r\n let checkMins = 23 * 60 + 59;\r\n\r\n let toTime = moment(val).add(1, 'hours');\r\n\r\n if (toTime.hours() === 0) {\r\n let today = moment(val).toDate();\r\n let maxEnd = new Date(\r\n today.getFullYear(),\r\n today.getMonth(),\r\n today.getDate()\r\n );\r\n\r\n\r\n maxEnd.setMinutes(checkMins);\r\n\r\n toTime = moment(maxEnd);\r\n }\r\n\r\n this.setState({\r\n timeFrom: val,\r\n timeTo: toTime\r\n });\r\n }\r\n handleTimeToChange(val) {\r\n this.setState({\r\n timeTo: val\r\n });\r\n }\r\n\r\n disabledHours() {\r\n const { timeFrom } = this.state;\r\n let time = [];\r\n for (let i = 0; i < 24; i++) {\r\n time.push(i);\r\n }\r\n if (!_.isUndefined(timeFrom) || timeFrom !== null)\r\n return _.filter(time, t => {\r\n if (timeFrom !== null) {\r\n return t < timeFrom.hour();\r\n } else {\r\n return t;\r\n }\r\n });\r\n }\r\n\r\n handleEdit(val) {\r\n const { meetings } = this.props;\r\n this.setState({ message: \"\" });\r\n if (!_.isUndefined(val)) {\r\n\r\n let selectedItem = _.find(meetings, { index: val })\r\n let data = {\r\n tenantId: selectedItem.tenantId,\r\n status: selectedItem.status,\r\n visitorName: selectedItem.name,\r\n visitorEmail: selectedItem.email,\r\n specialInstruction: selectedItem.specialInstruction,\r\n visitorCompany: selectedItem.companyName,\r\n timeFrom: moment(selectedItem.dueDate),\r\n timeTo: moment(selectedItem.endDate),\r\n }\r\n this.setState({ ...data, selectedStatus: true, selected: val });\r\n } else {\r\n this.formReset();\r\n }\r\n }\r\n\r\n\r\n render() {\r\n\r\n const {\r\n tenantCompany,\r\n startDate,\r\n\r\n timeFrom,\r\n timeTo,\r\n visitorName,\r\n visitorEmail,\r\n visitorCompany,\r\n tenantId\r\n\r\n } = this.state;\r\n const currentModule = _.find(\r\n this.props.modules,\r\n o => o.title === \"Visitors\"\r\n );\r\n\r\n\r\n const overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n const visitor_style = {\r\n color: overlayColor,\r\n fontSize: \"30px\",\r\n textTransform: \"capitalize\"\r\n }\r\n\r\n\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n data-parsley-validate-if-empty\r\n //data-parsley-inputs\r\n >\r\n\r\n {this.state.portalType === PortalTypes.Commercial ?\r\n
    \r\n
    \r\n 0 && this.state.tenantId !== \"\"\r\n }\r\n value={this.state.tenant}\r\n clearableIfValid={false}\r\n onSelected={data => {\r\n this.setState({\r\n tenantId: data.memberId,\r\n tenantName: data.tenant,\r\n tenantCompany: data.companyName,\r\n tenantType: data.memberType\r\n });\r\n\r\n /* Timeout added otherwise validation not fired because autosuggest still updating DOM */\r\n setTimeout(() => {\r\n this.state.addVisitorFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n :\r\n
    \r\n
    \r\n {\r\n\r\n this.setState({\r\n tenantId: data.memberId,\r\n tenantAddress: data.address,\r\n tenantName: data.tenant,\r\n\r\n });\r\n\r\n // setTimeout(() => {\r\n // this.state.addVisitorFormUsed && this.validate();\r\n // }, 0);\r\n }}\r\n defaultText={dataVal => { }}\r\n disabled={\r\n this.props.meetings.length > 0 && this.state.tenantId !== \"\"\r\n }\r\n />\r\n\r\n\r\n\r\n\r\n
    \r\n\r\n\r\n {\r\n /**
    \r\n 0 && this.state.tenantId !== \"\"\r\n }\r\n />\r\n
    \r\n */\r\n }\r\n
    \r\n }\r\n\r\n\r\n
    \r\n
    \r\n \r\n\r\n Multiple visitors\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n \r\n\r\n }\r\n
    \r\n\r\n\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n\r\n\r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n {this.state.addVisitorFormValid && (\r\n
    \r\n {/*

    Sending data To Server...

    */}\r\n
    \r\n )}\r\n
    \r\n\r\n {\r\n this.state.IsAddMutipleEnable ?\r\n
    \r\n {this.state.selectedStatus === true ?\r\n { this.validate(true) }}\r\n\r\n />\r\n :\r\n this.validate(true)}\r\n isDisabled={(this.state.tenantId !== \"\" ? (this.state.visitorName !== \"\" ? false : true) : true)}\r\n />\r\n }\r\n
    \r\n : \"\"\r\n }\r\n \r\n\r\n {this.state.IsAddMutipleEnable ?\r\n
    \r\n {\r\n this.formReset();\r\n this.removeFromQueue(index);\r\n }}\r\n selectedDetail={val => { \r\n this.resetValidation();\r\n this.handleEdit(val); \r\n }}\r\n selectDetailReset={this.state.selectedStatus}\r\n resetForm={e => {\r\n if (e === true) {\r\n this.formReset();\r\n }\r\n }}\r\n />\r\n
    : \"\"\r\n }\r\n\r\n\r\n\r\n {\r\n this.state.message &&
    \r\n \r\n
    \r\n }\r\n\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n modules: moduleSelectors.loadModules(state),\r\n tenants: tenantSelector.getAllTenants(state),\r\n meetings: meetingSelector.getMeetingsQueue(state),\r\n meetingsAdded: meetingSelector.getMeetings(state),\r\n visitors: visitorSelector.getVisitors(state),\r\n instruction: meetingSelector.getSpecialInstruction(state),\r\n setting: settingSelector.loadGlobalSetting(state),\r\n visitorCheckedIn : visitorSelector.visitorCheckedIn(state)\r\n\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(VisitorBooking));\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'lodash';\r\nimport '../../sass/components/DetailList/index.css';\r\nimport DeleteBtn from '../../images/delete-btn/bin.png';\r\nimport DeleteWhiteBtn from '../../images/delete-bin-white/bin-white.png';\r\nimport InstructionBtn from '../../images/special-instructions/special-instructions.png';\r\nimport Popover from 'react-tiny-popover';\r\n\r\n/**\r\n * Display list of up to two properties with an con in the third column. Data is passed in as an array and mapped to appropriate\r\n * column with the listsConfig.\r\n */\r\n\r\nclass DetailListNew extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tIsDeletePopoverOpen: true,\r\n\t\t\tactiveRow: '',\r\n\t\t\tisPopoverOpen: ''\r\n\t\t};\r\n\r\n\t\tthis.listsConfig = {\r\n\t\t\ttypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'visitor-add-meeting',\r\n\t\t\t\t\theadings: [ 'Visitor Name', 'Company', 'Special Instruction' ],\r\n\t\t\t\t\tfields: [ 'name', 'companyName', 'specialInstruction', 'index' ],\r\n\t\t\t\t\ticonClass: 'ion-close-round'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'visitor',\r\n\t\t\t\t\theadings: [ 'Visitor Name', 'Visitor Company' ],\r\n\t\t\t\t\tfields: [ 'fullName', 'company', 'index' ],\r\n\t\t\t\t\ticonClass: 'ion-checkmark-round'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'tenant',\r\n\t\t\t\t\theadings: [ 'Tenant Name', 'Company' ],\r\n\t\t\t\t\tfields: [ 'fullName', 'company', 'specialInstruction', 'index' ],\r\n\t\t\t\t\ticonClass: 'ion-checkmark-round'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'resident',\r\n\t\t\t\t\theadings: [ 'Tenant Name', 'Address' ],\r\n\t\t\t\t\tfields: [ 'fullName', 'address', 'specialInstruction', 'index' ],\r\n\t\t\t\t\tlink: 'ion-checkmark-round'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\t//Change trigere fro selected row, clear selection on deselct trigger recieved\r\n\t\tif (this.props.selectDetailReset !== prevProps.selectDetailReset) {\r\n\t\t\tif (_.isUndefined(this.props.selectDetailReset))\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tselectedItem: undefined\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// Utility function so fields: [] options above can optionally specifiy a path to a nested value\r\n\t// e.g. for a parcel location.locationName\r\n\t// https://stackoverflow.com/questions/6491463\r\n\taccessObjectByString(o, s) {\r\n\t\ts = s.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\r\n\t\ts = s.replace(/^\\./, ''); // strip a leading dot\r\n\t\tvar a = s.split('.');\r\n\t\tfor (var i = 0, n = a.length; i < n; ++i) {\r\n\t\t\tvar k = a[i];\r\n\t\t\tif (k in o) {\r\n\t\t\t\to = o[k];\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn o;\r\n\t}\r\n\t\r\n\r\n\r\n\thandleClick = (e, idx) => {\r\n\t\t// const { target: { value } } = event;\r\n\t\t\r\n\t\tconst selectedRow = idx;\r\n\r\n\t\t// And do whatever you need with it's value, for example change state\r\n\t\tthis.setState({\r\n\t\t\tIsDeletePopoverOpen: false,\r\n\t\t\tisPopoverOpen: '',\r\n\t\t\tactiveRow: selectedRow\r\n\t\t});\r\n\t};\r\n\r\n\thandleClickInstrunction = (idx) => {\r\n\t\tconst selectedRow = idx;\r\n\t\tthis.setState({\r\n\t\t\tIsDeletePopoverOpen: false,\r\n\t\t\tisPopoverOpen: selectedRow\r\n\t\t});\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { listType, data, pageClass } = this.props;\r\n\r\n\t\tlet { headingsAlone } = this.props;\r\n\r\n\t\t// const config = this.listsConfig.types.find(type => {\r\n\t\t// return type.name === listType;\r\n\t\t// });\r\n\t\tconst config = _.find(this.listsConfig.types, (type) => {\r\n\t\t\treturn type.name === listType;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(headingsAlone)) {\r\n\t\t\theadingsAlone = false;\r\n\t\t}\r\n\r\n\t\tif ((_.isUndefined(data) || data.length === 0) && headingsAlone === false) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    {config.headings[0]}
    \r\n\t\t\t\t\t
    {config.headings[1]}
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t{data.length > 0 &&\r\n\t\t\t\t\tdata.map((row, rowIndex) => {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (this.state.selectedItem === rowIndex) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tselectedItem: undefined\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tthis.props.selectedDetail(undefined);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tselectedItem: rowIndex\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\tthis.props.selectedDetail(\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.accessObjectByString(data[rowIndex], config.fields[3])\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t\t {this.accessObjectByString(data[rowIndex], config.fields[0])}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t\t{this.accessObjectByString(data[rowIndex], config.fields[1])}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{this.state.activeRow !== rowIndex ? data[rowIndex].specialInstruction !==\r\n\t\t\t\t\t\t\t\t\t\t'' ? (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t this.setState({ isPopoverOpen: '' })}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tposition={[ 'top' ]} // preferred position\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisableReposition={true}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSpecial Instructions\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{this.accessObjectByString(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata[rowIndex],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconfig.fields[2]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t).slice(0, 160)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleClickInstrunction(rowIndex);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleClick(e,rowIndex);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.props.resetForm === true) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.resetForm(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleClick(e,rowIndex);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.props.resetForm) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.resetForm(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveRow: '',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisPopoverOpen: ''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tBack\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.actionClick(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.accessObjectByString(data[rowIndex], config.fields[3])\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveRow: '',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tselectedItem: undefined\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})}\r\n\r\n\t\t\t\t{data.length === 0 && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.props.emptyMessage}\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nDetailListNew.propTypes = {\r\n\t/** First Heading Text for the coloumn */\r\n\theading1: PropTypes.string,\r\n\t/** Second Heading Text for the coloumn */\r\n\theading2: PropTypes.string,\r\n\t/** Third Heading Text for the coloumn */\r\n\theading3: PropTypes.string,\r\n\t/** Message to display if the table is empty */\r\n\temptyMessage: PropTypes.string,\r\n\t/** Function that is called for clicking on the icon */\r\n\tactionClick: PropTypes.func,\r\n\t/** If list data is empty can headings be displayed on their own? */\r\n\theadingsAlone: PropTypes.bool,\r\n\t/** The configuration to use from listsConfig in the component constrctor. (specifies icon and data to column mappings) */\r\n\tlistType: PropTypes.string,\r\n\t/** An array of objects, fields are variable as long as configuration is available for mappings in listsConfig */\r\n\tdata: PropTypes.array,\r\n\t/**The class name for the detail list */\r\n\tpageClass: PropTypes.string\r\n};\r\n\r\nexport default DetailListNew;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAYJJREFUOBGlU79Lw1AQvmvaUCzORQfpq3Zz8A8Q8Q9wcBKsU8FVnB2cBHV3EoRuHXSU7goOugkWHNQkuPkHtLGNyfm92JA0yRDw4PHu1/fdveMeU440m80WBcE1Ca2FYaZnKpV2LMt6S6eX0g4R4RBMvMAl40Afgq59YSwFYG2vKlX/FjkTogbwFSJZZzY6JP5xmM/GiYjfBdEDs3gAOVXmo4Ftf5V1gityjuAuCJ4I9Um4X6lWbn/cYJGAKEOfuEEfsXkhNgBpA6OLd0ICgBWMR8uxN3En5TRhbEX6ckPdQW9oOzMD7SwmrDugaQcxZEWpfQyrHXtijZl777Z9FXtyCAA2pu9M5v3piKWdmQ6qtdrNZDR6TSdq25yrDdL+DIE7HF5ggXKfgFgPBHtJkgxB2TQP/bE/884IYJjGS6RHd4Yg8Lxt4vwhBl6gO5ghzxD8e4gfjnOJKvoUkrADrPAY+7/UUmqjCMoXqWN7P3VuSMAkPRHqInBfhAA5gi+C/0P0Cwl4jrt/CYHOAAAAAElFTkSuQmCC\"","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport autoBind from 'react-autobind';\r\nimport {withRouter} from 'react-router-dom';\r\nimport * as $ from 'jquery';\r\n\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport 'rc-time-picker/assets/index.css';\r\nimport _ from 'lodash';\r\nimport Datepicker from 'react-datepicker';\r\n\r\nimport moment from 'moment';\r\nimport dateFormat from 'dateformat';\r\n\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport FooterNavigation from '../../../components/FooterNavigation/FooterNavigation';\r\n\r\nimport TenantAddrTypeAutoSuggest from '../../../components/TenantAutoSuggest/TenantAddrTypeAutoSuggest';\r\nimport TenantCompanyTypeAutoSuggest from '../../../components/TenantAutoSuggest/TenantCompanyTypeAutoSuggest';\r\n\r\nimport Button from '../../../components/Button/Button';\r\nimport ButtonGroup from '../../../components/Button/ButtonGroup';\r\nimport InputNewComponent from '../../../components/Input/InputNew';\r\nimport DetailListNew from '../../../components/DetailList/DetailListNew';\r\n\r\nimport * as serviceModulesActions from '../../../store/ServiceModules/actions';\r\nimport * as settingSelector from '../../../store/ConciergeSetting/reducer';\r\n\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\nimport * as tenantActions from '../../../store/Tenants/actions';\r\nimport * as tenantSelector from '../../../store/Tenants/reducer';\r\nimport * as meetingAction from '../../../store/Meetings/actions';\r\nimport * as meetingSelector from '../../../store/Meetings/reducer';\r\n\r\nimport * as visitorSelector from '../../../store/Visitors/reducer';\r\n\r\nimport '../../../sass/containers/visitors/index.css';\r\n\r\nfunction generateOptions(length, excludedOptions) {\r\n\tconst arr = [];\r\n\tfor (let value = 0; value < length; value++) {\r\n\t\tif (excludedOptions.indexOf(value) < 0) {\r\n\t\t\tarr.push(value);\r\n\t\t}\r\n\t}\r\n\treturn arr;\r\n}\r\nfunction disabledMinutes(h) {\r\n\tvar min_arr = [ 0 ];\r\n\tfor (let value = 0; value < 60; value++) {\r\n\t\tlet curr_min = value + 5;\r\n\t\tif (curr_min < 60 && curr_min % 5 === 0) {\r\n\t\t\tmin_arr.push(curr_min);\r\n\t\t}\r\n\t}\r\n\tswitch (h) {\r\n\t\tdefault:\r\n\t\t\treturn generateOptions(60, min_arr);\r\n\t}\r\n}\r\n\r\nconst PortalTypes = serviceModulesActions.getPortalTypes();\r\nconst StatusMessages = {\r\n\tBooked: 'Visitors successfully booked',\r\n\tUpdated: 'Visitors successfully updated',\r\n\tUpdatedList: 'Visitor updated'\r\n};\r\n\r\n\r\nclass VisitorBooking extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tvalue: '',\r\n\t\t\tname: '',\r\n\t\t\tsuggestions: [],\r\n\t\t\ttenantId: '',\r\n\t\t\ttenantCompany: '',\r\n\t\t\ttenantName: '',\r\n\t\t\ttenantAddress: '',\r\n\t\t\ttenantType: '',\r\n\t\t\tstartDate: moment(),\r\n\t\t\ttimeFrom: moment(),\r\n\t\t\ttimeTo: moment().add(1, 'hours'),\r\n\t\t\tnow: moment().format('LLLL'),\r\n\t\t\taddVisitorFormUsed: false,\r\n\t\t\tvisitorName: !_.isUndefined(this.props.location.state)\r\n\t\t\t\t? this.props.location.state.visitorData.visitorName\r\n\t\t\t\t: '',\r\n\t\t\tvisitorCompany: !_.isUndefined(this.props.location.state)\r\n\t\t\t\t? this.props.location.state.visitorData.visitorCompany\r\n\t\t\t\t: '',\r\n\t\t\tvisitorEmail: '',\r\n\t\t\trows: [ 0 ],\r\n\t\t\ttype: 'Visitors',\r\n\t\t\tspecialInstruction: !_.isUndefined(this.props.location.state)\r\n\t\t\t\t? this.props.location.state.visitorData.specialInstruction\r\n\t\t\t\t: '',\r\n\t\t\tcommercial: false,\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.setting && !_.isUndefined(this.props.setting.portalType)\r\n\t\t\t\t\t? this.props.setting.portalType\r\n\t\t\t\t\t: '',\r\n\t\t\tisSucessfull: true,\r\n\t\t\tisVistorSave: false,\r\n\t\t\tisMeetindAdded: false,\r\n\t\t\tmessage: ''\r\n\t\t};\r\n\r\n\t\tthis.addVisitorValidation = null;\r\n\t\t// this.addDatepickerValidation = null;\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tconst { specialInstruction } = this.state;\r\n\r\n\t\t/** Just to get it all working */\r\n\r\n\t\tthis.addValidation();\r\n\t\tthis.props.dispatch(tenantActions.getAllTenants());\r\n\r\n\t\tif (specialInstruction === '' && this.props.instruction) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tspecialInstruction: this.props.instruction\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (prevProps.setting !== this.props.setting && !_.isUndefined(this.props.setting)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tportalType: this.props.setting.portalType\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tthis.addVisitorValidation.destroy();\r\n\t\tthis.props.dispatch(meetingAction.clearMeetings());\r\n\t\tthis.props.dispatch(meetingAction.setMettingsQueue([]));\r\n\t\t// this.addDatepickerValidation.destroy();\r\n\t}\r\n\taddValidation() {\r\n\t\tthis.addVisitorValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// this.addDatepickerValidation = $(this.refs.validate).parsley({\r\n\t\t// classHandler: function(el) {\r\n\t\t// return el.$element.closest(\"input\");\r\n\t\t// }\r\n\t\t// });\r\n\r\n\t\t// this.addVisitorValidation = $(\"pickeryDate\").parsley({\r\n\t\t// classHandler: function(el) {\r\n\t\t// return el.$element.closest(\"input\");\r\n\t\t// }\r\n\t\t// });\r\n\t}\r\n\tvalidate(fromSubmit = false) {\r\n\t\tthis.addVisitorValidation.validate({ force: true });\r\n\t\t// this.addDatepickerValidation.validate({ force: true });\r\n\t\tconst valid = this.addVisitorValidation.isValid();\r\n\t\t// this.addVisitorValidation.isValid() &&\r\n\t\t// this.addDatepickerValidation.isValid();\r\n\r\n\t\tthis.setState({\r\n\t\t\taddVisitorFormValid: valid,\r\n\t\t\taddVisitorFormUsed: true\r\n\t\t});\r\n\t\tif (valid === true && fromSubmit === true) {\r\n\t\t\tthis.formReset();\r\n\t\t\tconst {\r\n\t\t\t\ttimeFrom,\r\n\t\t\t\tstartDate,\r\n\t\t\t\ttimeTo,\r\n\t\t\t\ttenantId,\r\n\t\t\t\tvisitorName,\r\n\t\t\t\tvisitorCompany,\r\n\t\t\t\ttenantCompany,\r\n\t\t\t\ttenantName,\r\n\t\t\t\ttenantType,\r\n\t\t\t\tvisitorEmail,\r\n\t\t\t\trows,\r\n\t\t\t\tspecialInstruction\r\n\t\t\t} = this.state;\r\n\r\n\t\t\tconst timeFromExpected = dateFormat(timeFrom, 'isoTime');\r\n\t\t\tconst timeToExpected = dateFormat(timeTo, 'isoTime');\r\n\t\t\tconst dateExpected = dateFormat(startDate._d, 'isoDate');\r\n\r\n\t\t\tlet dueDT = moment(dateExpected + ' ' + timeFromExpected);\r\n\t\t\tlet toDT = moment(dateExpected + ' ' + timeToExpected);\r\n\r\n\t\t\tif (this.state.selectedStatus === true) {\r\n\t\t\t\tconst { meetings } = this.props;\r\n\r\n\t\t\t\tvar data = {\r\n\t\t\t\t\ttenantId: tenantId,\r\n\t\t\t\t\ttenantName: tenantName,\r\n\t\t\t\t\ttenantCompany: tenantCompany,\r\n\t\t\t\t\ttenantType: tenantType,\r\n\t\t\t\t\tname: visitorName,\r\n\t\t\t\t\tcompanyName: visitorCompany,\r\n\t\t\t\t\tdueDate: dueDT.format('YYYY-MM-DD HH:mm:ss'),\r\n\t\t\t\t\tendDate: toDT.format('YYYY-MM-DD HH:mm:ss'),\r\n\t\t\t\t\tstatus: 'notified',\r\n\t\t\t\t\temail: visitorEmail,\r\n\t\t\t\t\tspecialInstruction: specialInstruction\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet setMeetings = _.map(meetings, (meeting, index) => {\r\n\t\t\t\t\tif (meeting.index === this.state.selected) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t...data,\r\n\t\t\t\t\t\t\tindex: meeting.index\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn meeting;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.props.dispatch(meetingAction.setMettingsQueue(setMeetings));\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tisSucessfull: true,\r\n\t\t\t\t\tmessage: StatusMessages.UpdatedList\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\trows: this.state.rows.concat([ this.state.rows.length ])\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar data_ = {\r\n\t\t\t\t\ttenantId: tenantId,\r\n\t\t\t\t\ttenantName: tenantName,\r\n\t\t\t\t\ttenantCompany: tenantCompany,\r\n\t\t\t\t\ttenantType: tenantType,\r\n\t\t\t\t\tname: visitorName,\r\n\t\t\t\t\tcompanyName: visitorCompany,\r\n\t\t\t\t\tdueDate: dueDT.format('YYYY-MM-DD HH:mm:ss'),\r\n\t\t\t\t\tendDate: toDT.format('YYYY-MM-DD HH:mm:ss'),\r\n\t\t\t\t\tstatus: 'notified',\r\n\t\t\t\t\temail: visitorEmail,\r\n\t\t\t\t\tspecialInstruction: specialInstruction,\r\n\t\t\t\t\tindex: rows[rows.length - 1]\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.props.dispatch(meetingAction.addMeetingToQueue([ data_ ]));\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tisMeetindAdded: true,\r\n\t\t\t\t\tisSucessfull: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresetValidation() {\r\n\t\t$(this.refs.validate).get(0).reset();\r\n\t\tthis.addVisitorValidation.destroy();\r\n\t}\r\n\tformReset() {\r\n\t\t// Doesnt seem to be working....\r\n\t\t// this.addParcelValidation.reset();\r\n\r\n\t\tthis.setState({\r\n\t\t\tvisitorName: '',\r\n\t\t\tvisitorEmail: '',\r\n\t\t\tvisitorCompany: '',\r\n\t\t\tspecialInstruction: '',\r\n\t\t\tselectedStatus: undefined,\r\n\t\t\tselected: undefined,\r\n\t\t\tmessage: ''\r\n\t\t});\r\n\t\t// this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n\r\n\t\t$(this.refs.validate).get(0).reset();\r\n\r\n\t\tthis.addVisitorValidation.destroy();\r\n\t\t//this.addDatePickerValidation.destroy();\r\n\r\n\t\t// Reset all the select input components to the placeholder value\r\n\t\tfor (let key in this.refs) {\r\n\t\t\tif (key.indexOf('formSelect') === 0) {\r\n\t\t\t\tthis.refs[key].reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.addValidation();\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tresetAutoSelect() {\r\n\t\t//deprecated\r\n\t\t//this.refs['tenant-auto-suggest'].getWrappedInstance().reset();\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.addValidation();\r\n\t\t}, 0);\r\n\t}\r\n\r\n\thandleInputChange(e) {\r\n\t\tconst field = e.target.name;\r\n\t\tconst value = e.target.value;\r\n\t\t\tthis.setState({\r\n\t\t\t\t[field]: value,\r\n\t\t\t\tmessage: '',\r\n\t\t\t\tisSuccessfull: undefined\r\n\t\t\t});\r\n\t}\r\n\r\n\r\n\thandleSubmit(e) {\r\n\t\tconst { specialInstruction } = this.state;\r\n\t\tconst { meetings } = this.props;\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tmeetingAction.createNewMeetings(meetings, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.props.dispatch(meetingAction.setMettingsQueue([]));\r\n\t\t\t\t\tthis.formReset();\r\n\t\t\t\t\tthis.resetAutoSelect();\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tisSucessfull: true,\r\n\t\t\t\t\t\tisVistorSave: true,\r\n\t\t\t\t\t\tisMeetindAdded: true,\r\n\t\t\t\t\t\tmessage: StatusMessages.Booked,\r\n\t\t\t\t\t\ttenantId: '',\r\n\t\t\t\t\t\ttenantCompany: '',\r\n\t\t\t\t\t\ttenantName: '',\r\n\t\t\t\t\t\ttenantAddress: '',\r\n\t\t\t\t\t\ttenantType: '',\r\n\t\t\t\t\t\tstartDate: moment(),\r\n\t\t\t\t\t\ttimeFrom: moment(),\r\n\t\t\t\t\t\ttimeTo: moment().add(1, 'hours'),\r\n\t\t\t\t\t\tselectedStatus: false\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\t// if (specialInstruction) {\r\n\t\t// this.props.dispatch(\r\n\t\t// meetingAction.addSpectialInstruction(specialInstruction)\r\n\t\t// );\r\n\t\t// }\r\n\r\n\t\t// // browserHistory.push(\"/concierge/visitor-management-review\");\r\n\t\t// browserHistory.push(\"/concierge/visitor-booking\");\r\n\t\t// this.setState({isSucessfull:true});\r\n\t\t// this.setState({isVistorSave:true});\r\n\t}\r\n\r\n\thandleDateChange(date) {\r\n\t\tthis.setState({\r\n\t\t\tstartDate: date\r\n\t\t});\r\n\t}\r\n\thandleTimeFromChange(val) {\r\n\t\tlet checkMins = 23 * 60 + 59;\r\n\r\n\t\tlet toTime = moment(val).add(1, 'hours');\r\n\r\n\t\tif (toTime.hours() === 0) {\r\n\t\t\tlet today = moment(val).toDate();\r\n\t\t\tlet maxEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate());\r\n\r\n\t\t\tmaxEnd.setMinutes(checkMins);\r\n\r\n\t\t\ttoTime = moment(maxEnd);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\ttimeFrom: val,\r\n\t\t\ttimeTo: toTime\r\n\t\t});\r\n\t}\r\n\thandleTimeToChange(val) {\r\n\t\tthis.setState({\r\n\t\t\ttimeTo: val\r\n\t\t});\r\n\t}\r\n\tremoveFromQueue(index) {\r\n\t\t\r\n\t\tthis.props.dispatch(meetingAction.removeMeetingFromQueue(index));\r\n\t}\r\n\r\n\tdisabledHours() {\r\n\t\tconst { timeFrom } = this.state;\r\n\t\tlet time = [];\r\n\t\tfor (let i = 0; i < 24; i++) {\r\n\t\t\ttime.push(i);\r\n\t\t}\r\n\t\tif (!_.isUndefined(timeFrom) || timeFrom !== null)\r\n\t\t\treturn _.filter(time, (t) => {\r\n\t\t\t\tif (timeFrom !== null) {\r\n\t\t\t\t\treturn t < timeFrom.hour();\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn t;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\thandleEdit(val) {\r\n\t\tconst { meetings } = this.props;\r\n\r\n\t\tthis.setState({ message: '' });\r\n\t\tif (!_.isUndefined(val)) {\r\n\t\t\tlet selectedItem = _.find(meetings, { index: val });\r\n\t\t\tlet data = {\r\n\t\t\t\ttenantId: selectedItem.tenantId,\r\n\t\t\t\tstatus: selectedItem.status,\r\n\t\t\t\tvisitorName: selectedItem.name,\r\n\t\t\t\tvisitorEmail: selectedItem.email,\r\n\t\t\t\tspecialInstruction: selectedItem.specialInstruction,\r\n\t\t\t\tvisitorCompany: selectedItem.companyName,\r\n\t\t\t\ttimeFrom: moment(selectedItem.dueDate),\r\n\t\t\t\ttimeTo: moment(selectedItem.endDate)\r\n\t\t\t};\r\n\t\t\tthis.setState({ ...data, selectedStatus: true, selected: val });\r\n\t\t} else {\r\n\t\t\tthis.formReset();\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\ttenantCompany,\r\n\t\t\tstartDate,\r\n\t\t\tspecialInstruction,\r\n\t\t\ttimeFrom,\r\n\t\t\ttimeTo,\r\n\t\t\tvisitorName,\r\n\t\t\tvisitorEmail,\r\n\t\t\tvisitorCompany,\r\n\t\t\ttenantId\r\n\t\t} = this.state;\r\n\t\tconst currentModule = _.find(this.props.modules, (o) => o.title === 'Visitors');\r\n\r\n\t\tconst overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\t\tconst visitor_style = {\r\n\t\t\tcolor: overlayColor,\r\n\t\t\tfontSize: '30px',\r\n\t\t\ttextTransform: 'capitalize'\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\t\t//data-parsley-inputs\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{this.state.portalType === PortalTypes.Commercial ? (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t 0 && this.state.tenantId !== ''}\r\n\t\t\t\t\t\t\t\t\t\tvalue={this.state.tenant}\r\n\t\t\t\t\t\t\t\t\t\tclearableIfValid={false}\r\n\t\t\t\t\t\t\t\t\t\tonSelected={(data) => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantId: data.memberId,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantName: data.tenant,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantCompany: data.companyName,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantType: data.memberType\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Timeout added otherwise validation not fired because autosuggest still updating DOM */\r\n\t\t\t\t\t\t\t\t\t\t\t// setTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\t\t// \tthis.state.addVisitorFormUsed && this.validate();\r\n\t\t\t\t\t\t\t\t\t\t\t// }, 0);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantId: data.memberId,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantAddress: data.address,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantName: data.tenant\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// setTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\t\t// \tthis.state.addVisitorFormUsed && this.validate();\r\n\t\t\t\t\t\t\t\t\t\t\t// }, 0);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tdefaultText={(dataVal) => {}}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={this.props.meetings.length > 0 && this.state.tenantId !== ''}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.addVisitorFormValid && (\r\n\t\t\t\t\t\t\t\t
    {/*

    Sending data To Server...

    */}
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{this.state.selectedStatus === true ? (\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tthis.validate(true);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t this.validate(true)}\r\n\t\t\t\t\t\t\t\t\tisDisabled={\r\n\t\t\t\t\t\t\t\t\t\tthis.state.tenantId !== '' ? this.state.visitorName !== '' ? false : true : true\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tthis.formReset();\r\n\t\t\t\t\t\t\t\tthis.removeFromQueue(index);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tvisitorStyle={visitor_style}\r\n\t\t\t\t\t\t\tselectedDetail={(val) => {\r\n\t\t\t\t\t\t\t\tthis.resetValidation();\r\n\t\t\t\t\t\t\t\tthis.handleEdit(val);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tselectDetailReset={this.state.selectedStatus}\r\n\t\t\t\t\t\t\tresetForm={(e) => {\r\n\t\t\t\t\t\t\t\tif (e === true) {\r\n\t\t\t\t\t\t\t\t\tthis.formReset();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t{this.state.message && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// this.state.isVistorSave ?\r\n\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t// \r\n\t\t\t\t\t\t//
    : \"\"\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tthis.props.history.push({\r\n\t\t\t\t\t\t\t\t\tpathname: '/',\r\n\t\t\t\t\t\t\t\t\tstate: { module: 'Visitors' }\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\trightClick={this.handleSubmit}\r\n\t\t\t\t\t\t\tisDisabled={this.state.isSucessfull}\r\n\t\t\t\t\t\t\ticon_l=\"\"\r\n\t\t\t\t\t\t\ticon_r=\"\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\ttenants: tenantSelector.getAllTenants(state),\r\n\t\tmeetings: meetingSelector.getMeetingsQueue(state),\r\n\t\tvisitors: visitorSelector.getVisitors(state),\r\n\t\tinstruction: meetingSelector.getSpecialInstruction(state),\r\n\t\tsetting: settingSelector.loadGlobalSetting(state)\r\n\t};\r\n}\r\nexport default withRouter(connect(mapStateToProps)(VisitorBooking));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autoBind from \"react-autobind\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport { CSSTransitionGroup } from \"react-transition-group\";\r\nimport Button from \"../../../components/Button/Button\";\r\n\r\nimport VisitorAutoSuggestComponent from \"../../../components/VisitorAutoSuggest/VisitorAutoSuggestComponent\";\r\n//import VisitorAutoSuggest from \"../../../components/VisitorAutoSuggest/VisitorAutoSuggest\";\r\nimport VisitorSearchResult from \"../../../components/visitorLogCard/visitorSearchResult\";\r\nimport ResponseMessage from \"../../../components/ResponseMessage/ResponseMessage\";\r\nimport * as visitorsAction from \"../../../store/Visitors/actions\";\r\nimport * as meetingsActions from \"../../../store/Meetings/actions\";\r\nimport * as meetingActions from \"../../../store/Meetings/actions\";\r\nimport * as visitorActions from \"../../../store/Visitors/actions\";\r\nimport * as residentAction from \"../../../store/Residents/actions\";\r\nimport * as residentSelectors from \"../../../store/Residents/reducer\";\r\n\r\nimport * as $ from \"jquery\";\r\n\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport \"rc-time-picker/assets/index.css\";\r\nimport _ from \"lodash\";\r\nimport Datepicker from \"react-datepicker\";\r\nimport moment from \"moment\";\r\nimport dateFormat from \"dateformat\";\r\n\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\n\r\n\r\nimport * as settingSelector from \"../../../store/ConciergeSetting/reducer\";\r\n\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\nimport * as tenantSelector from \"../../../store/Tenants/reducer\";\r\nimport * as meetingSelector from \"../../../store/Meetings/reducer\";\r\nimport * as visitorSelector from \"../../../store/Visitors/reducer\";\r\n\r\nimport \"../../../sass/containers/visitors/index.css\";\r\nimport { start } from \"pretty-error\";\r\n\r\n\r\nconst VisitorStatuses = {\r\n CheckedIn: \"checkedin\",\r\n CheckedOut: \"checkedout\",\r\n Notified: \"notified\"\r\n};\r\n\r\nclass VisitorBooking extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: \"\",\r\n name: \"\",\r\n visitorName: \"\",\r\n searchResult: this.props.location.state && this.props.location.state.searchResult ? this.props.location.state.searchResult : undefined,\r\n startDate: this.props.location.state && this.props.location.state.startDate ? moment(this.props.location.state.startDate) : moment(),\r\n // startDate: this.props.searchRedirected ? (this.props.location.state.searchResult != undefined ? moment(this.props.location.state.searchResult.search_date.split('/')[1] + '/' + this.props.location.state.searchResult.search_date.split('/')[0] + '/' + this.props.location.state.searchResult.search_date.split('/')[2]) : moment()) : (this.props.location.state.startDate != undefined ? moment(this.props.location.state.startDate) : moment()),\r\n //selecetMeetingId : this.props.location.state && this.props.location.state.meetingId ? this.props.location.state.meetingId : undefined,\r\n visitorCompany: \"\",\r\n disabled: \"disabled\",\r\n rows: [0],\r\n type: \"visitors\",\r\n formSubmitted: false,\r\n now: moment(),\r\n status: visitorActions.getVisitorStauses(),\r\n found: true,\r\n meetings: [],\r\n limit: 7,\r\n defaultLimit: 7,\r\n dataReloaded: undefined\r\n };\r\n\r\n this.addVisitorValidation = null;\r\n //this.loadMoreMeetings;\r\n // this.addDatepickerValidation = null; \r\n autoBind(this);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n const { startDate, searchResult } = this.state;\r\n this.addValidation();\r\n this.props.dispatch(visitorsAction.cancelMeetingLoad());\r\n\r\n this.props.dispatch(residentAction.getAllResidents());\r\n\r\n\r\n this.props.dispatch(\r\n meetingActions.getMeetingsByDate(moment(startDate).format(\"YYYY-MM-DD\"))\r\n );\r\n\r\n if (this.props.searchRedirected === true) {\r\n\r\n this.setState({\r\n\r\n startDate: moment(this.props.location.state.startDate)\r\n })\r\n\r\n\r\n }\r\n if(this.props.searchResult && this.props.searchResult.searchText){\r\n this.setState({\r\n searchData : this.props.searchResult.searchText\r\n })\r\n }\r\n }\r\n \r\n\r\n componentWillUnmount() {\r\n\r\n if (this.addVisitorValidation)\r\n this.addVisitorValidation.destroy();\r\n\r\n this.formReset();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n // if (this.props.searchResult !== nextProps.searchResult && !_.isUndefined(this.props.searchRedirected)) {\r\n // this.refs[\"visitor-auto-suggest\"].state.value = this.refs[\"visitor-auto-suggest\"].state.value == \"\" ? this.props.searchResult.searchText : \"\";\r\n // }\r\n if (this.props.meetings !== prevProps.meetings) {\r\n\r\n if (this.props.meetings && (_.isUndefined(prevProps.searchRedirected) || prevProps.searchRedirected === false)) {\r\n this.setState({\r\n meetings: this.props.meetings\r\n });\r\n }\r\n\r\n if (_.isUndefined(this.state.dataReloaded)) {\r\n\r\n let data = {\r\n search_date: this.state.startDate.format(\"YYYY-MM-DD\"),\r\n data: this.state.meetings,\r\n searchText: this.state.searchText\r\n };\r\n\r\n\r\n }\r\n //visitor status changed on action, set new data on action completed\r\n if (!_.isUndefined(this.state.selectedMeeting) && this.props.meetings.length > 0) {\r\n var selectedMeetingUpdated = _.find(this.props.meetings, { id: this.state.selectedMeeting.id });\r\n\r\n if (selectedMeetingUpdated) {\r\n this.setState({\r\n selectedMeeting: selectedMeetingUpdated\r\n })\r\n }\r\n }\r\n\r\n\r\n if (_.isUndefined(this.props.searchRedirected) || !this.props.searchRedirected) {\r\n let data = {\r\n search_date: this.state.startDate.format(\"YYYY-MM-DD\"),\r\n data: this.props.meetings,\r\n searchText: this.state.searchText\r\n };\r\n this.props.dispatch(visitorsAction.storeVisitorSearch(data));\r\n\r\n }\r\n\r\n if (this.props.searchRedirected === true && !_.isUndefined(this.state.searchResult)) {\r\n\r\n let searchMeetings = this.state.searchResult.data;\r\n \r\n if (this.state.searchResult.meetingId && searchMeetings) {\r\n let meetingUpdated = _.find(this.props.meetings, { id: this.state.searchResult.meetingId });\r\n if (!_.isUndefined(meetingUpdated)) {\r\n searchMeetings = _.map(this.state.searchResult.data, item => {\r\n if (item.id === meetingUpdated.id) {\r\n return meetingUpdated;\r\n }\r\n \r\n return item;\r\n })\r\n }\r\n \r\n \r\n } else {\r\n searchMeetings = this.props.meetings\r\n }\r\n \r\n let data = {\r\n search_date: this.state.startDate.format(\"YYYY-MM-DD\"),\r\n data: searchMeetings,\r\n searchText: this.state.searchResult.searchText\r\n };\r\n this.props.dispatch(visitorsAction.storeVisitorSearch(data));\r\n\r\n this.setState({\r\n meetings: searchMeetings,\r\n searchText: this.state.searchResult.searchText\r\n })\r\n } \r\n }\r\n \r\n if (this.state.dataReLoaded !== prevState.dataReloaded) {\r\n\r\n if (this.state.dataReLoaded === true) {\r\n this.props.dispatch(visitorActions.visitorSearchRedirected(undefined))\r\n this.setState({\r\n dataReLoaded: undefined\r\n })\r\n }\r\n }\r\n }\r\n\r\n UNSAFE_componentWillUpdate(nextProps, nextState) {\r\n \r\n\r\n // if (this.state.dataReLoaded !== nextState.dataReloaded) {\r\n\r\n // if (nextState.dataReLoaded === true) {\r\n // this.props.dispatch(visitorActions.visitorSearchRedirected(undefined))\r\n // this.setState({\r\n // dataReLoaded: undefined\r\n // })\r\n // }\r\n // }\r\n\r\n\r\n// if (this.props.meetings !== nextProps.meetings) {\r\n\r\n// //data reload triggered, re update search data \r\n// if (_.isUndefined(this.state.dataReloaded)) {\r\n\r\n// let data = {\r\n// search_date: this.state.startDate.format(\"YYYY-MM-DD\"),\r\n// data: nextState.meetings,\r\n// searchText: this.state.searchText\r\n// };\r\n\r\n// // this.props.dispatch(visitorsAction.storeVisitorSearch(data));\r\n// }\r\n\r\n //from redirected and searchdata\r\n // if (this.props.searchRedirected === true && !_.isUndefined(this.state.searchResult)) {\r\n\r\n // let searchMeetings = this.state.searchResult.data;\r\n\r\n // if (this.state.searchResult.meetingId && searchMeetings) {\r\n // let meetingUpdated = _.find(nextProps.meetings, { id: this.state.searchResult.meetingId });\r\n // if (!_.isUndefined(meetingUpdated)) {\r\n // searchMeetings = _.map(this.state.searchResult.data, item => {\r\n // if (item.id === meetingUpdated.id) {\r\n // return meetingUpdated;\r\n // }\r\n\r\n // return item;\r\n // })\r\n // }\r\n\r\n\r\n // } else {\r\n // searchMeetings = nextProps.meetings\r\n // }\r\n\r\n // this.setState({\r\n // meetings: searchMeetings\r\n // })\r\n\r\n\r\n // }\r\n //}\r\n\r\n\r\n // // if(this.state.meetings !== nextState.meetings){\r\n\r\n // // let data = {\r\n // // search_date: this.state.startDate.format(\"YYYY-MM-DD\"),\r\n // // data: this.state.meetings,\r\n // // searchText: this.state.searchData\r\n // // };\r\n // // this.props.dispatch(visitorsAction.storeVisitorSearch(data));\r\n // // }\r\n\r\n\r\n // // if(this.props.searchResult !== nextProps.searchResult){\r\n // // this.setState({\r\n // // searchData : nextProps.searchResult.searchText\r\n // // });\r\n // // }\r\n }\r\n\r\n addValidation() {\r\n this.addVisitorValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n }\r\n\r\n validate(fromSubmit = false) {\r\n this.addVisitorValidation.validate({ force: true });\r\n\r\n const valid = this.addVisitorValidation.isValid();\r\n\r\n this.setState({\r\n addVisitorFormValid: valid,\r\n addVisitorFormUsed: true,\r\n rows: this.state.rows.concat([this.state.rows.length])\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.handleVisitorSearch();\r\n this.formReset();\r\n\r\n this.setState({\r\n addVisitorFormUsed: false,\r\n formSubmitted: true\r\n });\r\n }\r\n }\r\n\r\n formReset() {\r\n this.setState({\r\n name: \"\",\r\n visitorCompany: \"\",\r\n selecetMeetingId: undefined,\r\n selectedMeeting: undefined\r\n });\r\n }\r\n\r\n handleBookVisitorsClick(e) {\r\n this.props.history.push(\"/concierge/visitor-booking\");\r\n }\r\n\r\n\r\n handleVisitorSearch(e) {\r\n const { visitorCompany, name } = this.state;\r\n var now = new Date();\r\n const data = {\r\n status: \"notified\",\r\n companyName: visitorCompany,\r\n dueDate: dateFormat(now, \"isoDate\"),\r\n name: name\r\n };\r\n \r\n this.props.dispatch(\r\n visitorActions.searchVisitor(data, success => {\r\n if (success === true) {\r\n this.props.dispatch(visitorActions.getVisitorSearchInput(data));\r\n this.props.history.push({\r\n pathname: \"/concierge/visitor-checkin-review\",\r\n state: { visitorData: data }\r\n });\r\n\r\n }\r\n else {\r\n this.setState({\r\n found: false\r\n })\r\n setTimeout(() => {\r\n this.props.history.push({\r\n pathname: \"/concierge/visitor-management\",\r\n state: { visitorData: data }\r\n });\r\n }, 2000);\r\n\r\n }\r\n })\r\n );\r\n }\r\n handleInputChange(e) {\r\n const field = e.target.name;\r\n const value = e.target.value;\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n //handle selected visitor / meeting from auto suggest\r\n handleSelectedVisitor(data) {\r\n\r\n var selectedData = _.find(this.props.meetings, { id: data.meetingId });\r\n \r\n this.setState({\r\n selecetMeetingId: data.meetingId,\r\n visitorId: data.visitorId,\r\n visitorCompany: data.companyName,\r\n name: data.visitor,\r\n selectedMeeting: selectedData,\r\n meetings: selectedData ? [selectedData] : []\r\n });\r\n setTimeout(() => document.activeElement.blur());\r\n this.props.dispatch(visitorActions.visitorSearchRedirected(false));\r\n\r\n //update visitor search store\r\n let serach_data = {\r\n search_date: this.state.startDate.format(\"YYYY-MM-DD\"),\r\n data: [selectedData],\r\n searchText: this.state.searchData\r\n };\r\n this.props.dispatch(visitorsAction.storeVisitorSearch(serach_data));\r\n }\r\n\r\n\r\n getAddress(memberId) {\r\n const { residents } = this.props;\r\n var resident = _.find(residents, { id: memberId })\r\n if (_.isUndefined(resident))\r\n return \"\";\r\n return `${resident.addressLine1} ${resident.addressLine2}${','} ${resident.postCode}`;\r\n }\r\n\r\n\r\n handleSumbit(val) {\r\n const { meetings } = this.props;\r\n let selectedMeeting = _.filter(meetings, meeting => meeting.id === val);\r\n this.props.dispatch(visitorActions.checkinVisitor(selectedMeeting, success => {\r\n if (success === true) {\r\n this.props.dispatch(\r\n meetingsActions.getMeetingsByDate(dateFormat(this.state.startDate, \"isoDate\"))\r\n );\r\n }\r\n }));\r\n }\r\n\r\n\r\n handleDateChange(date) {\r\n this.setState({\r\n startDate: date\r\n });\r\n\r\n this.props.dispatch(\r\n meetingsActions.getMeetingsByDate(dateFormat(date, \"isoDate\"))\r\n );\r\n\r\n this.props.dispatch(visitorActions.visitorSearchRedirected(false));\r\n\r\n setTimeout(() => document.activeElement.blur());\r\n }\r\n\r\n //handle enter key used on visitor auto suggest\r\n handleAutoKeyPress(e, data) {\r\n if (e.Key === \"Enter\") {\r\n // console.log(\"enter key used: \", data);\r\n }\r\n\r\n }\r\n\r\n formatStatusString(status) {\r\n let val;\r\n switch (status) {\r\n case VisitorStatuses.CheckedIn:\r\n val = \"Checked-in\"\r\n break;\r\n case VisitorStatuses.CheckedOut:\r\n val = \"Checked-out\"\r\n break;\r\n case VisitorStatuses.Notified:\r\n val = \"Expected\"\r\n break;\r\n default:\r\n val = \"\";\r\n break;\r\n }\r\n\r\n return val;\r\n }\r\n loadMoreMeetings() {\r\n const postLength = this.state.meetings.length;\r\n const currentLimit = this.state.limit;\r\n const loadButton = document.getElementById(\"loaded\");\r\n if (currentLimit < postLength) {\r\n this.setState({ limit: currentLimit + 7 });\r\n\r\n setTimeout(() => {\r\n loadButton.scrollIntoView();\r\n }, 0);\r\n }\r\n // if (currentLimit >= postLength) {\r\n // loadButton.disabled = true;\r\n // }\r\n }\r\n\r\n GotoProfile(meetingId,data) {\r\n\r\n this.props.history.push({\r\n pathname: \"/concierge/visitor-profile\",\r\n state: {\r\n meetingId: (meetingId),\r\n meeting: data,\r\n searchText:this.refs[\"visitor-auto-suggest\"].state.value\r\n }\r\n });\r\n window.scrollTo(0, 0);\r\n }\r\n \r\n render() {\r\n const { visitorName, startDate, meetings, visitorFound } = this.state;\r\n \r\n const currentModule = _.find(\r\n this.props.modules,\r\n o => o.title === \"Visitors\"\r\n );\r\n\r\n\r\n\r\n let orderdMeetingsByTime = _.sortBy(meetings, [\"start\"], [\"asc\"]);\r\n\r\n console.log(meetings)\r\n\r\n const overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n \r\n return (\r\n
    \r\n\r\n
    \r\n \r\n\r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n data-parsley-validate-if-empty\r\n >\r\n\r\n
    \r\n\r\n
    \r\n {\r\n this.setState({\r\n searchData : val\r\n });\r\n }}\r\n matchfound={val => {\r\n \r\n this.setState({\r\n visitorFound: this.state.selectedMeeting == undefined ? val : true\r\n });\r\n // this.setState({\r\n // visitorFound: val\r\n // });\r\n }}\r\n handleKeyPress={(e, data) => {\r\n\r\n \r\n this.props.dispatch(visitorsAction.storeVisitorSearch(null)); \r\n this.setState({\r\n dataReLoaded: true,\r\n\r\n });\r\n if (e.key === \"Enter\") {\r\n\r\n let serach_data = {\r\n search_date: this.state.startDate.format(\"YYYY-MM-DD\"),\r\n data: data,\r\n searchText: this.state.searchData\r\n };\r\n this.props.dispatch(visitorsAction.storeVisitorSearch(serach_data));\r\n \r\n if (!_.isUndefined(this.state.selectedMeeting)) {\r\n this.setState({\r\n visitorMeetingOptions: [this.state.selectedMeeting],\r\n meetings: [this.state.selectedMeeting],\r\n selectedMeeting: undefined\r\n });\r\n } else {\r\n\r\n\r\n this.setState({\r\n visitorMeetingOptions: data,\r\n meetings: _.isUndefined(data) ? _.orderBy(this.props.meetings, ['date', 'visitor.firstName'], ['asc']) : data\r\n });\r\n }\r\n\r\n\r\n setTimeout(() => document.activeElement.blur());\r\n\r\n } if (e.key === \"Clear\") {\r\n \r\n this.setState({\r\n visitorMeetingOptions: data,\r\n meetings: this.props.meetings,\r\n visitorFound: undefined,\r\n selecetMeetingId : undefined,\r\n searchData : \"\",\r\n searchResult : undefined\r\n })\r\n }\r\n\r\n if (e.key === \"Reset\") {\r\n \r\n this.setState({\r\n visitorMeetingOptions: this.props.meetings,\r\n meetings: this.props.meetings,\r\n visitorFound: undefined,\r\n searchData : \"\",\r\n searchResult : undefined\r\n });\r\n this.props.history.push({\r\n pathname: \"/concierge/visitor-management\"\r\n });\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n \r\n\r\n\r\n\r\n {orderdMeetingsByTime &&\r\n orderdMeetingsByTime.length > 0 &&\r\n (_.isUndefined(visitorFound) || visitorFound === true) &&\r\n \r\n {\r\n orderdMeetingsByTime && orderdMeetingsByTime.length > 0 &&\r\n _.map(orderdMeetingsByTime.slice(0, this.state.limit),\r\n (meeting, index) => (\r\n\r\n \r\n )\r\n )}\r\n \r\n }\r\n\r\n
    \r\n
    \r\n = meetings.length}\r\n handleClick={this.loadMoreMeetings}\r\n />\r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n modules: moduleSelectors.loadModules(state),\r\n tenants: tenantSelector.getAllTenants(state),\r\n visitors: visitorSelector.getVisitors(state),\r\n instruction: meetingSelector.getSpecialInstruction(state),\r\n setting: settingSelector.loadGlobalSetting(state),\r\n meetings: meetingSelector.getMeetings(state),\r\n residents: residentSelectors.getResidents(state),\r\n searchRedirected: visitorSelector.getSearchFromRedirect(state),\r\n searchResult: visitorSelector.getSearchResult(state)\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(VisitorBooking));\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport autoBind from 'react-autobind';\r\nimport {withRouter} from 'react-router-dom'\r\nimport * as $ from 'jquery';\r\n\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport 'rc-time-picker/assets/index.css';\r\nimport _ from 'lodash';\r\nimport Datepicker from 'react-datepicker';\r\n\r\nimport moment from 'moment';\r\n//import dateFormat from \"dateformat\";\r\n\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport FooterNavigation from '../../../components/FooterNavigation/FooterNavigation';\r\n\r\n//import TenantAddrTypeAutoSuggest from \"../../../components/TenantAutoSuggest/TenantAddrTypeAutoSuggest\";\r\nimport TenantCompanyTypeAutoSuggest from '../../../components/TenantAutoSuggest/TenantCompanyTypeAutoSuggest';\r\n\r\nimport Button from '../../../components/Button/Button';\r\nimport ButtonGroup from '../../../components/Button/ButtonGroup';\r\nimport InputNewComponent from '../../../components/Input/InputNew';\r\n\r\n//import DetailListWithOverlay from \"../../../components/DetailList/DetailListWithOverlay\";\r\n\r\nimport * as serviceModulesActions from '../../../store/ServiceModules/actions';\r\n\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\n\r\n//import * as meetingAction from \"../../../store/Meetings/actions\";\r\n//import * as meetingSelector from \"../../../store/Meetings/reducer\";\r\n\r\nimport * as visitorSelector from '../../../store/Visitors/reducer';\r\n\r\nimport '../../../sass/containers/visitors/index.css';\r\nimport * as configHelpers from '../../../helpers/configHelper';\r\nimport * as visitorActions from '../../../store/Visitors/actions';\r\nimport * as meetingActions from '../../../store/Meetings/actions';\r\nimport * as meetingSelectors from '../../../store/Meetings/reducer';\r\nimport * as settingSelector from '../../../store/ConciergeSetting/reducer';\r\n\r\nfunction generateOptions(length, excludedOptions) {\r\n\tconst arr = [];\r\n\tfor (let value = 0; value < length; value++) {\r\n\t\tif (excludedOptions.indexOf(value) < 0) {\r\n\t\t\tarr.push(value);\r\n\t\t}\r\n\t}\r\n\treturn arr;\r\n}\r\nfunction disabledMinutes(h) {\r\n\tvar min_arr = [ 0 ];\r\n\tfor (let value = 0; value < 60; value++) {\r\n\t\tlet curr_min = value + 5;\r\n\t\tif (curr_min < 60 && curr_min % 5 === 0) {\r\n\t\t\tmin_arr.push(curr_min);\r\n\t\t}\r\n\t}\r\n\tswitch (h) {\r\n\t\tdefault:\r\n\t\t\treturn generateOptions(60, min_arr);\r\n\t}\r\n}\r\n\r\nconst PortalTypes = serviceModulesActions.getPortalTypes();\r\n\r\nconst StatusMessages = {\r\n\tBooked: 'Visitors successfully booked',\r\n\tUpdated: 'Changes Successfully Saved',\r\n\tUpdatedList: 'Visitor updated'\r\n};\r\n\r\nconst ActionButtonText = {\r\n\tCheckIn: 'Check-in',\r\n\tCheckOut: 'Check-out'\r\n};\r\n\r\n\r\nclass VisitorProfile extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tstartDate: moment(),\r\n\t\t\ttimeFrom: moment(),\r\n\t\t\ttimeTo: moment().add(1, 'hours'),\r\n\t\t\tcheckedInDate: moment(),\r\n\t\t\tcheckedInTime: moment(),\r\n\t\t\tcheckedOutTime: moment(),\r\n\t\t\tnow: moment().format('LLLL'),\r\n\t\t\ttype: 'Visitors',\r\n\t\t\tname: '',\r\n\t\t\tsuggestions: [],\r\n\t\t\tmeetingId: '',\r\n\t\t\ttenantId: undefined,\r\n\t\t\ttenantCompany: '',\r\n\t\t\ttenantName: '',\r\n\t\t\ttenantAddress: '',\r\n\t\t\ttenantType: '',\r\n\t\t\taddVisitorFormUsed: false,\r\n\t\t\tvisitorName: '',\r\n\t\t\tvisitorCompany: '',\r\n\t\t\tvisitorEmail: '',\r\n\t\t\tspecialInstruction: '',\r\n\t\t\tvisitorStatus: '',\r\n\t\t\tvisitorActionText: 'Check-in',\r\n\t\t\tcommercial: false,\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.setting && !_.isUndefined(this.props.setting.portalType)\r\n\t\t\t\t\t? this.props.setting.portalType\r\n\t\t\t\t\t: '',\r\n\t\t\tIsFormEditable: true,\r\n\t\t\tIsOverlayAppear: false,\r\n\t\t\tmessage: ''\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\thandleEditInfoClick() {\r\n\t\r\n\t\tif (this.state.IsFormEditable === true) {\r\n\t\t\tthis.setState({ IsFormEditable: !this.state.IsFormEditable, message: '' });\r\n\t\t} else {\r\n\t\t\tif (this.state.addVisitorFormValid && this.state.addVisitorFormValid === true)\r\n\t\t\t\tthis.setState({ IsFormEditable: !this.state.IsFormEditable, message: '' });\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t//redirect to management page if page load data is invalid or not available\r\n\t\tif (\r\n\t\t\t_.isUndefined(this.props.location.state) ||\r\n\t\t\t_.isUndefined(this.props.location.state.meetingId) ||\r\n\t\t\t_.isUndefined(this.props.location.state.meeting)\r\n\t\t) {\r\n\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/concierge/visitor-management'\r\n\t\t\t});\r\n\t\t}\r\n\t\t//initial propfile data initialized from page redirected here\r\n\t\t//state values would be maped to view component\r\n\t\tif (!_.isUndefined(this.props.location.state) && !_.isUndefined(this.props.location.state.meeting)) {\r\n\t\t\tlet meeting = this.props.location.state.meeting;\r\n\t\t\tlet actionText = '';\r\n\t\t\tif (meeting.visitor.status === configHelpers.VisitorStatuses.Notified) {\r\n\t\t\t\tactionText = ActionButtonText.CheckIn;\r\n\t\t\t} else if (meeting.visitor.status === configHelpers.VisitorStatuses.CheckedIn) {\r\n\t\t\t\tactionText = ActionButtonText.CheckOut;\r\n\t\t\t}\r\n\r\n\t\t\tlet data = {\r\n\t\t\t\tmeetingId: meeting.id,\r\n\t\t\t\ttenantId: meeting.tenant.id,\r\n\t\t\t\ttenantCompany: meeting.tenant.companyName,\r\n\t\t\t\tvisitorName: `${meeting.visitor.firstName} ${meeting.visitor.surname}`,\r\n\t\t\t\tvisitorCompany: meeting.visitor.companyName ? meeting.visitor.companyName : '',\r\n\t\t\t\tvisitorEmail: meeting.visitor.email ? meeting.visitor.email : '',\r\n\t\t\t\tspecialInstruction: meeting.specialInstructions ? meeting.specialInstructions : '',\r\n\t\t\t\tstartDate: moment(meeting.date),\r\n\t\t\t\ttimeFrom: moment(meeting.start),\r\n\t\t\t\ttimeTo: moment(meeting.end),\r\n\t\t\t\tcheckedInDate: moment(meeting.visitor.dueDate),\r\n\t\t\t\tcheckedInTime: moment(meeting.visitor.dueDate),\r\n\t\t\t\tcheckedOutTime: moment(meeting.visitor.checkedOutDate),\r\n\t\t\t\tvisitorStatus: meeting.visitor.status,\r\n\t\t\t\tvisitorActionText: actionText\r\n\t\t\t};\r\n\r\n\t\t\tthis.setState({ ...data });\r\n\r\n\t\t\tlet searchData = { ...this.props.searchResult, meetingId: data.meetingId };\r\n\t\t\tsearchData.searchText = this.props.location.state.searchText;\r\n\t\t\tthis.props.dispatch(visitorActions.storeVisitorSearch(searchData));\r\n\t\t}\r\n\r\n\t\tthis.addValidation();\r\n\t}\r\n\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (this.props.setting !== this.props.setting && !_.isUndefined(this.props.setting)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tportalType: this.props.setting.portalType\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.props.meeting !== prevProps.meeting && !_.isUndefined(this.props.meeting)) {\r\n\t\t\tthis.MapDataToControls(this.props.meeting);\r\n\t\t\tif (this.props.searResult) {\r\n\t\t\t\tlet updateData = _.map(this.props.searchResult.data, (res) => {\r\n\t\t\t\t\tif (res.id === this.props.meeting.id) {\r\n\t\t\t\t\t\treturn this.props.meeting;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet data = {\r\n\t\t\t\t\tsearch_date: this.props.searchResult.search_date,\r\n\t\t\t\t\tdata: updateData,\r\n\t\t\t\t\tmeetingId: this.state.meetingId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.props.dispatch(visitorActions.storeVisitorSearch(data));\r\n\t\t\t}\r\n\r\n\t\t\t/**send checked/arrived email notification */\r\n\t\t\tif (\r\n\t\t\t\tthis.props.meeting.visitor &&\r\n\t\t\t\tthis.props.meeting.visitor.status === configHelpers.VisitorStatuses.CheckedIn\r\n\t\t\t) {\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tmeetingActions.notifyCheckedIn([ this.props.meeting ], (status) => {\r\n\t\t\t\t\t\tif (status === true) {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tMapDataToControls(meeting) {\r\n\t\t//let meeting = this.props.location.state.meeting;\r\n\t\tlet actionText = '';\r\n\t\tif (meeting.visitor.status === configHelpers.VisitorStatuses.Notified) {\r\n\t\t\tactionText = ActionButtonText.CheckIn;\r\n\t\t} else if (meeting.visitor.status === configHelpers.VisitorStatuses.CheckedIn) {\r\n\t\t\tactionText = ActionButtonText.CheckOut;\r\n\t\t}\r\n\r\n\t\tlet data = {\r\n\t\t\tmeetingId: meeting.id,\r\n\t\t\ttenantId: meeting.tenant.id,\r\n\t\t\ttenantCompany: meeting.tenant.companyName,\r\n\t\t\tvisitorName: `${meeting.visitor.firstName} ${meeting.visitor.surname}`,\r\n\t\t\tvisitorCompany: meeting.visitor.companyName ? meeting.visitor.companyName : '',\r\n\t\t\tvisitorEmail: meeting.visitor.email,\r\n\t\t\tspecialInstruction: meeting.specialInstructions,\r\n\t\t\tstartDate: moment(meeting.date),\r\n\t\t\ttimeFrom: moment(meeting.start),\r\n\t\t\ttimeTo: moment(meeting.end),\r\n\t\t\tcheckedInDate: moment(meeting.visitor.dueDate),\r\n\t\t\tcheckedInTime: moment(meeting.visitor.dueDate),\r\n\t\t\tcheckedOutTime: moment(meeting.visitor.checkedOutDate),\r\n\t\t\tvisitorStatus: meeting.visitor.status,\r\n\t\t\tvisitorActionText: actionText\r\n\t\t};\r\n\r\n\t\tthis.setState({ ...data });\r\n\r\n\t\tthis.props.history.push({\r\n\t\t\tpathname: '/concierge/visitor-profile',\r\n\t\t\tstate: {\r\n\t\t\t\tmeetingId: meeting.id,\r\n\t\t\t\tmeeting: meeting\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\thandleVisitorAction() {\r\n\t\tconst { visitorStatus, visitorActionText, meetingId } = this.state;\r\n\t\tlet data = [ { id: meetingId } ];\r\n\t\tif (\r\n\t\t\tvisitorActionText === ActionButtonText.CheckIn &&\r\n\t\t\tvisitorStatus === configHelpers.VisitorStatuses.Notified\r\n\t\t) {\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tvisitorActions.checkinVisitor(data, (success) => {\r\n\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\tthis.props.dispatch(meetingActions.getMeetingById(meetingId));\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t} else if (\r\n\t\t\tvisitorActionText === ActionButtonText.CheckOut &&\r\n\t\t\tvisitorStatus === configHelpers.VisitorStatuses.CheckedIn\r\n\t\t) {\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tvisitorActions.checkOutVisitor(data, (success) => {\r\n\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\tthis.props.dispatch(meetingActions.getMeetingById(meetingId));\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tIsOverlayAppear: false\r\n\t\t});\r\n\t}\r\n\r\n\tvalidate(fromSubmit = false) {\r\n\t\tthis.addVisitorValidation.validate({ force: true });\r\n\r\n\t\tconst valid = this.addVisitorValidation.isValid();\r\n\t\tthis.setState({\r\n\t\t\taddVisitorFormValid: valid,\r\n\t\t\taddVisitorFormUsed: true\r\n\t\t});\r\n\r\n\t\tif (valid === true && fromSubmit === true) {\r\n\t\t\tlet meeting = this.props.location.state.meeting;\r\n\r\n\t\t\tconst visitorName = this.state.visitorName;\r\n\t\t\tconst element = visitorName.split(' ');\r\n\r\n\t\t\tlet visitorFirstName = '',\r\n\t\t\t\tvisitorSurName = '';\r\n\t\t\tif (element.length > 1) {\r\n\t\t\t\tfor (var i = 0; i < element.length; i++) {\r\n\t\t\t\t\tif (element[i] != '') {\r\n\t\t\t\t\t\tif (i == 0) visitorFirstName = element[i];\r\n\t\t\t\t\t\telse visitorSurName += element[i] + ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet data = {\r\n\t\t\t\tid: meeting.id,\r\n\t\t\t\tvisitorId: meeting.visitorId,\r\n\t\t\t\tmemberId: this.state.tenantId,\r\n\t\t\t\tdate: this.state.startDate,\r\n\t\t\t\tstart: this.state.timeFrom,\r\n\t\t\t\tend: this.state.timeTo,\r\n\t\t\t\tspecialInstructions: this.state.specialInstruction,\r\n\t\t\t\tvisitor: {\r\n\t\t\t\t\tid: meeting.visitor.id,\r\n\t\t\t\t\tfirstName: element.length > 1 ? visitorFirstName : '',\r\n\t\t\t\t\tsurname: element.length > 1 ? visitorSurName : '',\r\n\t\t\t\t\temail: this.state.visitorEmail,\r\n\t\t\t\t\tcompanyName: this.state.visitorCompany,\r\n\t\t\t\t\tmeetingId: meeting.id\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tmeetingActions.updateMeeting(data, (success) => {\r\n\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t//this.props.dispatch(meetingActions.setMettingsQueue([]));\r\n\t\t\t\t\t\t// this.formReset();\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tmessage: StatusMessages.Updated,\r\n\t\t\t\t\t\t\tIsFormEditable: true\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\taddValidation() {\r\n\t\tthis.addVisitorValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// this.addDatepickerValidation = $(this.refs.validate).parsley({\r\n\t\t// classHandler: function(el) {\r\n\t\t// return el.$element.closest(\"input\");\r\n\t\t// }\r\n\t\t// });\r\n\r\n\t\t// this.addVisitorValidation = $(\"pickeryDate\").parsley({\r\n\t\t// classHandler: function(el) {\r\n\t\t// return el.$element.closest(\"input\");\r\n\t\t// }\r\n\t\t// });\r\n\t}\r\n\r\n\thandleCancelClick() {\r\n\t\tconst { meetingId } = this.state;\r\n\t\tif (!this.state.IsFormEditable) {\r\n\t\t\tthis.MapDataToControls(this.props.location.state.meeting);\r\n\t\t\tthis.setState({\r\n\t\t\t\tIsFormEditable: true\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.props.dispatch(visitorActions.visitorSearchRedirected(true));\r\n\t\t\tlet orderdMeetingsBySearch = _.filter(this.props.searchResult.data, (orderdMeetingsByTime) => {\r\n\t\t\t\treturn orderdMeetingsByTime.id === meetingId;\r\n\t\t\t});\r\n\r\n\t\t\tlet updatedResults, data;\r\n\t\t\tif (\r\n\t\t\t\tmoment(this.props.searchResult.search_date).format('YYYY-MM-DD') !==\r\n\t\t\t\tmoment(this.state.startDate).format('YYYY-MM-DD')\r\n\t\t\t) {\r\n\t\t\t\tupdatedResults = _.filter(this.props.searchResult.data, (orderdMeetingsByTime) => {\r\n\t\t\t\t\treturn orderdMeetingsByTime.id !== meetingId;\r\n\t\t\t\t});\r\n\t\t\t\tdata = {\r\n\t\t\t\t\tsearch_date: this.props.searchResult.search_date,\r\n\t\t\t\t\tdata: updatedResults,\r\n\t\t\t\t\tsearchText: '',\r\n\t\t\t\t\tmeetingId: meetingId\r\n\t\t\t\t};\r\n\t\t\t\tthis.props.dispatch(visitorActions.storeVisitorSearch(data));\r\n\t\t\t} else data = this.props.searchResult;\r\n\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/concierge/visitor-management',\r\n\t\t\t\t// state: { module: \"Visitors\" }\r\n\t\t\t\tstate: {\r\n\t\t\t\t\tstartDate: this.props.searchResult\r\n\t\t\t\t\t\t? moment(this.props.searchResult.search_date).format('YYYY-MM-DD')\r\n\t\t\t\t\t\t: moment(),\r\n\t\t\t\t\tsearchResult: data,\r\n\t\t\t\t\tmeetingId: meetingId\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\twindow.scrollTo(0, 0);\r\n\t\t}\r\n\t}\r\n\r\n\thandleInputChange(e) {\r\n\t\tconst field = e.target.name;\r\n\t\tconst value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value,\r\n\t\t\tmessage: '',\r\n\t\t\tisSuccessfull: undefined\r\n\t\t});\r\n\t}\r\n\r\n\thandleTimeFromChange(val) {\r\n\t\tlet checkMins = 23 * 60 + 59;\r\n\r\n\t\tlet toTime = moment(val).add(1, 'hours');\r\n\r\n\t\tif (toTime.hours() === 0) {\r\n\t\t\tlet today = moment(val).toDate();\r\n\t\t\tlet maxEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate());\r\n\r\n\t\t\tmaxEnd.setMinutes(checkMins);\r\n\r\n\t\t\ttoTime = moment(maxEnd);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\ttimeFrom: val,\r\n\t\t\ttimeTo: toTime\r\n\t\t});\r\n\t}\r\n\r\n\thandleTimeToChange(val) {\r\n\t\tthis.setState({\r\n\t\t\ttimeTo: val\r\n\t\t});\r\n\t}\r\n\r\n\thandleDateChange(date) {\r\n\t\tconst { timeFrom, timeTo, meetingId } = this.state;\r\n\t\tconst { searchResult } = this.props;\r\n\r\n\t\tlet time_from = moment(date.format('YYYY-MM-DD' + ' ' + timeFrom.format('HH:mm')));\r\n\t\tlet time_to = moment(date.format('YYYY-MM-DD' + ' ' + timeTo.format('HH:mm')));\r\n\r\n\t\tif (searchResult) {\r\n\t\t\tlet updateMeeting = _.map(searchResult.data, (o) => {\r\n\t\t\t\tif (o.id === meetingId) {\r\n\t\t\t\t\treturn { ...o, date: date.toDate(), start: time_from.toDate(), end: time_to.toDate() };\r\n\t\t\t\t}\r\n\t\t\t\treturn o;\r\n\t\t\t});\r\n\r\n\t\t\tlet data = {\r\n\t\t\t\tsearch_date: searchResult.search_date,\r\n\t\t\t\tdata: updateMeeting,\r\n\t\t\t\tsearchText: searchResult.searchText,\r\n\t\t\t\tmeetingId: meetingId\r\n\t\t\t};\r\n\t\t\tthis.props.dispatch(visitorActions.storeVisitorSearch(data));\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tstartDate: date,\r\n\t\t\ttimeFrom: time_from,\r\n\t\t\ttimeTo: time_to\r\n\t\t});\r\n\t}\r\n\r\n\thandleCheckin() {\r\n\t\tthis.setState({\r\n\t\t\tIsOverlayAppear: true\r\n\t\t});\r\n\t}\r\n\r\n\thandleNoClick() {\r\n\t\tthis.setState({\r\n\t\t\tIsOverlayAppear: false\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\ttenantCompany,\r\n\t\t\tstartDate,\r\n\t\t\ttenant,\r\n\t\t\ttimeFrom,\r\n\t\t\ttimeTo,\r\n\t\t\tvisitorName,\r\n\t\t\tvisitorEmail,\r\n\t\t\tvisitorCompany,\r\n\t\t\ttenantId,\r\n\t\t\tvisitorActionText,\r\n\t\t\tspecialInstruction,\r\n\t\t\tcheckedInDate,\r\n\t\t\tcheckedInTime,\r\n\t\t\tcheckedOutTime\r\n\t\t} = this.state;\r\n\t\tconst { tenants } = this.props;\r\n\t\tconst currentModule = _.find(this.props.modules, (o) => o.title === 'Visitors');\r\n\r\n\t\tconst overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\t\t// const visitor_style = {\r\n\t\t// color: overlayColor,\r\n\t\t// fontSize: \"80px\",\r\n\t\t// textTransform: \"capitalize\"\r\n\t\t// }\r\n\r\n\t\tvar now = new Date();\r\n\t\tconst EditButton_style_checkout = {\r\n\t\t\tdisplay: 'none'\r\n\t\t};\r\n\r\n\t\tconst EditButton_style_others = {\r\n\t\t\tdisplay: 'block'\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\t\t//data-parsley-inputs\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t\t\t'data-parsley-pattern': \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n\t\t\t\t\t\t\t\t\t\t'data-parsley-minlength': 2,\r\n\t\t\t\t\t\t\t\t\t\t'data-parsley-required': true,\r\n\t\t\t\t\t\t\t\t\t\t'data-parsley-minwords': '2',\r\n\t\t\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter visitor first and the last name'\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdisabled={this.state.IsFormEditable}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\tdisabled={this.state.IsFormEditable}\r\n\t\t\t\t\t\t\t\t\t// parsley={{\r\n\t\t\t\t\t\t\t\t\t// \"data-parsley-pattern\": \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n\t\t\t\t\t\t\t\t\t// // \"data-parsley-minlength\": 2,\r\n\t\t\t\t\t\t\t\t\t// // \"data-parsley-required\": true,\r\n\t\t\t\t\t\t\t\t\t// \"data-parsley-minwords\": \"2\",\r\n\t\t\t\t\t\t\t\t\t// \"data-parsley-error-message\":\r\n\t\t\t\t\t\t\t\t\t// \"Please enter company name in correct format\"\r\n\t\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\tdisabled={this.state.IsFormEditable}\r\n\t\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t\t'data-parsley-type': 'email',\r\n\t\t\t\t\t\t\t\t\t'data-parsley-validate-if-empty': false,\r\n\t\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter a valid email'\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t// parsley={{\r\n\t\t\t\t\t\t\t\t// \"data-parsley-pattern\": \"/^[a-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n\t\t\t\t\t\t\t\t// // \"data-parsley-minlength\": 2,\r\n\t\t\t\t\t\t\t\t// //\"data-parsley-required\": true,\r\n\t\t\t\t\t\t\t\t// \"data-parsley-minwords\": \"2\",\r\n\t\t\t\t\t\t\t\t// \"data-parsley-error-message\":\r\n\t\t\t\t\t\t\t\t// \"Please enter email in the correct format\"\r\n\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t{this.state.portalType === PortalTypes.Commercial ? (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantId: data.memberId,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantName: data.tenant,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantCompany: data.companyName,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantType: data.memberType\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Timeout added otherwise validation not fired because autosuggest still updating DOM */\r\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.state.addVisitorFormUsed && this.validate();\r\n\t\t\t\t\t\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\t\t\tparsley={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t//\"data-parsley-pattern\": \"/^[A-Za-z ]+$/\", // alpha chars only https://stackoverflow.com/questions/23415795/\r\n\t\t\t\t\t\t\t\t\t\t\t\t//\"data-parsley-minlength\": 2,\r\n\t\t\t\t\t\t\t\t\t\t\t\t'data-parsley-minwords': '1',\r\n\t\t\t\t\t\t\t\t\t\t\t\t'data-parsley-required': true,\r\n\t\t\t\t\t\t\t\t\t\t\t\t'data-parsley-error-message': 'Please enter a valid company name'\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={true}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantId: data.memberId,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantName: data.tenant,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantCompany: data.companyName,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttenantType: data.memberType\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Timeout added otherwise validation not fired because autosuggest still updating DOM */\r\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.state.addVisitorFormUsed && this.validate();\r\n\t\t\t\t\t\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{this.state.visitorStatus !== configHelpers.VisitorStatuses.CheckedOut && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{this.state.IsOverlayAppear ? (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\tDo you wish to {visitorActionText} this visitor?\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{this.state.visitorActionText === 'Check-out' ? '' : 'Special Instruction'}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t this.handleVisitorAction()}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{visitorName}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t\t{this.state.visitorActionText === 'Check-out' ? '' : specialInstruction}{' '}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{/* */}\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t{this.state.visitorActionText === 'Check-out' ||\r\n\t\t\t\t\t\tthis.state.visitorStatus === configHelpers.VisitorStatuses.CheckedOut ? (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{moment(checkedOutTime).format('YYYY-MM-DD') !== '0001-01-01' ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={this.state.IsFormEditable}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\tdisabled={this.state.IsFormEditable}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.addVisitorFormValid && (\r\n\t\t\t\t\t\t\t\t
    {/*

    Sending data To Server...

    */}
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t{this.state.message && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (this.state.IsFormEditable === true) this.handleEditInfoClick();\r\n\r\n\t\t\t\t\t\t\t\t\tif (!this.state.IsFormEditable) this.validate(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tleftClick={this.handleCancelClick}\r\n\t\t\t\t\t\t\t\trightStyle={\r\n\t\t\t\t\t\t\t\t\tthis.state.visitorStatus === configHelpers.VisitorStatuses.CheckedOut ||\r\n\t\t\t\t\t\t\t\t\tthis.state.visitorStatus === configHelpers.VisitorStatuses.CheckedIn ? (\r\n\t\t\t\t\t\t\t\t\t\tEditButton_style_checkout\r\n\t\t\t\t\t\t\t\t\t) : this.state.visitorStatus === configHelpers.VisitorStatuses.Notified &&\r\n\t\t\t\t\t\t\t\t\tmoment().isAfter(moment(this.state.startDate), 'day') ? (\r\n\t\t\t\t\t\t\t\t\t\tEditButton_style_checkout\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tEditButton_style_others\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\totherClass={\r\n\t\t\t\t\t\t\t\t\tthis.state.visitorStatus === configHelpers.VisitorStatuses.CheckedOut ||\r\n\t\t\t\t\t\t\t\t\tthis.state.visitorStatus === configHelpers.VisitorStatuses.CheckedIn ? (\r\n\t\t\t\t\t\t\t\t\t\t'cancel-button-onchekout'\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tsetting: settingSelector.loadGlobalSetting(state),\r\n\t\tmeeting: meetingSelectors.getMeeting(state),\r\n\t\tsearchResult: visitorSelector.getSearchResult(state)\r\n\t};\r\n}\r\nexport default withRouter(connect(mapStateToProps)(VisitorProfile));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport autoBind from \"react-autobind\";\r\n\r\nimport {withRouter} from 'react-router-dom';\r\nimport * as $ from \"jquery\";\r\n\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport \"rc-time-picker/assets/index.css\";\r\nimport _ from \"lodash\";\r\nimport Datepicker from \"react-datepicker\";\r\n\r\nimport moment from \"moment\";\r\nimport dateFormat from \"dateformat\";\r\n\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\nimport FooterNavigation from \"../../../components/FooterNavigation/FooterNavigation\";\r\n\r\nimport TenantAddrTypeAutoSuggest from \"../../../components/TenantAutoSuggest/TenantAddrTypeAutoSuggest\";\r\nimport TenantCompanyTypeAutoSuggest from \"../../../components/TenantAutoSuggest/TenantCompanyTypeAutoSuggest\";\r\n\r\nimport Button from \"../../../components/Button/Button\";\r\nimport ButtonGroup from \"../../../components/Button/ButtonGroup\";\r\nimport InputComponent from \"../../../components/Input/Input\";\r\nimport DetailList from \"../../../components/DetailList/DetailList\";\r\n\r\nimport * as serviceModulesActions from \"../../../store/ServiceModules/actions\";\r\nimport * as settingSelector from \"../../../store/ConciergeSetting/reducer\";\r\n\r\nimport * as moduleSelectors from \"../../../store/ServiceModules/reducer\";\r\nimport * as tenantActions from \"../../../store/Tenants/actions\";\r\nimport * as tenantSelector from \"../../../store/Tenants/reducer\";\r\nimport * as meetingAction from \"../../../store/Meetings/actions\";\r\nimport * as meetingSelector from \"../../../store/Meetings/reducer\";\r\n\r\nimport * as visitorSelector from \"../../../store/Visitors/reducer\";\r\n\r\nimport \"../../../sass/containers/visitors/index.css\";\r\n\r\nfunction generateOptions(length, excludedOptions) {\r\n const arr = [];\r\n for (let value = 0; value < length; value++) {\r\n if (excludedOptions.indexOf(value) < 0) {\r\n arr.push(value);\r\n }\r\n }\r\n return arr;\r\n}\r\nfunction disabledMinutes(h) {\r\n var min_arr = [0];\r\n for (let value = 0; value < 60; value++) {\r\n let curr_min = value + 5;\r\n if (curr_min < 60 && (curr_min % 5 === 0)) {\r\n min_arr.push(curr_min);\r\n }\r\n }\r\n switch (h) {\r\n default:\r\n return generateOptions(60, min_arr);\r\n }\r\n}\r\n\r\nconst PortalTypes = serviceModulesActions.getPortalTypes();\r\n\r\nclass ManagementScreen extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: \"\",\r\n name: \"\",\r\n suggestions: [],\r\n tenantId: \"\",\r\n tenantCompany: \"\",\r\n tenantName: \"\",\r\n tenantAddress: \"\",\r\n tenantType: \"\",\r\n startDate: moment(),\r\n timeFrom: moment(),\r\n timeTo: moment().add(1, 'hours'),\r\n now: moment().format(\"LLLL\"),\r\n addVisitorFormUsed: false,\r\n visitorName: !_.isUndefined(this.props.location.state) ? this.props.location.state.visitorData.visitorName : \"\",\r\n visitorCompany: !_.isUndefined(this.props.location.state) ? this.props.location.state.visitorData.visitorCompany : \"\",\r\n visitorEmail: \"\",\r\n rows: [0],\r\n type: \"Visitors\",\r\n specialInstruction: \"\",\r\n commercial: false,\r\n portalType: this.props.setting && !_.isUndefined(this.props.setting.portalType) ? this.props.setting.portalType : \"\"\r\n };\r\n\r\n this.addVisitorValidation = null;\r\n // this.addDatepickerValidation = null;\r\n autoBind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const { specialInstruction } = this.state;\r\n\r\n /** Just to get it all working */\r\n\r\n this.addValidation();\r\n this.props.dispatch(tenantActions.getAllTenants());\r\n\r\n if (specialInstruction === \"\" && this.props.instruction) {\r\n this.setState({\r\n specialInstruction: this.props.instruction\r\n });\r\n }\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.setting !== this.props.setting && !_.isUndefined(this.props.setting)) {\r\n this.setState({\r\n portalType: this.props.setting.portalType\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.addVisitorValidation.destroy();\r\n // this.addDatepickerValidation.destroy();\r\n }\r\n addValidation() {\r\n this.addVisitorValidation = $(this.refs.validate).parsley({\r\n classHandler: function (el) {\r\n return el.$element.closest(\"div:not(.input-wrapper):not(.Select)\");\r\n }\r\n });\r\n\r\n // this.addDatepickerValidation = $(this.refs.validate).parsley({\r\n // classHandler: function(el) {\r\n // return el.$element.closest(\"input\");\r\n // }\r\n // });\r\n\r\n // this.addVisitorValidation = $(\"pickeryDate\").parsley({\r\n // classHandler: function(el) {\r\n // return el.$element.closest(\"input\");\r\n // }\r\n // });\r\n }\r\n validate(fromSubmit = false) {\r\n this.addVisitorValidation.validate({ force: true });\r\n // this.addDatepickerValidation.validate({ force: true });\r\n const valid = this.addVisitorValidation.isValid();\r\n // this.addVisitorValidation.isValid() &&\r\n // this.addDatepickerValidation.isValid();\r\n\r\n this.setState({\r\n addVisitorFormValid: valid,\r\n addVisitorFormUsed: true,\r\n rows: this.state.rows.concat([this.state.rows.length])\r\n });\r\n\r\n if (valid === true && fromSubmit === true) {\r\n this.formReset();\r\n const {\r\n\r\n timeFrom,\r\n startDate,\r\n timeTo,\r\n tenantId,\r\n visitorName,\r\n visitorCompany,\r\n tenantCompany,\r\n tenantName,\r\n tenantType,\r\n visitorEmail,\r\n rows,\r\n specialInstruction\r\n } = this.state;\r\n\r\n const timeFromExpected = dateFormat(timeFrom, \"isoTime\");\r\n const timeToExpected = dateFormat(timeTo, \"isoTime\");\r\n const dateExpected = dateFormat(startDate._d, \"isoDate\");\r\n\r\n let dueDT = moment(dateExpected + \" \" + timeFromExpected);\r\n let toDT = moment(dateExpected + \" \" + timeToExpected);\r\n\r\n var data = {\r\n tenantId: tenantId,\r\n tenantName: tenantName,\r\n tenantCompany: tenantCompany,\r\n tenantType: tenantType,\r\n name: visitorName,\r\n companyName: visitorCompany,\r\n dueDate: dueDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n endDate: toDT.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n status: \"notified\",\r\n email: visitorEmail,\r\n specialInstruction: specialInstruction,\r\n index: rows[rows.length - 1]\r\n };\r\n\r\n this.props.dispatch(meetingAction.addMeetingToQueue([data]));\r\n }\r\n }\r\n formReset() {\r\n // Doesnt seem to be working....\r\n // this.addParcelValidation.reset();\r\n\r\n this.setState({\r\n tenantAddress: \"\"\r\n });\r\n\r\n this.refs[\"tenant-auto-suggest\"].getWrappedInstance().reset();\r\n $(this.refs.validate)\r\n .get(0)\r\n .reset();\r\n\r\n this.addVisitorValidation.destroy();\r\n //this.addDatePickerValidation.destroy();\r\n\r\n // Reset all the select input components to the placeholder value\r\n for (let key in this.refs) {\r\n if (key.indexOf(\"formSelect\") === 0) {\r\n this.refs[key].reset();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.addValidation();\r\n }, 0);\r\n }\r\n\r\n handleInputChange(e) {\r\n const field = e.target.name;\r\n const value = e.target.value;\r\n this.setState({\r\n [field]: value\r\n });\r\n }\r\n\r\n handleSubmit(e) {\r\n const { specialInstruction } = this.state;\r\n\r\n if (specialInstruction) {\r\n this.props.dispatch(\r\n meetingAction.addSpectialInstruction(specialInstruction)\r\n );\r\n }\r\n\r\n this.props.history.push(\"/concierge/visitor-management-review\");\r\n }\r\n\r\n handleDateChange(date) {\r\n this.setState({\r\n startDate: date\r\n });\r\n }\r\n handleTimeFromChange(val) {\r\n this.setState({\r\n timeFrom: val,\r\n timeTo: moment(val).add(1, 'hours')\r\n });\r\n }\r\n handleTimeToChange(val) {\r\n this.setState({\r\n timeTo: val\r\n });\r\n }\r\n removeFromQueue(index) {\r\n //index\r\n this.props.dispatch(meetingAction.removeMeetingFromQueue(index));\r\n }\r\n\r\n disabledHours() {\r\n const { timeFrom } = this.state;\r\n let time = [];\r\n for (let i = 0; i < 24; i++) {\r\n time.push(i);\r\n }\r\n if (!_.isUndefined(timeFrom) || timeFrom !== null)\r\n return _.filter(time, t => {\r\n if (timeFrom !== null) {\r\n return t < timeFrom.hour();\r\n } else {\r\n return t;\r\n }\r\n });\r\n }\r\n\r\n\r\n render() {\r\n\r\n const {\r\n tenantCompany,\r\n startDate,\r\n specialInstruction,\r\n timeFrom,\r\n timeTo,\r\n // tenantAddress\r\n } = this.state;\r\n const currentModule = _.find(\r\n this.props.modules,\r\n o => o.title === \"Visitors\"\r\n );\r\n\r\n\r\n const overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n const visitor_style = {\r\n color: overlayColor,\r\n fontSize: \"30px\",\r\n textTransform: \"capitalize\"\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {\r\n e.preventDefault();\r\n }}\r\n data-parsley-errors-container=\"#validation-messages\"\r\n data-parsley-focus=\"none\"\r\n data-parsley-validate-if-empty\r\n //data-parsley-inputs\r\n >\r\n\r\n {this.state.portalType === PortalTypes.Commercial ?\r\n
    \r\n
    \r\n 0 && this.state.tenantId !== \"\"\r\n }\r\n value={this.state.tenant}\r\n clearableIfValid={false}\r\n onSelected={data => {\r\n this.setState({\r\n tenantId: data.memberId,\r\n tenantName: data.tenant,\r\n tenantCompany: data.companyName,\r\n tenantType: data.memberType\r\n });\r\n\r\n /* Timeout added otherwise validation not fired because autosuggest still updating DOM */\r\n setTimeout(() => {\r\n this.state.addVisitorFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n 0 && this.state.tenantId !== \"\"\r\n }\r\n />\r\n
    \r\n
    \r\n :\r\n
    \r\n
    \r\n {\r\n\r\n this.setState({\r\n tenantId: data.memberId,\r\n tenantAddress: data.address,\r\n tenantName: data.tenant,\r\n\r\n });\r\n\r\n setTimeout(() => {\r\n this.state.addVisitorFormUsed && this.validate();\r\n }, 0);\r\n }}\r\n defaultText={dataVal => { }}\r\n disabled={\r\n this.props.meetings.length > 0 && this.state.tenantId !== \"\"\r\n }\r\n />\r\n
    \r\n {\r\n /**
    \r\n 0 && this.state.tenantId !== \"\"\r\n }\r\n />\r\n
    \r\n */\r\n }\r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n \r\n\r\n }\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n\r\n\r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n {this.state.addVisitorFormValid && (\r\n
    \r\n {/*

    Sending data To Server...

    */}\r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n this.validate(true)}\r\n isDisabled={this.props.meetings.length < 0}\r\n />\r\n
    \r\n \r\n\r\n
    \r\n {\r\n this.removeFromQueue(index);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n

    Instructions

    \r\n \r\n \r\n
    \r\n {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: { setModule: \"Visitors\" }\r\n });\r\n }}\r\n rightClick={this.handleSubmit}\r\n icon_l=\"arrow-left-c\"\r\n icon_r=\"arrow-right-c\"\r\n />\r\n\r\n \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n modules: moduleSelectors.loadModules(state),\r\n tenants: tenantSelector.getAllTenants(state),\r\n meetings: meetingSelector.getMeetingsQueue(state),\r\n visitors: visitorSelector.getVisitors(state),\r\n instruction: meetingSelector.getSpecialInstruction(state),\r\n setting: settingSelector.loadGlobalSetting(state)\r\n\r\n };\r\n}\r\nexport default withRouter(connect(mapStateToProps)(ManagementScreen));\r\n","export const PAYMENT_GATEWAY_SETTINGS_LOAD_SUCCESS = \"PAYMENT_GATEWAY_SETTINGS_LOAD_SUCCESS\";\r\nexport const PAYMENT_SIGNATURE_LOAD_SUCCESS = \" PAYMENT_SIGNATURE_LOAD_SUCCESS\";\r\nexport const PAYMENT_GATEWAY_SETTINGS_LOAD_FAIL = \"PAYMENT_GATEWAY_SETTINGS_LOAD_FAIL\";\r\nexport const PAYMENT_SIGNATURE_LOAD_FAIL = \" PAYMENT_SIGNATURE_LOAD_FAIL\";\r\n","import * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\nimport _ from \"lodash\";\r\n\r\n\r\n\r\n\r\nconst initialState = Immutable({\r\n settings: {},\r\n errors: [],\r\n signature: undefined\r\n});\r\n\r\n\r\nexport default function paymentGatewayReducer(state = initialState, action = {}) {\r\n\r\n switch (action.type) {\r\n\r\n case types.PAYMENT_GATEWAY_SETTINGS_LOAD_SUCCESS:\r\n return state.merge({\r\n settings: action.settings\r\n });\r\n case types.PAYMENT_GATEWAY_SETTINGS_LOAD_FAIL:\r\n\r\n return state.merge({\r\n errors: _.concat(state.errors, action.errors)\r\n });\r\n case types.PAYMENT_SIGNATURE_LOAD_SUCCESS:\r\n return state.merge({\r\n signature: action.signature\r\n });\r\n\r\n default:\r\n return state;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\nexport function getGatewaySettings(state) {\r\n return state.paymentGateway.settings;\r\n}\r\n\r\nexport function getGatewayErrors(state) {\r\n return state.paymentGateway.errors;\r\n}\r\n\r\nexport function getPaymentSignature(state) {\r\n return state.paymentGateway.signature;\r\n}\r\n","import * as types from './actionTypes';\r\nimport conciergeServices from '../../services/ConciergeSettingService';\r\n\r\nexport function fetchgatewaySettings(callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tconst result = await conciergeServices.getpaymentGatewaySettings();\r\n\r\n\t\t\tif (result) {\r\n\t\t\t\tdispatch({ type: types.PAYMENT_GATEWAY_SETTINGS_LOAD_SUCCESS, settings: result });\r\n\t\t\t\tcallback(true);\r\n\t\t\t} else {\r\n\t\t\t\tdispatch({ type: types.PAYMENT_GATEWAY_SETTINGS_LOAD_FAIL, errors: result });\r\n\t\t\t\tcallback(true);\r\n\t\t\t}\r\n\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\r\n\t\t\tdispatch({ type: types.PAYMENT_GATEWAY_SETTINGS_LOAD_FAIL, errors: error.message });\r\n\t\t\t//console.error(error);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getPaymentSignature(amount, currency, cartid, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar result = await conciergeServices.getpaymentSignature(amount, currency, cartid);\r\n\t\t\tdispatch({ type: types.PAYMENT_SIGNATURE_LOAD_SUCCESS, signature: result });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\r\n\t\t\tdispatch({ type: types.PAYMENT_SIGNATURE_LOAD_FAIL, errors: error.message });\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport function getPaymentCryptSignature(paymentType, data, callback = () => {}) {\r\n\treturn async (dispatch, getState) => {\r\n\t\ttry {\r\n\t\t\tvar result = await conciergeServices.getPaymentSignatureCrypt(paymentType, data);\r\n\t\t\tdispatch({ type: types.PAYMENT_SIGNATURE_LOAD_SUCCESS, signature: result });\r\n\t\t\tcallback(true);\r\n\t\t} catch (error) {\r\n\t\t\tcallback(false);\r\n\r\n\t\t\tdispatch({ type: types.PAYMENT_SIGNATURE_LOAD_FAIL, errors: error.message });\r\n\t\t}\r\n\t};\r\n}\r\n","//import _ from \"lodash\";\r\nimport * as types from \"./actionTypes\";\r\nimport Immutable from \"seamless-immutable\";\r\n\r\nconst initialState = Immutable({\r\n bbAuthToken: undefined,\r\n bbIsLoggedIn: false,\r\n companyId: undefined,\r\n companyName: undefined\r\n});\r\n\r\nexport default function bbauthreduce(state = initialState, action = {}) {\r\n switch (action.type) {\r\n case types.LOGIN_COMPLETED:\r\n return state.merge({\r\n bbAuthToken: action.loginData.bbAuthToken,\r\n bbIsLoggedIn: true\r\n });\r\n case types.FETCH_COMPANY_ID_COMPLETED:\r\n return state.merge({\r\n companyId: action.companyId\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function getAuthToken(state) {\r\n return state.bbauth.bbAuthToken;\r\n}\r\n\r\nexport function getIsLoggedIn(state) {\r\n return state.bbauth.bbIsLoggedIn;\r\n}\r\n\r\nexport function getCompanyId(state) {\r\n return state.bbauth.companyId;\r\n}\r\n","export default __webpack_public_path__ + \"static/media/header-image.920cf3e1.png\";","import React, { Component, useEffect } from \"react\";\r\n//var PropTypes = require('prop-types');\r\nimport { connect } from \"react-redux\";\r\nimport autobind from \"react-autobind\";\r\nimport moment from \"moment\";\r\nimport {withRouter} from 'react-router-dom';\r\nimport * as pamentGatewaySelectors from \"../../../store/PymentGateway/reducer\";\r\nimport * as tenantActions from \"../../../store/Tenants/actions\";\r\nimport * as paymentGatewayActions from \"../../../store/PymentGateway/actions\";\r\nimport * as resourceActions from \"../../../store/Resources/actions\";\r\nimport * as resourceMonthlyActions from \"../../../store/ResourcesMonthly/actions\";\r\nimport * as tenantSeSelectors from \"../../../store/Tenants/reducer\";\r\nimport * as pageActions from \"../../../store/PageEvents/actions\";\r\n//import * as resourceSelectors from \"../../../store/Resources/reducer\";\r\nimport * as bookingbugAuthSelector from \"../../../store/BookingAuth/reducer\";\r\nimport * as checkoutActions from \"../../../store/Checkout/actions\";\r\nimport * as checkoutSelectors from \"../../../store/Checkout/reducer\";\r\n\r\nimport FeatureArea from \"../../../components/FeatureArea/FeatureArea\";\r\n\r\n//import scriptLoader from \"react-async-script-loader\";\r\nimport _ from \"lodash\";\r\nimport * as CyptoHelper from \"../../../utility/cryptoUtility\";\r\nimport bb_authService from \"../../../services/BookingBugServices/LoginService\";\r\n\r\nimport \"../../../sass/containers/landingPage.css\";\r\nimport \"../../../sass/containers/Payment/index.css\";\r\nimport featureBg from \"../../../images/header-image.png\";\r\nimport * as conciergeSetting from \"../../../store/ConciergeSetting/reducer\";\r\n\r\nconst queryString = require('query-string');\r\n\r\nconst PaymentGateWayProvider = {\r\n WorldPay: \"WorldPay\",\r\n SagePay : \"SagePay\"\r\n};\r\nconst calendarViews = {\r\n Day: \"day\",\r\n Week: \"week\",\r\n WorkWeek: \"work_week\",\r\n Month: \"month\"\r\n};\r\n\r\nconst ActionMessages = {\r\n success: \"You have successfully paid for this booking. A confirmation email will be sent to the relevant tenant.\",\r\n fail: \"Sorry, your booking has been unsuccessfull\"\r\n};\r\nconst PaymentResponse = {\r\n initial: \"You Are About To Make The Following Payment:\",\r\n error: \"Oops! It looks like there was a problem with the payment or it was cancelled. If you believe this to be an error, please wait and you will be redirected shortly\",\r\n success: \"Success! Thank you for making a payment, please wait and you will be redirected shortly\"\r\n};\r\nconst PaymentStage = {\r\n Payment: \"payment\"\r\n};\r\nconst ResourcePager = {\r\n page: 1,\r\n per_page: 387\r\n};\r\n\r\nconst ORDER_KEY = \"order_key\";\r\n\r\n\r\n\r\nclass Payments extends Component {\r\n\r\n _isMounted = false;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n itemQue: [],\r\n tenant: undefined,\r\n order: undefined,\r\n selectedResources: [],\r\n selectedResource: undefined,\r\n selectedService: undefined,\r\n calendarView: \"\",\r\n orderset: false,\r\n searchQuery: queryString.parse(this.props.history.location.search),\r\n paymentGatewaySettings: undefined,\r\n processing: true,\r\n showStatus: undefined,\r\n error: undefined,\r\n message: \"\",\r\n queryData: undefined,\r\n prefetch_calendar_state_enabled: false,\r\n bbauthToken: this.props.bbAuthToken,\r\n bgImage: featureBg,\r\n paymentResponseMsg: PaymentResponse.initial\r\n };\r\n\r\n\r\n autobind(this);\r\n\r\n this.props.dispatch(paymentGatewayActions.fetchgatewaySettings());\r\n this.props.dispatch(checkoutActions.loadBasketFromCache());\r\n this.props.dispatch(checkoutActions.SetActionType(\"Card\"));\r\n this.props.dispatch(tenantActions.getAllTenants());\r\n this.props.dispatch(pageActions.setPageEvent(\"bookings\"));\r\n }\r\n\r\n\r\n getOrderToken() {\r\n return localStorage.getItem(ORDER_KEY);\r\n }\r\n removerOrderToken() {\r\n localStorage.removeItem(ORDER_KEY);\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n const { searchQuery } = this.state;\r\n\r\n if (_.isUndefined(this.props.bbAuthToken)) {\r\n let bbauth = bb_authService.getToken() ? bb_authService.getToken() : undefined;\r\n this.setState({\r\n bbauthToken: bbauth,\r\n error: _.isUndefined(bbauth) ? true : undefined,\r\n message: _.isUndefined(bbauth) ? \"Not authorized\" : \"\",\r\n \r\n });\r\n }\r\n\r\n let order_crypt = this.getOrderToken();\r\n\r\n\r\n if (order_crypt) {\r\n let dataObj = CyptoHelper.decryptAES(order_crypt);\r\n \r\n //from modal redirect\r\n \r\n if (dataObj && _.isUndefined(searchQuery.bbid)) {\r\n\r\n this.setState({\r\n itemQue: !_.isUndefined(dataObj.itemQue) ? dataObj.itemQue : undefined,\r\n tenant: !_.isUndefined(dataObj.tenant) ? dataObj.tenant : undefined,\r\n selectedResources: !_.isUndefined(dataObj.selectedEvents) ? dataObj.selectedEvents : [],\r\n selectedResource: !_.isUndefined(dataObj.selectedResource) ? dataObj.selectedResource : undefined,\r\n selectedService: !_.isUndefined(dataObj.selectedService) ? dataObj.selectedService : undefined,\r\n calendarView: !_.isUndefined(dataObj.carlendarView) ? dataObj.carlendarView : \"\"\r\n });\r\n\r\n\r\n\r\n \r\n }\r\n }\r\n //triggered if redirection data or location query data found\r\n if (!_.isUndefined(searchQuery) && !_.isUndefined(searchQuery.bbid)) {\r\n\r\n let statusMsg = this.state.paymentResponseMsg;\r\n if (searchQuery.transStatus === \"Y\") {\r\n statusMsg = PaymentResponse.success\r\n } else if (searchQuery.transStatus === \"C\") {\r\n statusMsg = PaymentResponse.error;\r\n\r\n } else {\r\n statusMsg = PaymentResponse.error;\r\n }\r\n\r\n\r\n //clear order token from local storage\r\n this.removerOrderToken();\r\n\r\n this.setState({\r\n processing: true,\r\n error: true,\r\n message: \"\",\r\n paymentResponseMsg: statusMsg\r\n });\r\n\r\n var dataToDecrypt = decodeURI(searchQuery.bbid);\r\n const data = CyptoHelper.decryptAES(dataToDecrypt);\r\n \r\n if (data && data !== \"\") {\r\n\r\n \r\n this.props.dispatch(resourceActions.setServiceUnit(data.order.units));\r\n \r\n\r\n if (data.calendarView === calendarViews.Day) {\r\n let start_date = moment(data.order.start)\r\n let end_date = moment(data.order.end)\r\n\r\n this.servicesSlots(data.selectedService, start_date, end_date, data.calendarView)\r\n } else if (data.calendarView === calendarViews.Week || data.calendarView === calendarViews.WorkWeek) {\r\n let start_date = moment(data.order.start).startOf(\"week\");\r\n let end_date = moment(data.order.start).endOf(\"week\");\r\n\r\n this.servicesSlots(data.selectedService, start_date, end_date, data.calendarView)\r\n\r\n } else if (data.calendarView === calendarViews.Month) {\r\n let start_date = moment(data.order.start).startOf(\"month\");\r\n\r\n\r\n var date_ = start_date.toDate(), y = date_.getFullYear(), m = date_.getMonth();\r\n var startDay = new Date(y, m, 1);\r\n var endDay = new Date(y, m + 1, 0);\r\n\r\n startDay = moment(startDay).subtract(7, 'd');\r\n endDay = moment(endDay).add(7, 'd');\r\n\r\n\r\n\r\n this.fetchResources(ResourcePager.page, ResourcePager.per_page, data.selectedService, startDay, endDay);\r\n }\r\n\r\n\r\n this.setState({\r\n order: data.order,\r\n carlendarView: data.calendarView,\r\n queryData: data,\r\n selectedService: data.selectedService,\r\n selectedResource: data.selectedResource,\r\n selectedResources: data.selectedResources,\r\n prefetch_calendar_state_enabled: true\r\n });\r\n\r\n }\r\n\r\n\r\n } else {\r\n\r\n this.setState({\r\n processing: true\r\n });\r\n }\r\n\r\n \r\n this.setState({\r\n showStatus: this.props.history.location.search && this.props.history.location.search !== \"\" ? true : false\r\n });\r\n\r\n if(this.props.history.location.search && this._isMounted === true){\r\n // this.handlePaymentReturn(false);\r\n }\r\n }\r\n \r\n componentWillUnmount(){\r\n this._isMounted = false;\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n const { prefetch_calendar_state_enabled,\r\n searchQuery, queryData, selectedResource,\r\n selectedService, itemQue, tenant,\r\n order, orderSet } = this.state;\r\n const { basketCache, selectedTenant } = this.props;\r\n\r\n if (this.props.paymentGatewaySettings !== prevProps.paymentGatewaySettings) {\r\n this.setState({\r\n paymentGatewaySettings: this.props.paymentGatewaySettings\r\n });\r\n }\r\n\r\n if (this.props.tenants !== prevProps.tenants &&\r\n this.props.tenants.length > 0 &&\r\n !_.isUndefined(searchQuery) &&\r\n !_.isUndefined(queryData) &&\r\n prefetch_calendar_state_enabled === true) {\r\n\r\n let tenant = _.find(this.props.tenants, { bookingBugMemberId: queryData.bbid });\r\n\r\n if (tenant){\r\n this.props.dispatch(tenantActions.getSelectedTenant(tenant.id));\r\n this.setState({\r\n tenant : tenant\r\n });\r\n\r\n }\r\n }\r\n\r\n //craete order from basket item from basket cache, this is bookingbug basket item\r\n //step 1\r\n if (prevProps.basketCache !== basketCache &&\r\n !_.isUndefined(basketCache) &&\r\n basketCache.length > 0 &&\r\n !_.isUndefined(selectedResource) &&\r\n !_.isUndefined(selectedService) &&\r\n !_.isUndefined(itemQue) &&\r\n itemQue.length > 0 &&\r\n !_.isUndefined(tenant)) {\r\n\r\n let endDate, order;\r\n\r\n let basketItem;\r\n\r\n //check basket item is the selected item que form modal\r\n if (selectedService.duration_unit === \"day\") {\r\n basketItem = _.filter(basketCache, item => {\r\n return moment(item.date).format(\"YYYY-MM-DD\") === moment(itemQue[0].start).format(\"YYYY-MM-DD\") && item.duration === itemQue[0].duration && item.member_id === tenant.bookingBugMemberId;\r\n });\r\n } else {\r\n basketItem = _.filter(basketCache, item => {\r\n return moment(item.date).format(\"YYYY-MM-DD\") === moment(itemQue[0].start).format(\"YYYY-MM-DD\") && item.time === itemQue[0].start_min && item.duration === itemQue[0].duration && item.member_id === tenant.bookingBugMemberId;\r\n });\r\n }\r\n\r\n\r\n if (basketItem && basketItem.length > 0) {\r\n\r\n if (basketItem.length === 1) {\r\n\r\n if (selectedService.duration_unit === \"day\") {\r\n\r\n endDate = moment(basketItem[0].date, \"YYYY-MM-DD\").add(basketItem[0].duration, 'days');\r\n order = {\r\n id: basketItem[0].id,\r\n start: basketItem[0].date,\r\n end: endDate.format(\"YYYY-MM-DD\"),\r\n duration: basketItem[0].duration,\r\n units: this.state.selectedService.duration_unit,\r\n price: this.amountFormat(basketItem[0].price),\r\n totalprice: basketItem[0].total_price,\r\n eventId: basketItem[0].event_id\r\n };\r\n\r\n } else if (selectedService.duration_unit === \"minute\") {\r\n\r\n let start_time = Math.trunc(basketItem[0].time / 60) + \":\" + (basketItem[0].time % 60);\r\n let sdate = moment(basketItem[0].date + \"T\" + start_time, \"YYYY-MM-DDTHH:mm\").toDate();\r\n let etime = Math.trunc((basketItem[0].time + basketItem[0].duration) / 60) + \":\" + ((basketItem[0].time + basketItem[0].duration) % 60);\r\n let edate = moment(basketItem[0].date + \"T\" + etime, \"YYYY-MM-DDTHH:mm\").toDate();\r\n\r\n\r\n order = {\r\n id: basketItem[0].id,\r\n start: sdate,\r\n end: edate,\r\n duration: basketItem[0].duration,\r\n units: this.state.selectedService.duration_unit,\r\n price: this.amountFormat(basketItem[0].price),\r\n totalprice: basketItem[0].total_price,\r\n eventId: basketItem[0].event_id,\r\n time: basketItem[0].time\r\n };\r\n\r\n }\r\n\r\n\r\n if (order) {\r\n \r\n let request = {\r\n amount : order.price,\r\n currency : this.state.paymentGatewaySettings.currency,\r\n cartid : this.state.paymentGatewaySettings.paymenttype,\r\n };\r\n\r\n \r\n \r\n\r\n if(this.state.paymentGatewaySettings.type === PaymentGateWayProvider.SagePay){ \r\n\r\n let dataForCrypto = {\r\n bbid: this.state.tenant.bookingBugMemberId,\r\n selectedResources: _.map(this.state.selectedResources, res => {\r\n return res.eventId\r\n }),\r\n selectedResource: this.state.selectedResource.eventId,\r\n selectedService: this.state.selectedService.id,\r\n order: order,\r\n calendarView: this.state.calendarView\r\n };\r\n\r\n let cryptdata = CyptoHelper.encryptAES(dataForCrypto);\r\n\r\n cryptdata = encodeURIComponent(cryptdata);\r\n\r\n var formbasket_ = document.createElement('basket');\r\n\r\n formbasket_.appendChild(\r\n this.formBasket(this.state.paymentGatewaySettings.description, 1, Number(order.price), \r\n 0, Number(order.price), Number(order.price), \"\")\r\n );\r\n \r\n request = { ...request,\r\n memberid : tenant.id,\r\n description : this.state.paymentGatewaySettings.description,\r\n vendortxtcode : '',\r\n basket : formbasket_.outerHTML,\r\n paymenttype : this.state.paymentGatewaySettings.paymenttype ,\r\n cryptdata : cryptdata\r\n };\r\n }\r\n \r\n \r\n this.props.dispatch(paymentGatewayActions.getPaymentCryptSignature(this.state.paymentGatewaySettings.type, request, success =>{\r\n \r\n if (success === true) {\r\n this.setState({\r\n error: undefined,\r\n message: \"\",\r\n status: PaymentStage.Payment\r\n });\r\n }\r\n }));\r\n\r\n }\r\n\r\n } else {\r\n this.setState({\r\n error: true,\r\n message: \"Duplicate bookings found\"\r\n });\r\n }\r\n\r\n }\r\n\r\n this.setState({\r\n order: order,\r\n orderset: true,\r\n processing: undefined,\r\n // error: undefined,\r\n // message: \"\"\r\n });\r\n }\r\n\r\n if (orderSet && orderSet === true && !_.isUndefined(this.state.paymentGatewaySettings) && _.isUndefined(this.props.signature)) {\r\n\r\n if (order){\r\n \r\n let request = {\r\n amount : order.price,\r\n currency : this.state.paymentGatewaySettings.currency,\r\n cartid : this.state.paymentGatewaySettings.paymenttype\r\n };\r\n \r\n\r\n if(this.state.paymentGatewaySettings.type === PaymentGateWayProvider.SagePay){ \r\n\r\n let dataForCrypto = {\r\n bbid: this.state.tenant.bookingBugMemberId,\r\n selectedResources: _.map(this.state.selectedResources, res => {\r\n return res.eventId\r\n }),\r\n selectedResource: this.state.selectedResource.eventId,\r\n selectedService: this.state.selectedService.id,\r\n order: order,\r\n calendarView: this.state.calendarView\r\n };\r\n\r\n let cryptdata = CyptoHelper.encryptAES(dataForCrypto);\r\n\r\n cryptdata = encodeURIComponent(cryptdata);\r\n\r\n var formbasket_ = document.createElement('basket');\r\n\r\n formbasket_.appendChild(\r\n this.formBasket(this.state.paymentGatewaySettings.description, 1, Number(order.price), \r\n 0, Number(order.price), Number(order.price), \"\")\r\n );\r\n \r\n request = { ...request,\r\n memberid : tenant.id,\r\n description : this.state.paymentGatewaySettings.description,\r\n vendortxtcode : '',\r\n basket : formbasket_.outerHTML,\r\n paymenttype : this.state.paymentGatewaySettings.paymenttype ,\r\n cryptdata : cryptdata\r\n };\r\n }\r\n\r\n\r\n this.props.dispatch(paymentGatewayActions.getPaymentCryptSignature(this.state.paymentGatewaySettings.type, request));\r\n }\r\n }\r\n\r\n\r\n //start a payment return process\r\n if(prevProps.basketCache !== basketCache &&\r\n this.state.prefetch_calendar_state_enabled === true ){\r\n this.handlePaymentReturn(this.state.searchQuery, this.state.prefetch_calendar_state_enabled); \r\n \r\n }\r\n }\r\n\r\n \r\n //Preload services slot for date selection and email data\r\n servicesSlots(serviceId, startDate, endDate, view) {\r\n\r\n let start_date = startDate.format(\"YYYY-MM-DD\"); // dateFormat(startDate._d, \"isoDate\");\r\n let end_date = endDate.format(\"YYYY-MM-DD\"); // dateFormat(moment(endDate._d, \"isoDate\"));\r\n\r\n\r\n this.props.dispatch(\r\n resourceActions.fetchServicesSlots(\r\n serviceId,\r\n start_date, end_date, success => {\r\n\r\n if (success === true) {\r\n\r\n if (this._isMounted)\r\n this.setState({\r\n request_fail: undefined\r\n });\r\n\r\n\r\n } else {\r\n\r\n this.setState({\r\n request_fail: true\r\n });\r\n }\r\n\r\n }\r\n )\r\n );\r\n\r\n }\r\n\r\n fetchResources(page, perpage, serviceId, startDate, endDate) {\r\n this.props.dispatch(resourceMonthlyActions.fetchResources(page, perpage, success => {\r\n if (success === true) {\r\n\r\n this.servicesDayData(serviceId, startDate.format(\"YYYY-MM-DD\"), endDate.format(\"YYYY-MM-DD\"))\r\n }\r\n }));\r\n }\r\n servicesDayData(serviceId, startDate, endDate) {\r\n\r\n this.props.dispatch(resourceMonthlyActions.fetchServiceDayData(serviceId, startDate, endDate, success => {\r\n if (success === true) {\r\n // this.setState({\r\n // processingResource: undefined\r\n // });\r\n this.fetchMonthlyServicesSlots(serviceId, moment(startDate), null)\r\n }\r\n }));\r\n }\r\n fetchMonthlyServicesSlots(serviceId, startDate, endDate) {\r\n\r\n var date_ = startDate.toDate(), y = date_.getFullYear(), m = date_.getMonth();\r\n var firstDay = new Date(y, m, 1);\r\n var lastDay = new Date(y, m + 1, 0);\r\n\r\n firstDay = moment(firstDay);\r\n lastDay = moment(lastDay);\r\n\r\n this.props.dispatch(resourceMonthlyActions.fetchServicesSlots(serviceId, firstDay.format(\"YYYY-MM-DD\"), lastDay.format(\"YYYY-MM-DD\")));\r\n }\r\n\r\n //format pence to pound (decimal point 2)\r\n amountFormat(amount) {\r\n\r\n let amt = amount && amount > 0 ? amount / 100 : 0;\r\n\r\n return amt.toFixed(2);\r\n }\r\n\r\n initializeWorldPay(signature, bbAuthToken, tenant, order, calendarView, paymentGatewaySettings) {\r\n\r\n let dataForCrypto = {\r\n bbid: tenant.bookingBugMemberId,\r\n selectedResources: _.map(this.state.selectedResources, res => {\r\n return res.eventId\r\n }),\r\n selectedResource: this.state.selectedResource.eventId,\r\n selectedService: this.state.selectedService.id,\r\n order: order,\r\n calendarView: calendarView\r\n };\r\n\r\n\r\n let crypted;\r\n\r\n if (!_.isUndefined(order)) {\r\n\r\n crypted = CyptoHelper.encryptAES(dataForCrypto);\r\n\r\n crypted = encodeURIComponent(crypted);\r\n\r\n\r\n\r\n }\r\n \r\n\r\n if (!_.isUndefined(order) && !_.isUndefined(signature) && !_.isUndefined(bbAuthToken)) {\r\n\r\n return
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n } else {\r\n\r\n return \"\"; // _.isUndefined(this.state.processing) ?

    No orders selected

    : \"\"\r\n }\r\n\r\n\r\n }\r\n\r\n formBasket(description, quantity, unitNetAmount, \r\n unitTaxAmount, unitGrossAmount, totalGrossAmount, qubetransactionid){\r\n\r\n var newItem = document.createElement('item');\r\n var descriptionEL = document.createElement('description');\r\n var quantityEl = document.createElement('quantity');\r\n var netAmountEl = document.createElement('unitNetAmount');\r\n var taxAMountEl = document.createElement('unitTaxAmount');\r\n var grossAmountEl = document.createElement('unitGrossAmount');\r\n var totalAmountEl = document.createElement('totalGrossAmount');\r\n\r\n descriptionEL.innerHTML = description + \" - \" + qubetransactionid;\r\n quantityEl.innerHTML = quantity;\r\n netAmountEl.innerHTML = unitNetAmount;\r\n taxAMountEl.innerHTML = unitTaxAmount;\r\n grossAmountEl.innerHTML = unitGrossAmount;\r\n totalAmountEl.innerHTML = totalGrossAmount;\r\n\r\n\r\n newItem.appendChild(descriptionEL);\r\n newItem.appendChild(quantityEl);\r\n newItem.appendChild(netAmountEl);\r\n newItem.appendChild(taxAMountEl);\r\n newItem.appendChild(grossAmountEl);\r\n newItem.appendChild(totalAmountEl);\r\n\r\n return newItem;\r\n }\r\n initializeSagePay(signature, bbAuthToken, tenant, order, calendarView, paymentGatewaySettings){\r\n \r\n let crypted = signature.signature;\r\n\r\n \r\n return
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    ;\r\n }\r\n initializeDefault() {\r\n return ( Payment gateway not availaible );\r\n }\r\n\r\n SetGateWay(type, signature, bbAuthToken, tenant, order, calendarView, paymentGatewaySettings) {\r\n\r\n \r\n \r\n //check for previously selected basket items for the tenant selected tenant not\r\n //including the current order, then remove from basket\r\n if (order && tenant) {\r\n let basketData = _.filter(this.props.basketCache, item => item.id !== order.id && item.member_id === tenant.bookingBugMemberId);\r\n\r\n if (basketData && basketData.length > 0) {\r\n\r\n for (var i = 0; i < basketData.length; i++) {\r\n\r\n this.props.dispatch(checkoutActions.removeItemFromBasket(basketData[i].id));\r\n }\r\n\r\n }\r\n }\r\n\r\n if (type === PaymentGateWayProvider.WorldPay) {\r\n return this.initializeWorldPay(signature, bbAuthToken, tenant, order, calendarView, paymentGatewaySettings);\r\n }else if(type === PaymentGateWayProvider.SagePay){ \r\n return this.initializeSagePay(signature, bbAuthToken, tenant, order, calendarView, paymentGatewaySettings);\r\n }else {\r\n return this.initializeDefault();\r\n }\r\n }\r\n\r\n //method to start the booking process from redirect return on resi and payment gataway\r\n handlePaymentReturn(searchQuery, prefetch_calendar_state_enabled) {\r\n // const { searchQuery, prefetch_calendar_state_enabled } = this.state;\r\n\r\n if (searchQuery) {\r\n \r\n var dataToDecrypt = decodeURI(searchQuery.bbid);\r\n\r\n const data = CyptoHelper.decryptAES(dataToDecrypt);\r\n \r\n if (data && !_.isUndefined(data.order)) {\r\n let booking = {};\r\n if (data.order.units === \"day\") {\r\n booking = { ...data.order, start: moment(data.order.start).toDate(), end: moment(data.order.end).toDate(), bookingBugMemberId: data.bbid };\r\n } else if (data.order.units === \"minute\") {\r\n\r\n booking = { ...data.order, bookingBugMemberId: data.bbid };\r\n }\r\n\r\n\r\n this.props.dispatch(resourceActions.setBooking(booking));\r\n }\r\n \r\n \r\n if (this.props.basketCache.length === 0 ) {\r\n this.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.fail));\r\n this.props.dispatch(checkoutActions.SetActionStatus(false));\r\n this.props.dispatch(resourceActions.setPaymentAction(false));\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: {\r\n module: \"Bookings\",\r\n fromRedirect: true,\r\n serviceId: data.selectedService,\r\n selectedResourceId: data.selectedResource,\r\n selectedResourcesId: data.selectedResources,\r\n paymentStatus: false,\r\n date: data.order.start\r\n }\r\n });\r\n } else if (this.props.basketCache.length > 0 && data) {\r\n\r\n\r\n\r\n var status;\r\n\r\n if (searchQuery.transStatus === \"Y\") {\r\n status = true;\r\n } else if (searchQuery.transStatus === \"C\") {\r\n status = false;\r\n\r\n } else {\r\n status = false;\r\n }\r\n\r\n \r\n if (status === true && prefetch_calendar_state_enabled === true) {\r\n\r\n // this.setState({\r\n // prefetch_calendar_state_enabled: false,\r\n // showStatus: undefined\r\n // });\r\n\r\n\r\n this.props.dispatch(\r\n checkoutActions.completeCheckout(data.bbid, success => {\r\n if (success === true) {\r\n\r\n this.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.success));\r\n this.props.dispatch(checkoutActions.SetActionStatus(true));\r\n this.setState({\r\n prefetch_calendar_state_enabled : false\r\n });\r\n\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: {\r\n module: \"Bookings\",\r\n fromRedirect: true,\r\n serviceId: data.selectedService,\r\n selectedResourceId: data.selectedResource,\r\n selectedResourcesId: data.selectedResources,\r\n paymentStatus: status,\r\n date: data.order.start\r\n }\r\n });\r\n } else {\r\n this.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.fail));\r\n this.props.dispatch(checkoutActions.SetActionStatus(false));\r\n }\r\n }));\r\n } else if (status === false) {\r\n let basketItem = undefined;\r\n\r\n this.props.dispatch(checkoutActions.SetActionMessage(ActionMessages.fail));\r\n this.props.dispatch(checkoutActions.SetActionStatus(false));\r\n\r\n\r\n if (!_.isUndefined(data.order))\r\n basketItem = _.find(this.props.basketCache, { id: data.order.id });\r\n\r\n\r\n if (basketItem) {\r\n this.props.dispatch(checkoutActions.removeItemFromBasket(basketItem.id, success => {\r\n if (success === true) {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: {\r\n module: \"Bookings\",\r\n fromRedirect: true,\r\n serviceId: data.selectedService,\r\n selectedResourceId: data.selectedResource,\r\n selectedResourcesId: data.selectedResources,\r\n paymentStatus: status,\r\n date: data.order.start\r\n }\r\n });\r\n } else {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: {\r\n module: \"Bookings\",\r\n fromRedirect: true,\r\n serviceId: data.selectedService,\r\n selectedResourceId: data.selectedResource,\r\n selectedResourcesId: data.selectedResources,\r\n paymentStatus: status,\r\n date: data.order.start\r\n }\r\n });\r\n }\r\n }));\r\n\r\n } else {\r\n this.props.history.push({\r\n pathname: \"/\",\r\n state: {\r\n module: \"Bookings\",\r\n fromRedirect: true,\r\n serviceId: data.selectedService,\r\n selectedResourceId: data.selectedResource,\r\n selectedResourcesId: data.selectedResources,\r\n paymentStatus: status,\r\n date: data.order.start\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n } else {\r\n\r\n }\r\n\r\n\r\n return \"\";\r\n }\r\n\r\n\r\n findAndReplace(string, target, replacement) {\r\n\r\n var i = 0, length = string.length;\r\n\r\n for (i; i < length; i++) {\r\n\r\n string = string.replace(target, replacement);\r\n\r\n }\r\n\r\n return string;\r\n\r\n }\r\n render() {\r\n\r\n const { order, tenant, paymentResponseMsg } = this.state;\r\n\r\n // fields: [\"resource\", \"tenant\", \"duration\", \"price\", \"id\"],\r\n let orderList = [];\r\n if (order && tenant) {\r\n let list = {};\r\n\r\n //pupulate Datalist for order table\r\n if (order.units === \"day\") {\r\n list = {\r\n id: order.id,\r\n resource: !_.isUndefined(this.state.selectedResource) ? this.state.selectedResource.eventName : \"\",\r\n tenant: `${tenant.firstName} ${tenant.lastName}`,\r\n duration: `${moment(order.start).format(\"DD/MM/YY\")} - ${moment(order.end).format(\"DD/MM/YY\")}`, //duration: `${order.start} - ${order.end} (${order.duration} ${order.duration === 1 ? \"day\" : \"days\"})`,\r\n price: `£${order.price}`\r\n };\r\n } else if (order.units === \"minute\") {\r\n\r\n list = {\r\n id: order.id,\r\n resource: !_.isUndefined(this.state.selectedResource) ? this.state.selectedResource.eventName : \"\",\r\n tenant: `${tenant.firstName} ${tenant.lastName}`,\r\n duration: `${moment(order.start).format(\"DD/MM/YY\")} (${moment(order.start).format(\"HH:mm A\")} - ${moment(order.end).format(\"HH:mm A\")} )`,\r\n price: `£${order.price}`\r\n };\r\n }\r\n\r\n orderList.push(list);\r\n\r\n \r\n }\r\n \r\n return
    \r\n \r\n
    \r\n\r\n \r\n {paymentResponseMsg}\r\n\r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n {\r\n this.state.paymentGatewaySettings &&\r\n this.state.tenant &&\r\n this.state.order &&\r\n this.state.calendarView &&\r\n this.state.status === PaymentStage.Payment &&\r\n this.state.bbauthToken &&\r\n
    \r\n {\r\n this.SetGateWay(this.state.paymentGatewaySettings.type, this.props.signature, this.state.bbauthToken, this.state.tenant, this.state.order, this.state.calendarView, this.state.paymentGatewaySettings)\r\n }\r\n
    \r\n\r\n }\r\n {\r\n _.isUndefined(this.state.status) &&\r\n
    \r\n \r\n
    \r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n {\r\n this.state.paymentGatewaySettings &&\r\n !_.isUndefined(this.state.paymentGatewaySettings) &&\r\n this.props.signature &&\r\n this.state.bbauthToken &&\r\n this.state.tenant &&\r\n this.state.order &&\r\n this.state.calendarView &&\r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {\r\n this.state.processing ?\r\n\r\n\r\n this.state.order ?\r\n\r\n
    : \"\"\r\n\r\n :\r\n\r\n\r\n this.state.paymentGatewaySettings &&\r\n !_.isUndefined(this.state.paymentGatewaySettings) &&\r\n this.props.signature &&\r\n this.state.bbauthToken &&\r\n this.state.tenant &&\r\n this.state.order &&\r\n this.state.calendarView &&\r\n _.map(orderList, (orderItem, index) => {\r\n\r\n return
    \r\n \r\n \r\n \r\n
    ;\r\n })\r\n\r\n\r\n }\r\n {\r\n\r\n this.props.location.search !== \"\" && !_.isUndefined(this.state.queryData) ?\r\n\r\n this.state.showStatus === true ?\r\n
    \r\n\r\n

    Processing your booking.....

    \r\n \r\n
    : \"\"\r\n\r\n : \"\"\r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n {\r\n this.props.errors && _.map(this.props.errors, (error, idx) => {\r\n return

    {error}

    ;\r\n })\r\n }\r\n {\r\n this.state.error &&\r\n

    {this.state.message}

    \r\n\r\n }\r\n
    \r\n\r\n\r\n {this.state.processing && !_.isUndefined(this.props.location.state) && !_.isUndefined(this.props.location.state.data) ?\r\n\r\n\r\n
    \r\n\r\n :\r\n\r\n
    \r\n\r\n {\r\n this.state.paymentGatewaySettings &&\r\n !_.isUndefined(this.state.paymentGatewaySettings) &&\r\n this.props.signature &&\r\n this.props.bbAuthToken &&\r\n this.state.tenant &&\r\n this.state.order &&\r\n this.state.calendarView &&\r\n\r\n
    \r\n \r\n
    \r\n\r\n\r\n }\r\n\r\n \r\n\r\n
    \r\n\r\n }\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n
    \r\n\r\n
    \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n paymentGatewaySettings: pamentGatewaySelectors.getGatewaySettings(state),\r\n errors: pamentGatewaySelectors.getGatewayErrors(state),\r\n signature: pamentGatewaySelectors.getPaymentSignature(state),\r\n bbAuthToken: bookingbugAuthSelector.getAuthToken(state),\r\n basketCache: checkoutSelectors.getBasket(state),\r\n tenants: tenantSeSelectors.getAllTenants(state),\r\n selectedTenant: tenantSeSelectors.getSelectedTenant(state),\r\n conciergeSettings: conciergeSetting.loadGlobalSetting(state)\r\n };\r\n}\r\n\r\n\r\nexport default withRouter(connect(mapStateToProps)(Payments));\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Autosuggest from 'react-autosuggest';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport { PortalTypes } from '../../helpers/configHelper';\r\n\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nimport * as stringHelper from '../../helpers/stringHelper';\r\n\r\nimport autoBind from 'react-autobind';\r\n\r\nimport '../../sass/components/MemberAutoSuggest/index.css';\r\n\r\nconst Suggestion = ({ isHighlighted, suggestion, portalType }) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t{suggestion.firstName} {suggestion.lastName}{' '}\r\n\t\t\t{portalType === PortalTypes.Residential ? (\r\n\t\t\t\t`${' - '}${stringHelper.formatStringList([\r\n\t\t\t\t\tsuggestion.addressLine1,\r\n\t\t\t\t\tsuggestion.addressLine2,\r\n\t\t\t\t\tsuggestion.addressLine3,\r\n\t\t\t\t\tsuggestion.addressLine4,\r\n\t\t\t\t\tsuggestion.addressLine5,\r\n\t\t\t\t\tsuggestion.addressLine6,\r\n\t\t\t\t\tsuggestion.postCode\r\n\t\t\t\t])}`\r\n\t\t\t) : (\r\n\t\t\t\t`${!suggestion.companyName ? '' : ' - ' + suggestion.companyName}`\r\n\t\t\t)}\r\n\t\t
    \r\n\t);\r\n};\r\nclass MemberAutoSuggest extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.defaultState = {\r\n\t\t\tvalue: '',\r\n\t\t\tsuggestions: [],\r\n\t\t\tvalid: false,\r\n\t\t\totherText: '',\r\n\t\t\tportalType: ''\r\n\t\t};\r\n\r\n\t\tthis.state = this.defaultState;\r\n\r\n\t\t//this.props.dispatch(residentActions.getAllResidents());\r\n\t\tthis.emptyResponse = {\r\n\t\t\tmemberId: '',\r\n\t\t\taddress: '',\r\n\t\t\ttenant: ''\r\n\t\t};\r\n\r\n\t\tthis.selectedTenantFromDefault = false;\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\t// Set the autosuggest to an initial value if it is provided\r\n\t\tif (\r\n\t\t\tthis.props.data.length > 0 &&\r\n\t\t\t!_.isUndefined(this.props.defaultTenantId) &&\r\n\t\t\t_.isNumber(this.props.defaultTenantId) &&\r\n\t\t\tprevProps.portalType &&\r\n\t\t\tthis.selectedTenantFromDefault === false\r\n\t\t) {\r\n\t\t\tthis.selectedTenantFromDefault = true;\r\n\r\n\t\t\tconst startTenant = _.find(this.props.data, (resident) => {\r\n\t\t\t\treturn resident.id === Number(this.props.defaultTenantId);\r\n\t\t\t});\r\n\t\t\tif (!_.isUndefined(startTenant)) {\r\n\t\t\t\tthis.handleTenantSelected(startTenant);\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tvalue:\r\n\t\t\t\t\t\tstartTenant.firstName +\r\n\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\tstartTenant.lastName +\r\n\t\t\t\t\t\t`${this.props.portalType === PortalTypes.Residential\r\n\t\t\t\t\t\t\t? `${' - '}${stringHelper.formatStringList(\r\n\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine1,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine2,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine3,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine4,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine5,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine6,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.postCode\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t0\r\n\t\t\t\t\t\t\t\t)}`\r\n\t\t\t\t\t\t\t: !startTenant.companyName || _.isUndefined(startTenant.companyName)\r\n\t\t\t\t\t\t\t\t? ''\r\n\t\t\t\t\t\t\t\t: ' - ' + startTenant.companyName}`,\r\n\t\t\t\t\tvalid: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.props.defaultTenantId !== prevProps.defaultTenantId && !_.isUndefined(this.props.defaultTenantId)) {\r\n\t\t\t//this.selectedTenantFromDefault = true;\r\n\t\t\tconst startTenant = _.find(this.props.data, (resident) => {\r\n\t\t\t\treturn resident.id === Number(this.props.defaultTenantId);\r\n\t\t\t});\r\n\t\t\tif (!_.isUndefined(startTenant)) {\r\n\t\t\t\tthis.handleTenantSelected(startTenant);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tvalue:\r\n\t\t\t\t\t\tstartTenant.firstName +\r\n\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\tstartTenant.lastName +\r\n\t\t\t\t\t\t`${this.props.portalType === PortalTypes.Residential\r\n\t\t\t\t\t\t\t? `${' - '}${stringHelper.formatStringList(\r\n\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine1,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine2,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine3,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine4,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine5,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.addressLine6,\r\n\t\t\t\t\t\t\t\t\t\tstartTenant.postCode\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t0\r\n\t\t\t\t\t\t\t\t)}`\r\n\t\t\t\t\t\t\t: !startTenant.companyName || _.isUndefined(startTenant.companyName)\r\n\t\t\t\t\t\t\t\t? ''\r\n\t\t\t\t\t\t\t\t: ' - ' + startTenant.companyName}`,\r\n\t\t\t\t\tvalid: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\t\t\r\n\t\t\r\n\t\tif(this.props.reset !== prevProps.reset && this.props.reset === true){\r\n\t\t\t\r\n\t\t\tthis.handleClear(null);\r\n\t\t}\r\n\t}\r\n\t\r\n\treset() {\r\n\t\tthis.setState(this.defaultState);\r\n\t}\r\n\r\n\thandleClear(e) {\r\n\t\tthis.reset();\r\n\t\tthis.props.matchfound && this.props.matchfound(undefined);\r\n\t\tthis.props.fieldManualCleared && this.props.fieldManualCleared(true);\r\n\t\tthis.props.fieldCleared && this.props.fieldCleared(undefined);\r\n\t\tthis.props.handleKeyPress && this.props.handleKeyPress({ key: 'Reset' }, []);\r\n\t}\r\n\t// Autosuggest functions ++++++++++++++++++++++++++++++++++++++++++\r\n\tgetSuggestionValue(suggestion) {\r\n\t\tconst { portalType } = this.props;\r\n\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t\tif (suggestion) this.setState({ disabled: '' });\r\n\r\n\t\treturn `${suggestion.firstName} ${suggestion.lastName} ${portalType === PortalTypes.Residential\r\n\t\t\t? !suggestion.addressLine1\r\n\t\t\t\t? ''\r\n\t\t\t\t: ' - ' +\r\n\t\t\t\t\tsuggestion.addressLine1 +\r\n\t\t\t\t\t`${suggestion.addressLine2 ? `${' , '}${suggestion.addressLine2}` : ''}`\r\n\t\t\t: !suggestion.companyName || _.isUndefined(suggestion.companyName) ? '' : ' - ' + suggestion.companyName}`;\r\n\t}\r\n\r\n\tgetSuggestions(val) {\r\n\t\tconst { data, portalType } = this.props;\r\n\r\n\t\tif (!data) return [];\r\n\r\n\t\t//safe guard residents data return null value in some records\r\n\t\tvar data_ = _.filter(data, (obj) => {\r\n\t\t\treturn obj.firstName !== null || obj.lastName !== null;\r\n\t\t});\r\n\r\n\t\tconst value = val.trim().toLowerCase();\r\n\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\treturn value !== '';\r\n\t\t});\r\n\r\n\t\tconst match = _.filter(data_, (item) => {\r\n\t\t\tif (parts.length === 1) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(item.firstName &&_.startsWith(item.firstName.toLowerCase(), parts[0].toLowerCase())) ||\r\n\t\t\t\t\t(item.lastName &&_.startsWith(item.lastName.toLowerCase(), parts[0].toLowerCase())) ||\r\n\t\t\t\t\t((portalType === PortalTypes.Residential &&\r\n\t\t\t\t\t\titem.addressLine1 &&\r\n\t\t\t\t\t\t_.includes(item.addressLine1.toLowerCase(), parts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t(item.addressLine2 && _.includes(item.addressLine2.toLowerCase(), parts[0].toLowerCase()))) ||\r\n\t\t\t\t\t(portalType === PortalTypes.Commercial &&\r\n\t\t\t\t\t\titem.companyName &&\r\n\t\t\t\t\t\t_.startsWith(item.companyName.toLowerCase(), parts[0].toLowerCase()))\r\n\t\t\t\t);\r\n\t\t\t} else if (parts.length === 2) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t((item.firstName && _.startsWith(item.firstName.toLowerCase(), parts[0].toLowerCase())) &&\r\n\t\t\t\t\t\t(item.lastName && _.startsWith(item.lastName.toLowerCase(), parts[1].toLowerCase()))) ||\r\n\t\t\t\t\t(portalType === PortalTypes.Commercial &&\r\n\t\t\t\t\t\titem.companyName &&\r\n\t\t\t\t\t\t_.startsWith(item.companyName.toLowerCase(), val.trim().toLowerCase())) ||\r\n\t\t\t\t\t(portalType === PortalTypes.Residential &&\r\n\t\t\t\t\t\titem.addressLine1 &&\r\n\t\t\t\t\t\t_.includes(item.addressLine1.toLowerCase(), val.trim().toLowerCase()))\r\n\t\t\t\t);\r\n\t\t\t} else if (parts.length === 3) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(item.firstName && _.startsWith(item.firstName.toLowerCase(), parts[0].toLowerCase())) &&\r\n\t\t\t\t\t(item.lastName && _.startsWith(item.lastName.toLowerCase(), parts[1].toLowerCase())) &&\r\n\t\t\t\t\t((portalType === PortalTypes.Residential &&\r\n\t\t\t\t\t\titem.addressLine1 &&\r\n\t\t\t\t\t\t_.includes(item.addressLine1.toLowerCase(), parts[2].toLowerCase())) ||\r\n\t\t\t\t\t\t(portalType === PortalTypes.Commercial &&\r\n\t\t\t\t\t\t\titem.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(item.companyName.toLowerCase(), parts[2].toLowerCase())))\r\n\t\t\t\t);\r\n\t\t\t} else if (parts.length > 3) {\r\n\t\t\t\tlet searchData = '';\r\n\t\t\t\tfor (var i = 3; i < parts.length; i++) {\r\n\t\t\t\t\tsearchData += parts[i] + ' ';\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(item.firstName && _.startsWith(item.firstName.toLowerCase(), parts[0].toLowerCase()) ) &&\r\n\t\t\t\t\t(item.firstName && _.startsWith(item.lastName.toLowerCase(), parts[1].toLowerCase()) )&&\r\n\t\t\t\t\t((portalType === PortalTypes.Residential &&\r\n\t\t\t\t\t\titem.addressLine1 &&\r\n\t\t\t\t\t\t_.includes(item.addressLine1.toLowerCase(), searchData.trim().toLowerCase())) ||\r\n\t\t\t\t\t\t(portalType === PortalTypes.Commercial &&\r\n\t\t\t\t\t\t\titem.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(item.companyName.toLowerCase(), searchData.trim().toLowerCase())))\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tonSuggestionsFetchRequested = ({ value }) => {\r\n\t\tthis.setState({ suggestions: this.getSuggestions(value) });\r\n\t};\r\n\r\n\tonSuggestionsClearRequested = () => {};\r\n\thandlePasteChange(e) {\r\n\t\tthis.setState({\r\n\t\t\totherText: e.target.value,\r\n\t\t\tvalue: e.target.value\r\n\t\t});\r\n\t\tthis.props.defaultText(e.target.value);\r\n\t}\r\n\tonChange = (event, { newValue, method }) => {\r\n\t\tif (newValue.length === 0) {\r\n\t\t\tthis.setState({ tenant: undefined });\r\n\t\t\tthis.props.fieldManualCleared && this.props.fieldManualCleared(true);\r\n\t\t}\r\n\r\n\t\t//this.handleClear(event);\r\n\r\n\t\tif (newValue.length > 2) {\r\n\t\t\tthis.handleTenantChange(newValue);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tvalue: newValue\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t// Delayed because parseley not ready if user selected a suggestion\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalid: $(this.refs.autosuggest.input).parsley().isValid()\r\n\t\t\t});\r\n\t\t}, 0);\r\n\r\n\t\t//this.checkMatch(newValue);\r\n\t};\r\n\r\n\thandleTenantSelected(ten, setValue = false) {\r\n\t\tlet tenantType = '';\r\n\t\tlet address = '';\r\n\r\n\t\tif (this.props.portalType === PortalTypes.Residential) {\r\n\t\t\ttenantType = `${' - '}${stringHelper.formatStringList(\r\n\t\t\t\t[\r\n\t\t\t\t\tten.addressLine1,\r\n\t\t\t\t\tten.addressLine2,\r\n\t\t\t\t\tten.addressLine3,\r\n\t\t\t\t\tten.addressLine4,\r\n\t\t\t\t\tten.addressLine5,\r\n\t\t\t\t\tten.addressLine6,\r\n\t\t\t\t\tten.postCode\r\n\t\t\t\t],\r\n\t\t\t\t0\r\n\t\t\t)}`;\r\n\t\t\taddress = stringHelper.formatStringList(\r\n\t\t\t\t[\r\n\t\t\t\t\tten.addressLine1,\r\n\t\t\t\t\tten.addressLine2,\r\n\t\t\t\t\tten.addressLine3,\r\n\t\t\t\t\tten.addressLine4,\r\n\t\t\t\t\tten.addressLine5,\r\n\t\t\t\t\tten.addressLine6,\r\n\t\t\t\t\tten.postCode\r\n\t\t\t\t],\r\n\t\t\t\t30\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\taddress = !ten.companyName || _.isUndefined(ten.companyName) ? '' : ' - ' + ten.companyName;\r\n\t\t}\r\n\r\n\t\tconst stateChanges = {\r\n\t\t\tmemberId: ten.id,\r\n\t\t\taddress: this.props.portalType === PortalTypes.Residential ? address : ten.companyName,\r\n\t\t\ttenant: ten.firstName + ' ' + ten.lastName,\r\n\r\n\t\t\t...(setValue ? { value: ten.firstName + ' ' + ten.lastName + tenantType, valid: true } : {})\r\n\t\t};\r\n\r\n\t\tthis.setState(stateChanges);\r\n\r\n\t\tthis.props.onSelected && this.props.onSelected(stateChanges);\r\n\t}\r\n\r\n\thandleTenantChange(value) {\r\n\t\t// const { memberId } = this.state;\r\n\t\tthis.setState({\r\n\t\t\tname: value,\r\n\t\t\totherText: value\r\n\t\t});\r\n\r\n\t\t//used as a container if resident value is null\r\n\t\tthis.props.defaultText(value);\r\n\t}\r\n\r\n\trenderSuggestion(suggestion, { query, isHighlighted }) {\r\n\t\treturn ;\r\n\t}\r\n\thandleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method) {\r\n\t\tthis.handleTenantSelected(suggestion);\r\n\t}\r\n\r\n\tcheckMatch(currentValue) {\r\n\t\tthis.setState({\r\n\t\t\totherText: currentValue\r\n\t\t});\r\n\r\n\t\tconst matchedTenant = _.find(this.props.data, (resident) => {\r\n\t\t\tconst value = currentValue.toLowerCase();\r\n\t\t\tconst parts = value.split(' ').filter((value) => {\r\n\t\t\t\treturn value !== '';\r\n\t\t\t});\r\n\r\n\t\t\tif (\r\n\t\t\t\tparts.length === 2 &&\r\n\t\t\t\tresident.firstName.toLowerCase() === parts[0].trim() &&\r\n\t\t\t\tresident.lastName.toLowerCase() === parts[1].trim()\r\n\t\t\t) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\tif (_.isUndefined(matchedTenant) === false) {\r\n\t\t\tthis.handleTenantSelected(matchedTenant);\r\n\t\t} else {\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\tinputClick() {\r\n\t\tif (\r\n\t\t\tthis.state.valid === true &&\r\n\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\tthis.props.clearableIfValid === true\r\n\t\t) {\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tthis.props.onSelected && this.props.onSelected(this.emptyResponse);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { value, suggestions, valid } = this.state;\r\n\r\n\t\tconst disabled = _.isUndefined(this.props.disabled) || this.props.disabled === false ? false : true;\r\n\r\n\t\tconst inputProps = {\r\n\t\t\tplaceholder: this.props.placeHolder ? this.props.placeHolder : 'Tenant',\r\n\t\t\tvalue,\r\n\t\t\tonChange: this.onChange,\r\n\t\t\tonClick: this.inputClick\r\n\t\t};\r\n\t\t\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\tthis.handleSuggestionSelected(suggestion, suggestionValue, suggestionIndex, sectionIndex, method)}\r\n\t\t\t\trenderSuggestion={this.renderSuggestion}\r\n\t\t\t\tinputProps={inputProps}\r\n\t\t\t\tonBlur={(event, { highlightedSuggestion }) => {\r\n\t\t\t\t\t//console.log(highlightedSuggestion);\r\n\t\t\t\t}}\r\n\t\t\t\ttheme={{\r\n\t\t\t\t\t// maybe make global for reuse at some point\r\n\t\t\t\t\tcontainer:\r\n\t\t\t\t\t\t'auto-suggest Select ' +\r\n\t\t\t\t\t\t(!_.isUndefined(this.props.clearableIfValid) && this.props.clearableIfValid === true\r\n\t\t\t\t\t\t\t? 'is-clearable'\r\n\t\t\t\t\t\t\t: ''),\r\n\t\t\t\t\tsuggestionsContainerOpen: 'container--is--open',\r\n\t\t\t\t\tsuggestionsList: 'Select-list',\r\n\t\t\t\t\tsuggestion: 'Select-menu',\r\n\t\t\t\t\tsuggestionsContainer: 'select--suggestions',\r\n\t\t\t\t\tsuggestions: 'Select-menu-outer'\r\n\t\t\t\t}}\r\n\t\t\t\trenderInputComponent={(inputProps) => {\r\n\t\t\t\t\tconst iconProp =\r\n\t\t\t\t\t\t!_.isUndefined(this.props.clearableIfValid) &&\r\n\t\t\t\t\t\tthis.props.clearableIfValid === true &&\r\n\t\t\t\t\t\tvalid === true &&\r\n\t\t\t\t\t\t!disabled\r\n\t\t\t\t\t\t\t? { icon: 'ion-close-round' }\r\n\t\t\t\t\t\t\t: {};\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// if (e.key === \"Enter\" && !_.isUndefined(this.props.handleKeyPress)) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// this.props.handleKeyPress(e, this.state.dataMatch);\r\n\t\t\t\t\t\t\t\t\t\t// }\r\n\r\n\t\t\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\t\t\tonKeyPress={() => {}}\r\n\t\t\t\t\t\t\t\t\t\tonBlur={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tthis.checkMatch(e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t{...inputProps}\r\n\t\t\t\t\t\t\t\t\t\t// {...{\r\n\t\t\t\t\t\t\t\t\t\t// \t'data-parsley-matches-one-of': JSON.stringify({\r\n\t\t\t\t\t\t\t\t\t\t// \t\tallSuggestions: this.props.data.map((resident) => {\r\n\t\t\t\t\t\t\t\t\t\t// \t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t// \t\t\t\tvalue: resident.firstName + ' ' + resident.lastName\r\n\t\t\t\t\t\t\t\t\t\t// \t\t\t};\r\n\t\t\t\t\t\t\t\t\t\t// \t\t})\r\n\t\t\t\t\t\t\t\t\t\t// \t}),\r\n\t\t\t\t\t\t\t\t\t\t// \t'data-parsley-pattern': \"/^[A-Za-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/8059370/\r\n\t\t\t\t\t\t\t\t\t\t// \t'data-parsley-minlength': 4,\r\n\t\t\t\t\t\t\t\t\t\t// \t'data-parsley-required': false,\r\n\t\t\t\t\t\t\t\t\t\t// \t'data-parsley-error-message': 'Please enter an existing tenant name'\r\n\t\t\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t{valid === true &&\r\n\t\t\t\t\t\t\t\t\tvalue &&\r\n\t\t\t\t\t\t\t\t\t!disabled && (\r\n\t\t\t\t\t\t\t\t\t\t
    this.handleClear(e)}>\r\n\t\t\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// {\r\n\t\t\t\t\t\t// \t\t/* Ensures that member ID fetched even if not selected via autosuggest */\r\n\t\t\t\t\t\t// \t\tthis.checkMatch(e.target.value);\r\n\t\t\t\t\t\t// \t}}\r\n\t\t\t\t\t\t// \tparsley={{\r\n\t\t\t\t\t\t// \t\t'data-parsley-matches-one-of': JSON.stringify({\r\n\t\t\t\t\t\t// \t\t\tallSuggestions: this.props.data.map((resident) => {\r\n\t\t\t\t\t\t// \t\t\t\treturn {\r\n\t\t\t\t\t\t// \t\t\t\t\tvalue: resident.firstName + ' ' + resident.lastName\r\n\t\t\t\t\t\t// \t\t\t\t};\r\n\t\t\t\t\t\t// \t\t\t})\r\n\t\t\t\t\t\t// \t\t}),\r\n\t\t\t\t\t\t// \t\t'data-parsley-pattern': \"/^[A-Za-z ,.'-]+$/i\", // alpha chars only https://stackoverflow.com/questions/8059370/\r\n\t\t\t\t\t\t// \t\t'data-parsley-minlength': 4,\r\n\t\t\t\t\t\t// \t\t'data-parsley-required': false,\r\n\t\t\t\t\t\t// \t\t'data-parsley-error-message': 'Please enter an existing tenant name'\r\n\t\t\t\t\t\t// \t}}\r\n\t\t\t\t\t\t// \t{...iconProp}\r\n\t\t\t\t\t\t// />\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nMemberAutoSuggest.propTypes = {\r\n\t/* Optional initial tenant id to start with, (used when navigating back etc...) */\r\n\tdefaultTenantId: PropTypes.number,\r\n\t/* Callback function for when item is selected */\r\n\tonSelected: PropTypes.func,\r\n\t/* Optional disable the input field */\r\n\tdisabled: PropTypes.bool,\r\n\t/* Specifies if a X icon shows and the input field becomes clickable if the autosuggest is valid */\r\n\tclearableIfValid: PropTypes.bool,\r\n\t/* Label text */\r\n\tlabelText: PropTypes.string,\r\n\t/* PlaceHolder Text */\r\n\tplaceHolder: PropTypes.string,\r\n\t/**Default text */\r\n\tdefaultText: PropTypes.func,\r\n\t/*data list */\r\n\tdata: PropTypes.array\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\t//portalSettings: settingSelector.loadGlobalSetting(state)\r\n\t};\r\n}\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(MemberAutoSuggest);\r\n","//https://www.npmjs.com/package/react-textarea-autosize\r\nimport React, { Component } from \"react\";\r\n\r\nimport Textarea from \"react-textarea-autosize\";\r\n\r\nvar PropTypes = require('prop-types');\r\n\r\nclass TextAreaInput extends Component {\r\n\r\n render() {\r\n const { value, name, handleChange, placeHolder, maxLength } = this.props;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nTextAreaInput.propTypes = {\r\n /** text area input value*/\r\n value: PropTypes.string,\r\n /**text area property name */\r\n name: PropTypes.string,\r\n /** Handlechange function passed in and called in parent */\r\n handleChange: PropTypes.func,\r\n /** Placeholder text */\r\n placeHolder: PropTypes.string,\r\n /** Maximum Length of the text area */\r\n maxLength: PropTypes.string\r\n};\r\nexport default TextAreaInput;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport autobind from 'react-autobind';\r\nimport InputComponent from '../Input/Input';\r\nimport Button from '../Button/Button';\r\nimport moment from 'moment';\r\nimport AriaModal from 'react-aria-modal';\r\nimport ButtonGroup from '../../components/Button/ButtonGroup';\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nimport { browserHistory } from 'react-router';\r\nimport * as parcelActions from '../../store/Parcels/actions';\r\nimport * as parcelSelectors from '../../store/Parcels/reducer';\r\nimport TextAreaInput from '../../components/Input/TextAreaInput';\r\nimport '../../sass/components/ParcelModal/index.css';\r\nimport '../../sass/iescss.css';\r\n//import parcelStatuses from '../../../services/config';\r\nimport * as configHelper from '../../helpers/configHelper';\r\n\r\n/**\r\n * Main Modal event, diferent modal states loaded as type is specified\r\n */\r\n\r\nconst PortalTypes = configHelper.PortalTypes;\r\nconst ParcelStatuses = configHelper.ParcelStatuses;\r\nclass ParcelCancelModal extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tmodalActive: true,\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.portalSettings && !_.isUndefined(this.props.portalSettings.portalType)\r\n\t\t\t\t\t? this.props.portalSettings.portalType\r\n\t\t\t\t\t: ''\r\n\t\t};\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t//\tthis.addValidation();\r\n\t\t/**\r\n * exclude control + J on input response, this is needed as scanner append Ctrl + J at end of value scanned\r\n * https://stackoverflow.com/questions/27960841/usb-barcode-scanner-opens-browsers-downloads-page/27961410\r\n */\r\n\t}\r\n\tUNSAFE_componentWillMount() {\r\n\t\t//\tthis.props.dispatch(parcelActions.getStatusCodes());\r\n\t}\r\n\r\n//\thandleContinueClick() {}\r\n\r\n//\thandleStayOnPageClick() {}\r\n\trender() {\r\n\t\tconst {\r\n\t\t\thandleCloseClick,\r\n\t\t\thandleContinueClick,\r\n\t\t\thandleStayOnPageClick,\r\n\t\t\tgetApplicationNode,\r\n\t\t\tfocus,\r\n\t\t\tmoduleColor,\r\n\t\t\tconfirmationMessage\r\n\t\t} = this.props;\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\tBefore you go...\r\n\t\t\t\t\t\t\t\t

    \r\n\r\n\t\t\t\t\t\t\t\t

    {confirmationMessage}

    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{/* this.setState({ modalCancelShow: true })}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trightClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({ IsEditable: false });\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}} \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>*/}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nParcelCancelModal.propTypes = {\r\n\t/**Screen type value to specify current screen loaded */\r\n\ttype: PropTypes.string,\r\n\t/**getting the module color */\r\n\tmoduleColor: PropTypes.string\r\n};\r\n\r\nexport default ParcelCancelModal;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {withRouter} from 'react-router-dom';\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport FooterNavigation from '../../../components/FooterNavigation/FooterNavigation';\r\nimport InputComponent from '../../../components/Input/InputNew';\r\nimport ButtonGroup from '../../../components/Button/ButtonGroup';\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\nimport MemberAutoSuggest from '../../../components/TenantAutoSuggest/MemberAutoSuggest';\r\n\r\nimport { PortalTypes } from '../../../helpers/configHelper';\r\nimport * as settingsActions from '../../../store/ConciergeSetting/actions';\r\nimport * as settingSelector from '../../../store/ConciergeSetting/reducer';\r\n\r\nimport DetailListNew from '../../../components/DetailList/DetailListNew';\r\nimport * as parcelSelectors from '../../../store/Parcels/reducer';\r\nimport * as parcelActions from '../../../store/Parcels/actions';\r\nimport * as residentActions from '../../../store/Residents/actions';\r\nimport * as residentSelectors from '../../../store/Residents/reducer';\r\nimport * as tenantActions from '../../../store/Tenants/actions';\r\nimport * as tenantSelectors from '../../../store/Tenants/reducer';\r\nimport ParcelCancelModal from '../../../components/ariaModals/ParcelCancelModal';\r\nimport '../../../sass/containers/parcels.css';\r\nimport Button from '../../../components/Button/Button';\r\n\r\n/**\r\n * Parcel registration screen\r\n */\r\n\r\nclass RegisterScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\ttype: 'parcels',\r\n\t\t\tportalType: '',\r\n\t\t\tmemberId: undefined,\r\n\t\t\tmember: undefined,\r\n\t\t\tmodalCancelShow: false,\r\n\t\t\tbarcode: '',\r\n\t\t\tlocationId: undefined,\r\n\t\t\tcount: 1,\r\n\t\t\tenabled: false,\r\n\t\t\tparcelList: [],\r\n\t\t\tisSelected: false,\r\n\t\t\tparcelQueue: [],\r\n\t\t\tindex: -1,\r\n\t\t\terrorMessage: '',\r\n\t\t\tisOnlyOneLocationAvailable: false,\r\n\t\t\tparcelLocations: []\r\n\t\t};\r\n\t\tthis.addParcelValidation = null;\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.addValidation();\r\n\r\n\t\twindow.addEventListener('keydown', function(event) {\r\n\t\t\tif (event.keyCode === 17 || event.keyCode === 74) {\r\n\t\t\t\tif (event.ctrlKey) event.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddValidation() {\r\n\t\tthis.addParcelValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentWillMount() {\r\n\t\tif (this.props.portalSettings && this.props.portalSettings.portalType) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tportalType: this.props.portalSettings.portalType\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.props.dispatch(parcelActions.getAllLocations());\r\n\t\tthis.props.dispatch(tenantActions.getAllTenants());\r\n\t\tthis.props.dispatch(residentActions.getAllResidents());\r\n\t\tthis.props.dispatch(settingsActions.getGlobalSetting());\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (this.props.portalSettings !== prevProps.portalSettings && !_.isUndefined(this.props.portalSettings)) {\r\n\t\t\tif (this.props.portalSettings.portalType) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tportalType: this.props.portalSettings.portalType\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (prevProps.parcelLocations !== this.props.parcelLocations && this.props.parcelLocations.length > 0) {\r\n\t\t\tlet locations = _.map(this.props.parcelLocations, (location, rowIndex) => {\r\n\t\t\t\treturn { name: location.locationName, label: location.locationName, value: location.id };\r\n\t\t\t});\r\n\t\t\t//test condition\r\n\t\t\t//locations = _.filter(locations, (item) => item.value === 1);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tparcelLocations: locations\r\n\t\t\t});\r\n\t\t\tif (locations.length === 1) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tisOnlyOneLocationAvailable: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tprevProps.parcelsCheckedIn !== this.props.parcelsCheckedIn &&\r\n\t\t\t!_.isUndefined(this.props.parcelsCheckedIn) &&\r\n\t\t\tthis.props.parcelsCheckedIn.length > 0\r\n\t\t) {\r\n\t\t\tthis.sendRegitrationNotification(this.props.parcelsCheckedIn);\r\n\t\t}\r\n\r\n\t\tif (this.state.memberId !== prevState.memberId) {\r\n\t\t\tif (!_.isUndefined(this.state.memberId)) {\r\n\t\t\t\tif (this.state.parcelLocations && this.state.parcelLocations.length === 1) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tlocationId: this.state.parcelLocations[0].value.toString()\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.state.parcelLocations && this.state.parcelLocations.length === 1) {\r\n\t\t\t\t\t//this.refs['locationRef'].state.value = undefined;\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tlocationId: undefined\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentWillUpdate(nextProps, nextState) {\r\n\t\t\r\n\t\t\r\n\t}\r\n\tsendRegitrationNotification(data) {\r\n\t\tthis.props.dispatch(\r\n\t\t\tparcelActions.notifyCheckinParcels(data, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\thandleLocationChange(e) {\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value,\r\n\t\t\tlocationId: value,\r\n\t\t\tlocationValidationStatus: '',\r\n\t\t\tlocatinValidationMessage: ''\r\n\t\t});\r\n\t}\r\n\r\n\thandleTenantSelected(tenant) {\r\n\t\tthis.setState({\r\n\t\t\tmemberId: tenant.memberId ? tenant.memberId : undefined,\r\n\t\t\tmember: tenant.memberId ? tenant : undefined,\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\tmemberValidationMessage: ''\r\n\t\t});\r\n\t}\r\n\r\n\thandleCloseClick() {\r\n\t\tthis.setState({\r\n\t\t\tmodalCancelShow: false\r\n\t\t});\r\n\t}\r\n\r\n\thandleContinueClick() {\r\n\t\tthis.setState({\r\n\t\t\tmodalCancelShow: false\r\n\t\t});\r\n\t\tthis.props.history.push({\r\n\t\t\tpathname: '/',\r\n\t\t\tstate: { module: 'Parcels' }\r\n\t\t});\r\n\t\twindow.scrollTo(0, 0);\r\n\t}\r\n\r\n\thandleStayOnPageClick() {\r\n\t\tthis.setState({\r\n\t\t\tmodalCancelShow: false\r\n\t\t});\r\n\t}\r\n\r\n\tisSelectedTest() {\r\n\t\tthis.setState({ isSelected: false });\r\n\t}\r\n\r\n\thandleInputChange(e) {\r\n\t\tconst field = e.target.name;\r\n\t\tconst value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value,\r\n\t\t\tbarcode: value\r\n\t\t});\r\n\t}\r\n\t// handleRightClick() {\r\n\t// \tthis.setState({\r\n\t// \t\tenabled: true\r\n\t// \t});\r\n\t// }\r\n\r\n\tvalidate(fromSubmit = false) {\r\n\t\tconst { portalType } = this.state;\r\n\t\tthis.addParcelValidation.validate({ force: true });\r\n\t\tlet validationError =\r\n\t\t\t!_.isUndefined(this.state.memberId) && !_.isUndefined(this.state.locationId) ? false : true;\r\n\t\tconst valid = this.addParcelValidation.isValid();\r\n\t\tthis.setState({\r\n\t\t\taddParcelFormValid: valid,\r\n\t\t\taddParcelFormUsed: true,\r\n\t\t\terror: !validationError ? undefined : true,\r\n\t\t\tmemberValidationStatus: _.isUndefined(this.state.memberId) ? 'invalid' : '',\r\n\t\t\tmemberValidationMessage: _.isUndefined(this.state.memberId)\r\n\t\t\t\t? `${'Please select a valid Tenant '}${portalType === PortalTypes.Residential\r\n\t\t\t\t\t\t? 'or Address'\r\n\t\t\t\t\t\t: 'or Company'}`\r\n\t\t\t\t: '',\r\n\t\t\tlocationValidationStatus: _.isUndefined(this.state.locationId) ? 'invalid' : '',\r\n\t\t\tlocatinValidationMessage: _.isUndefined(this.state.locationId) ? 'Please select a location' : '',\r\n\t\t\tsuccess: false\r\n\t\t});\r\n\t\treturn validationError;\r\n\t}\r\n\r\n\thandleAddClick(index) {\r\n\t\tvar newParcel = {};\r\n\r\n\t\tif (!this.state.isSelected) {\r\n\t\t\tif (!this.validate(true)) {\r\n\t\t\t\tlet splitTenant = [];\r\n\t\t\t\tsplitTenant = this.state.member.tenant.split('-');\r\n\t\t\t\tlet address = this.state.member.address;\r\n\t\t\t\tlet fullNametemp = this.state.member.tenant.replace('- ' + address, '');\r\n\t\t\t\tsplitTenant = fullNametemp.split('-');\r\n\t\t\t\tlet fullName = splitTenant[0];\r\n\t\t\t\tfor (let i = 1; i <= splitTenant.length - 1; i++) {\r\n\t\t\t\t\tfullName += '-' + splitTenant[i];\r\n\t\t\t\t}\r\n\t\t\t\tnewParcel.barcode = this.state.barcode;\r\n\t\t\t\tnewParcel.locationId = this.state.locationId;\r\n\t\t\t\tnewParcel.fullName = fullName.length > 24 ? fullName.substring(0, 24) + '...' : fullName;\r\n\t\t\t\tif (this.state.portalType === PortalTypes.Commercial) {\r\n\t\t\t\t\tnewParcel.company =\r\n\t\t\t\t\t\taddress != null ? (address.length > 30 ? address.substring(0, 30) + '...' : address) : '';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewParcel.address =\r\n\t\t\t\t\t\taddress != null ? (address.length > 30 ? address.substring(0, 30) + '...' : address) : '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewParcel.memberId = this.state.member.memberId;\r\n\t\t\t\tnewParcel.specialInstruction = '';\r\n\r\n\t\t\t\tlet parcelList = this.state.parcelQueue;\r\n\t\t\t\tparcelList.unshift(newParcel);\r\n\t\t\t\tparcelList = _.map(parcelList, (item, indx) => {\r\n\t\t\t\t\treturn { ...item, index: indx };\r\n\t\t\t\t});\r\n\r\n\t\t\t//\tthis.refs['TenantAddressRef'].getWrappedInstance().reset();\r\n\t\t\t\t\r\n\t\t\t//\tthis.refs['locationRef'].state.value = undefined;\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tparcelQueue: parcelList,\r\n\t\t\t\t\tbarcode: '',\r\n\t\t\t\t\tlocationId: this.state.isOnlyOneLocationAvailable ? this.state.locationId : undefined,\r\n\t\t\t\t\tmemberId: undefined,\r\n\t\t\t\t\tmember: undefined,\r\n\t\t\t\t\tresetTenantAddress : true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!this.validate(true)) {\r\n\t\t\t\tlet updatedQueue = this.state.parcelQueue;\r\n\t\t\t\tlet queue = {};\r\n\t\t\t\tlet splitTenant = [];\r\n\t\t\t\tsplitTenant = this.state.member.tenant.split('-');\r\n\r\n\t\t\t\tlet address = this.state.member.address;\r\n\t\t\t\tlet fullNametemp = this.state.member.tenant.replace('- ' + address, '');\r\n\t\t\t\tsplitTenant = fullNametemp.split('-');\r\n\t\t\t\tlet fullName = splitTenant[0];\r\n\t\t\t\tfor (let i = 1; i <= splitTenant.length - 1; i++) {\r\n\t\t\t\t\tfullName += '-' + splitTenant[i];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueue.barcode = this.state.barcode;\r\n\t\t\t\tqueue.locationId = this.state.locationId;\r\n\r\n\t\t\t\tqueue.fullName = fullName.length > 24 ? fullName.substring(0, 24) + '...' : fullName;\r\n\t\t\t\tif (this.state.portalType === PortalTypes.Commercial) {\r\n\t\t\t\t\tqueue.company =\r\n\t\t\t\t\t\taddress != null ? (address.length > 30 ? address.substring(0, 30) + '...' : address) : '';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tqueue.address =\r\n\t\t\t\t\t\taddress != null ? (address.length > 30 ? address.substring(0, 30) + '...' : address) : '';\r\n\t\t\t\t}\r\n\t\t\t\tqueue.memberId = this.state.member.memberId;\r\n\t\t\t\tqueue.specialInstruction = '';\r\n\t\t\t\t//this.refs['TenantAddressRef'].getWrappedInstance().reset();\r\n\t\t\t\t//this.refs['locationRef'].state.value = undefined;\r\n\r\n\t\t\t\tupdatedQueue = _.map(updatedQueue, (item) => {\r\n\t\t\t\t\tif (item.index === index) {\r\n\t\t\t\t\t\treturn { ...queue, index: item.index };\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tparcelQueue: updatedQueue,\r\n\t\t\t\t\tbarcode: '',\r\n\t\t\t\t\tlocationId: this.state.isOnlyOneLocationAvailable ? this.state.locationId : undefined,\r\n\t\t\t\t\tmemberId: undefined,\r\n\t\t\t\t\tmember: undefined,\r\n\t\t\t\t\tisSelected: undefined,\r\n\t\t\t\t\tresetTenantAddress : true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveFromQueue(index) {\r\n\t\tconst { parcelQueue } = this.state;\r\n\r\n\t\tlet queue = _.filter(parcelQueue, (item) => item.index !== index);\r\n\r\n\t\tthis.setState({\r\n\t\t\tparcelQueue: queue\r\n\t\t});\r\n\t}\r\n\tformReset() {\r\n\t\t//this.refs['TenantAddressRef'].getWrappedInstance().reset();\r\n\r\n\t\tthis.setState({\r\n\t\t\tbarcode: '',\r\n\t\t\tlocationId: this.state.isOnlyOneLocationAvailable ? this.state.locationId : undefined,\r\n\t\t\tmemberId: undefined,\r\n\t\t\tisSelected: undefined,\r\n\t\t\tlocationValidationStatus: '',\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\tlocatinValidationMessage: '',\r\n\t\t\tmemberValidationMessage: '',\r\n\t\t\tresetTenantAddress : true\r\n\t\t});\r\n\t\t// this.refs['locationRef'].reset();\r\n\t\t//this.refs['locationRef'].state.value = undefined;\r\n\t}\r\n\r\n\thandleEdit(val) {\r\n\t\tconst { parcelQueue } = this.state;\r\n\r\n\t\tthis.setState({ message: '' });\r\n\t\tif (!_.isUndefined(val)) {\r\n\t\t\tlet selectedItem = _.find(parcelQueue, { index: val });\r\n\t\t\tthis.setState({\r\n\t\t\t\tbarcode: selectedItem.barcode,\r\n\t\t\t\tlocationId: selectedItem.locationId,\r\n\t\t\t\tmemberId: selectedItem.memberId,\r\n\t\t\t\tisSelected: true,\r\n\t\t\t\tindex: val,\r\n\t\t\t\tlocationValidationStatus: '',\r\n\t\t\t\tlocatinValidationMessage: '',\r\n\t\t\t\tresetTenantAddress : undefined\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.formReset();\r\n\t\t}\r\n\t}\r\n\r\n\thandleRightClick() {\r\n\t\t// this.setState({\r\n\t\t// \tenabled: true\r\n\t\t// });\r\n\t\tif (this.state.parcelQueue.length === 0) {\r\n\t\t\tif (!this.validate(true)) this.parcelsRegistertionProcess(true);\r\n\t\t} else {\r\n\t\t\t//\tif ( (this.state.location == undefined || this.state.isOnlyOneLocationAvailable) && this.state.memberId == undefined && this.state.barcode == '' ) {\r\n\r\n\t\t\t//if ((this.state.location === undefined || this.state.isOnlyOneLocationAvailable) && this.state.memberId === undefined && this.state.barcode === '' && this.refs['TenantAddressRef'].wrappedInstance.state.value === \"\") {\r\n\r\n\t\t\tif (\r\n\t\t\t\t(this.state.locationId === undefined || this.state.isOnlyOneLocationAvailable) &&\r\n\t\t\t\tthis.state.memberId === undefined &&\r\n\t\t\t\tthis.state.barcode === '' \r\n\t\t\t) {\r\n\t\t\t\tthis.parcelsRegistertionProcess();\r\n\t\t\t} else {\r\n\t\t\t\tif (!this.validate(true)) {\r\n\t\t\t\t\tif (this.state.isSelected) this.parcelsRegistertionProcess();\r\n\t\t\t\t\telse this.parcelsRegistertionProcess(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparcelsRegistertionProcess(isDataAddedFromFields) {\r\n\t\tlet parcelsData = _.map(this.state.parcelQueue, (parcel) => {\r\n\t\t\treturn {\r\n\t\t\t\t// id: parcel.id,\r\n\t\t\t\t// status: configHelper.ParcelStatuses.CheckedIn,\r\n\t\t\t\t// dateArrived: moment().format(),\r\n\t\t\t\tmemberId: parcel.memberId,\r\n\t\t\t\tlocationId: parcel.locationId,\r\n\t\t\t\tbarcode: parcel.barcode\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif (isDataAddedFromFields) {\r\n\t\t\tvar objFromField = {};\r\n\t\t\tobjFromField.memberId = this.state.memberId;\r\n\t\t\tobjFromField.locationId = this.state.locationId;\r\n\t\t\tobjFromField.barcode = this.state.barcode;\r\n\t\t\tparcelsData.push(objFromField);\r\n\t\t}\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tparcelActions.addParcels(parcelsData, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tparcelQueue: [],\r\n\t\t\t\t\t\tbarcode: '',\r\n\t\t\t\t\t\tlocationId: this.state.isOnlyOneLocationAvailable ? this.state.locationId : undefined,\r\n\t\t\t\t\t\tmemberId: undefined,\r\n\t\t\t\t\t\tmember: undefined,\r\n\t\t\t\t\t\tsuccess: true,\r\n\t\t\t\t\t\tmessage: 'Parcels Successfully Registered',\r\n\t\t\t\t\t\tresetTenantAddress : true\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t//this.refs['TenantAddressRef'].getWrappedInstance().reset();\r\n\t\t\t\t\r\n\t\t\t\t\t//this.refs['locationRef'].state.value = undefined;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\terrorMessage: 'Registration failed due to issues connecting the network',\r\n\t\t\t\t\t\terror: true\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t\tthis.resetValidation();\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tsuccess: false\r\n\t\t\t});\r\n\t\t}, 5000);\r\n\t}\r\n\r\n\tresetValidation() {\r\n\t\tthis.setState({\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\tmemberValidationMessage: '',\r\n\t\t\tlocationValidationStatus: '',\r\n\t\t\tlocatinValidationMessage: '',\r\n\t\t\terror: undefined,\r\n\t\t\tsuccess: undefined,\r\n\t\t\tmessage: '',\r\n\t\t\terrorMessage: ''\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst currentModule = _.find(this.props.modules, (o) => o.title === 'Parcels');\r\n\t\tconst { portalType, parcelQueue, parcelLocations, locationId } = this.state;\r\n\r\n\t\tconst { tenants, residents } = this.props;\r\n\r\n\t\tlet residentsList = _.orderBy(residents, [ 'firstName', 'addressLine1' ], [ 'asc' ]);\r\n\t\tlet tenantsList = _.orderBy(tenants, [ 'firstName', 'companyName' ], [ 'asc' ]);\r\n\r\n\t\t// let selectedLocation =\r\n\t\t// \tparcelLocations.length === 1 ? parcelLocations[0].id : this.state.isSelected ? this.state.locationId : '';\r\n\r\n\t\tlet defaultTenantIdProperty = {};\r\n\r\n\t\tif (!_.isUndefined(this.state.memberId)) {\r\n\t\t\tdefaultTenantIdProperty = {\r\n\t\t\t\tdefaultTenantId: this.state.memberId\r\n\t\t\t};\r\n\t\t}\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{portalType && (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.handleTenantSelected(data);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t//console.log('selected tenant: ', data);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tdefaultText={() => {}}\r\n\t\t\t\t\t\t\t\t\t\tshowRecordsField={true}\r\n\t\t\t\t\t\t\t\t\t\tportalType={this.state.portalType}\r\n\t\t\t\t\t\t\t\t\t\tdata={portalType === PortalTypes.Commercial ? tenantsList : residentsList}\r\n\t\t\t\t\t\t\t\t\t\t// fieldCleared={(val) => {\r\n\t\t\t\t\t\t\t\t\t\t// \tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t// \t\tmemberId: undefined\r\n\t\t\t\t\t\t\t\t\t\t// \t});\r\n\t\t\t\t\t\t\t\t\t\t// \tthis.resetValidation();\r\n\t\t\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t\t\t\tfieldCleared={(val) => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tmemberId: undefined\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t//this.resetValidation();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tfieldManualCleared={(val) => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tmemberId: undefined\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t//this.resetValidation();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tvalidation={{\r\n\t\t\t\t\t\t\t\t\t\t\tvalidate: true,\r\n\t\t\t\t\t\t\t\t\t\t\tclassName: this.state.memberValidationStatus\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\treset={_.isUndefined(this.state.memberId)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\t\tplaceHolder=\"Scan or enter reference code\"\r\n\t\t\t\t\t\t\t\t\t\tdisabled={false}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t this.handleLocationChange(e)}\r\n\t\t\t\t\t\t\t\t\t\toptions={parcelLocations}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t{/*
    \r\n\t\t\t\t\t\t\t\t\t this.handleAddClick()}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t+\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    */}\r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t 0\r\n\t\t\t\t\t\t\t\t\t\t// ) ? false : true)}\r\n\r\n\t\t\t\t\t\t\t\t\t\thandleClick={() => this.handleAddClick(this.state.index)}\r\n\t\t\t\t\t\t\t\t\t\t//isDisabled={this.state.isSelected === true ? false : (this.state.memberId !== undefined ? false : true)}\r\n\t\t\t\t\t\t\t\t\t\t// isDisabled={((\r\n\t\t\t\t\t\t\t\t\t\t// \tthis.state.location !== undefined &&\r\n\t\t\t\t\t\t\t\t\t\t// \tthis.state.memberId !== undefined) || this.state.parcelQueue.length > 0\r\n\t\t\t\t\t\t\t\t\t\t// ) ? false : true}\r\n\r\n\t\t\t\t\t\t\t\t\t\ticon={this.state.isSelected === true ? 'loop' : 'android-add'}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{//\r\n\t\t\t\t\t\t\t\tparcelQueue.length > 0 ? (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\tYou have added {parcelQueue.length}{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t{parcelQueue.length > 1 ? 'parcels' : 'parcel'} to the list\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.formReset();\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.removeFromQueue(index);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t//visitorStyle={visitor_style}\r\n\t\t\t\t\t\t\t\t\t\t\tselectedDetail={(val) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.handleEdit(val);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tselectDetailReset={this.state.isSelected}\r\n\t\t\t\t\t\t\t\t\t\t\tresetForm={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (e === true) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t//\tthis.formReset();\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tlistType={portalType === PortalTypes.Commercial ? 'tenant' : 'resident'}\r\n\t\t\t\t\t\t\t\t\t\t\tclassAppend={'content-mrg'}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{this.state.error && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.memberValidationMessage !== '' ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t{this.state.memberValidationMessage}\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.locatinValidationMessage !== '' ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t{this.state.locatinValidationMessage}\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.errorMessage !== '' ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t{this.state.errorMessage}\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t{this.state.success && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{this.state.message}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t\tfalse\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\ttrue\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tleftClick={//this.state.count > 0 ? (\r\n\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.locationId !== undefined ||\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.memberId !== undefined ||\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.barcode !== '' ||\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.parcelQueue.length > 0\r\n\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({ modalCancelShow: true });\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.props.history.push({\r\n\t\t\t\t\t\t\t\t\t\t\t\tpathname: '/',\r\n\t\t\t\t\t\t\t\t\t\t\t\tstate: { module: 'Parcels' }\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\trightClick={() => this.handleRightClick()}\r\n\t\t\t\t\t\t\t\t\t// rightClick={this.handleRightClick()}\r\n\t\t\t\t\t\t\t\t\t// isDisabled={this.state.isSucessfull}\r\n\t\t\t\t\t\t\t\t\ticon_l=\"\"\r\n\t\t\t\t\t\t\t\t\ticon_r=\"\"\r\n\t\t\t\t\t\t\t\t\tsizes={[ 'small', 'small' ]}\r\n\t\t\t\t\t\t\t\t\totherClass={'btn-margin'}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t{this.state.modalCancelShow ? (\r\n\t\t\t\t\t\t this.handleCloseClick()}\r\n\t\t\t\t\t\t\thandleContinueClick={() => this.handleContinueClick()}\r\n\t\t\t\t\t\t\thandleStayOnPageClick={() => this.handleStayOnPageClick()}\r\n\t\t\t\t\t\t\tfocus={true}\r\n\t\t\t\t\t\t\t//\tgetApplicationNode={this.getApplicationNode}\r\n\t\t\t\t\t\t\tmoduleColor={currentModule && currentModule.imageOverlayTextColour}\r\n\t\t\t\t\t\t\tconfirmationMessage={\r\n\t\t\t\t\t\t\t\t'Please notice that by leaving this page all parcel added to the list will be discard and not registered. Do you wish to continue?'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tportalSettings: settingSelector.loadGlobalSetting(state),\r\n\t\tparcelLocations: parcelSelectors.getParcelLocations(state),\r\n\t\tresidents: residentSelectors.getResidents(state),\r\n\t\ttenants: tenantSelectors.getAllTenants(state),\r\n\t\tparcelsCheckedIn: parcelSelectors.getCheckedInParcels(state)\r\n\t};\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(RegisterScreen));\r\n","import React, { Component } from \"react\";\r\n\r\nimport _ from \"lodash\";\r\n\r\nimport \"../../sass/components/Input/index.css\";\r\nimport \"../../sass/components/Input/customInput.css\";\r\n\r\nvar PropTypes = require('prop-types');\r\n/**\r\n * Render Input element with icon to auto clear field if required\r\n */\r\nclass CustomInput extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n render: true,\r\n value: _.isUndefined(this.props.value) ? \"\" : this.props.value,\r\n icon: \"ion-close-round\"\r\n };\r\n\r\n\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n if (this.props.value !== nextProps.value) {\r\n this.setState({\r\n value: nextProps.value\r\n });\r\n }\r\n }\r\n\r\n handleClear(e) {\r\n this.setState({\r\n value: \"\"\r\n });\r\n\r\n this.props.resetField && this.props.resetField(true);\r\n }\r\n render() {\r\n const {\r\n label,\r\n name,\r\n placeHolder,\r\n handleChange,\r\n maxLength,\r\n type,\r\n clearable,\r\n icon\r\n } = this.props;\r\n const { value } = this.state;\r\n\r\n const blurBind = _.isUndefined(this.props.onBlur)\r\n ? {}\r\n : { onBlur: this.props.onBlur };\r\n\r\n let disabled =\r\n _.isUndefined(this.props.disabled) ||\r\n this.props.disabled === false\r\n ? false\r\n : \"disabled\";\r\n const valueBind = !_.isUndefined(this.props.value)\r\n ? { value: this.props.value }\r\n : {};\r\n\r\n\r\n return (\r\n \r\n \r\n
    \r\n {\r\n\r\n e.persist();\r\n setTimeout(() => {\r\n handleChange(e);\r\n }, 0);\r\n }}\r\n onKeyPress={e => {\r\n if (this.props.handleKeyPress) {\r\n if (e.key === \"Enter\") {\r\n if (!_.isEmpty(this.state.value))\r\n this.props.handleKeyPress(e)\r\n else\r\n this.props.handleKeyPress({ key: \"Reset\" })\r\n }\r\n\r\n }\r\n\r\n }}\r\n autoComplete=\"off\"\r\n maxLength={maxLength}\r\n disabled={disabled}\r\n {...this.props.parsley}\r\n {...valueBind}\r\n {...blurBind}\r\n placeholder={placeHolder} // has priority over one added in autoSuggestProps so comes after\r\n />\r\n {clearable === true && value &&
    this.handleClear(e)}>
    }\r\n
    \r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nCustomInput.propTypes = {\r\n /** Optional function to run on blur of the input field */\r\n onBlur: PropTypes.func,\r\n /** If the input is disabled */\r\n disabled: PropTypes.bool,\r\n /** If the input is uneditable and for display only */\r\n uneditable: PropTypes.bool,\r\n /** Optional value so the input can be bound to an item in the parents state */\r\n value: PropTypes.string,\r\n /** Optional autosuggest properties when this component is rendered inside of react-autosuggest renderInputComponent method */\r\n label: PropTypes.string,\r\n /** Name displayed within form */\r\n name: PropTypes.string,\r\n /** Placeholder text */\r\n placeHolder: PropTypes.string,\r\n /** Handlechange function passed in and called in parent */\r\n handleChange: PropTypes.func,\r\n /** Used to switch between input type=\"text\" (default) or 'select' */\r\n type: PropTypes.string,\r\n /** Optional obhext of data-paseley-**** validation properties */\r\n parsley: PropTypes.object,\r\n /** Optional ion classs */\r\n icon: PropTypes.string,\r\n /** Optional maximum character length */\r\n maxLength: PropTypes.string,\r\n\r\n};\r\n\r\nexport default CustomInput;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport autoBind from 'react-autobind';\r\nimport _ from 'lodash';\r\nimport ReactPaginate from 'react-paginate';\r\n\r\nimport '../../sass/components/MultiSelectOptions/index.css';\r\n\r\nclass ListItem extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tactive: this.props.active,\r\n\t\t\teventSelectionprocessing: undefined\r\n\t\t\t// maxLimit: false\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t {\r\n\t\t\t\t\tthis.setState((prevState) => {\r\n\t\t\t\t\t\tlet newState = !prevState.active;\r\n\t\t\t\t\t\tlet eventIDs = this.props.event_ids;\r\n\r\n\t\t\t\t\t\teventIDs = [ ...eventIDs, this.props.event_id ];\r\n\r\n\t\t\t\t\t\tif (prevState.active) {\r\n\t\t\t\t\t\t\teventIDs = eventIDs.filter((e) => e !== this.props.event_id);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.props.handleClick(newState, this.props.value, this.props.event_id);\r\n\t\t\t\t\t\tthis.props.onClick(eventIDs);\r\n\r\n\t\t\t\t\t\treturn { active: newState };\r\n\t\t\t\t\t});\r\n\t\t\t\t}}\r\n\t\t\t\tclassName={`${this.props.status === true ? 'disabled ' : ''} ${!this.state.active && !this.props.active\r\n\t\t\t\t\t? ''\r\n\t\t\t\t\t: 'selected'}`}\r\n\t\t\t>\r\n\t\t\t\t{this.props.value}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nclass MultiSelectComponent extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tshowList: false,\r\n\t\t\tvalue: [],\r\n\t\t\tevent_id: [],\r\n\t\t\tshowSpinner: this.props.data.length === 0 ? true : false,\r\n\t\t\tshowDownList: _.isUndefined(this.props.processing) ? true : undefined,\r\n\t\t\ticonClass: 'fa-angle-down',\r\n\t\t\tcurrentPage: 0,\r\n\t\t\tdataList: [],\r\n\t\t\tcurrentList: []\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tUNSAFE_componentWillUpdate(nextProps, nextState) {\r\n\t\tif (this.props.data !== nextProps.data) {\r\n\t\t\tlet options = _.map(nextProps.data, (item, index) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlabel: item.label,\r\n\t\t\t\t\tvalue: item.id,\r\n\t\t\t\t\tkey: index,\r\n\t\t\t\t\t_handleItemClick: this.handleItemClick,\r\n\t\t\t\t\t_event_ids: this.state.event_id\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tlet n = 13;\r\n\t\t\tlet data = _.groupBy(options, (dataItem) => {\r\n\t\t\t\treturn Math.floor(dataItem.key / n);\r\n\t\t\t});\r\n\t\t\tlet dataList = _.toArray(data);\r\n\t\t\tthis.setState({\r\n\t\t\t\tdataList: dataList\r\n\t\t\t\t//currentList: dataList.length > 0 ? dataList[0] : []\r\n\t\t\t});\r\n\r\n\t\t\t// if (nextProps.selectedOption && nextProps.selectedOption.length > 0) {\r\n\t\t\t// \tthis.setState({\r\n\t\t\t// \t\tvalue : _.filter(_.map(nextProps.selectedOption, o => {\r\n\t\t\t// \t\t\tlet obj = _.find(options, {value : o.id});\r\n\t\t\t// \t\t\t\tif(!_.isUndefined(obj))\r\n\t\t\t// \t\t\t\t{\r\n\t\t\t// \t\t\t\t\treturn obj.label\r\n\t\t\t// \t\t\t\t}\r\n\t\t\t// \t\t\t\treturn undefined\r\n\t\t\t// \t\t}), s => !_.isUndefined(s)),\r\n\r\n\t\t\t// \t\tevent_id: _.map(nextProps.selectedOption, (val) => {\r\n\t\t\t// \t\t\treturn val.id;\r\n\t\t\t// \t\t})\r\n\t\t\t// \t});\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (\r\n\t\t\tthis.props.selectedOption !== prevProps.selectedOption &&\r\n\t\t\tthis.props.selectedOption &&\r\n\t\t\tthis.props.selectedOption.length > 0\r\n\t\t) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalue: _.filter(\r\n\t\t\t\t\t_.map(this.props.selectedOption, (o) => {\r\n\t\t\t\t\t\tlet obj = _.find(this.props.data, { id: o.id });\r\n\t\t\t\t\t\tif (!_.isUndefined(obj)) {\r\n\t\t\t\t\t\t\treturn obj.label;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn undefined;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(s) => !_.isUndefined(s)\r\n\t\t\t\t),\r\n\r\n\t\t\t\tevent_id: _.map(this.props.selectedOption, (val) => {\r\n\t\t\t\t\treturn val.id;\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\trenderValue() {\r\n\t\tlet { value } = this.state;\r\n\t\tif (!value.length) return this.props.placeHolder ? this.props.placeHolder : 'Select...';\r\n\t\telse return Array.from(new Set(value)).length + ' selected';\r\n\t\t// return value.join(', ')\r\n\t}\r\n\ttoggleList() {\r\n\t\tlet { showList } = this.state;\r\n\t\tif (!showList) {\r\n\t\t\tthis.setState({\r\n\t\t\t\ticonClass: 'fa-angle-up'\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\ticonClass: 'fa-angle-down'\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.setState((prevState) => ({ showList: !prevState.showList }));\r\n\t}\r\n\r\n\ttoggleSpiiner() {\r\n\t\tlet { showList } = this.state;\r\n\t\tif (showList) {\r\n\t\t\t//var millisecondsToWait = 500;\r\n\t\t\tvar CurruntContext = this;\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\t// Whatever you want to do after the wait\r\n\t\t\t\tCurruntContext.setState((prevState) => ({ showUparrow: prevState.showList }));\r\n\t\t\t\t// CurruntContext.setState(prevState => ({ showSpinner: false }))\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\thandleItemClick(active, val, evntid) {\r\n\t\tlet { value, event_id } = this.state;\r\n\r\n\t\tlet currentIdList = event_id;\r\n\t\tlet currentValueList = value;\r\n\r\n\t\tif (active === true) {\r\n\t\t\tif (!_.includes(event_id, evntid)) {\r\n\t\t\t\tcurrentIdList = [ ...currentIdList, evntid ];\r\n\t\t\t\tcurrentValueList = [ ...currentValueList, val ];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcurrentIdList = _.filter(event_id, (e) => e !== evntid);\r\n\t\t\tcurrentValueList = _.filter(currentValueList, (e) => e !== val);\r\n\t\t}\r\n\r\n\t\tthis.setState({ event_id: currentIdList, value: currentValueList });\r\n\t}\r\n\thandlePagerChanged(page) {\r\n\t\tthis.setState({\r\n\t\t\tcurrentPage: page.selected\r\n\t\t});\r\n\t}\r\n\r\n\t//helper method to get current page list item\r\n\tgetCurrentPageList(index) {\r\n\t\tconst { dataList } = this.state;\r\n\r\n\t\treturn dataList[index];\r\n\t}\r\n\tisOnline(){\r\n\t\t\r\n\t\t\treturn navigator.onLine ? true : false;\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { handleSelectionChange, selectedOption, processing, eventSelectionprocessing } = this.props;\r\n\t\tconst { value } = this.state;\r\n\r\n\t\treturn (\r\n\t\t\t
    (this.node = node)} className=\"select\">\r\n\t\t\t\t {\r\n\t\t\t\t\t\tthis.toggleList();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t/*this.toggleSpiiner()*/\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tclassName=\"multiSelectButton\"\r\n\t\t\t\t>\r\n\t\t\t\t\t 0 ? '' : ' Select-placeholder'}`}>\r\n\t\t\t\t\t\t{this.renderValue()}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{_.isUndefined(processing) ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : this.props.data.length === 0 ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.state.dataList &&\r\n\t\t\t\t\t\t\t_.map(this.state.dataList, (optionList, indx) => {\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{ _.isUndefined(eventSelectionprocessing) && _.map(optionList, (item, index) => {\r\n\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleSelectionChange(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_ids={this.state.event_id}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive={!_.isUndefined(_.find(selectedOption, { id: item.value }))}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedOption={selectedOption}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstatus={eventSelectionprocessing}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.state.dataList.length > 1 && (\r\n\t\t\t\t\t\t\t this.handlePagerChanged(val)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nMultiSelectComponent.propTypes = {\r\n\tserviceId: PropTypes.string,\r\n\tdate: PropTypes.string,\r\n\tdata: PropTypes.array,\r\n\thandleSelectionChange: PropTypes.func\r\n};\r\n\r\nexport default MultiSelectComponent;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport _ from 'lodash';\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport FooterNavigation from '../../../components/FooterNavigation/FooterNavigation';\r\nimport dateFormat from 'dateformat';\r\n\r\nimport CustomInputComponent from '../../../components/Input/CustomInput';\r\nimport ParcelResultComponent from '../../../components/Parcel/ParcelResultComponent';\r\nimport HeaderNavigation from \"../../../components/HeaderNavigation/HeaderNavigation\";\r\nimport ResponseMessage from '../../../components/ResponseMessage/ResponseMessage';\r\nimport {withRouter} from 'react-router-dom'\r\nimport * as moduleActions from '../../../store/ServiceModules/actions';\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\nimport * as parcelActions from '../../../store/Parcels/actions';\r\nimport * as parcelSelectors from '../../../store/Parcels/reducer';\r\nimport * as portalSettingsActions from '../../../store/ConciergeSetting/actions';\r\nimport * as portalSettingsSelectors from '../../../store/ConciergeSetting/reducer';\r\nimport * as stringHelper from '../../../helpers/stringHelper';\r\n\r\nimport MultiSelectComponent from '../../../components/MultiSelectComponent/MultiSelectComponent';\r\nimport { PortalTypes, ParcelStatuses } from '../../../helpers/configHelper';\r\nimport Button from '../../../components/Button/Button';\r\nimport { CSSTransitionGroup } from 'react-transition-group';\r\n\r\n/**\r\n * Parcel registration screen\r\n */\r\n\r\nclass ParcelManagementScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\ttype: 'parcels',\r\n\t\t\tportalType: '',\r\n\t\t\tparcels: [],\r\n\t\t\tparcelsDue: [],\r\n\t\t\tparcelsList: [],\r\n\t\t\tloadMoreLimit: 10,\r\n\t\t\tdefaultLimit: 10,\r\n\t\t\tsearch: '',\r\n\t\t\tfilterOptionsSelected: [], //populated on filter options selcted\r\n\t\t\tselectedOptions: [],\r\n\t\t\tprocessing: undefined,\r\n\t\t\tselectedStatus: []\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t/**\r\n * exclude control + J on input response, this is needed as scanner append Ctrl + J at end of value scanned\r\n * https://stackoverflow.com/questions/27960841/usb-barcode-scanner-opens-browsers-downloads-page/27961410\r\n */\r\n\r\n\t\twindow.addEventListener('keydown', function(event) {\r\n\t\t\tif (event.keyCode === 17 || event.keyCode === 74) {\r\n\t\t\t\t\r\n\t\t\t\tif (event.ctrlKey) event.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n componentDidMount() {\r\n\t\tthis.setState({\r\n\t\t\tprocessing: true\r\n\t\t});\r\n\t\tthis.props.dispatch(moduleActions.loadModules());\r\n\t\tthis.props.dispatch(portalSettingsActions.getGlobalSetting());\r\n\t\tthis.props.dispatch(parcelActions.getParcelSettigs());\r\n\t\tthis.props.dispatch(parcelActions.getStatusCodes());\r\n\r\n\t\tthis.props.dispatch(\r\n\t\t\tparcelActions.getAllParcelsonManage((success) => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tprocessing: undefined\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tif (this.props.location.state && this.props.location.state.selectedFilterOption) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tfilterOptionsSelected: [ this.props.location.state.selectedFilterOption ]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (prevProps.ManageParcels !== this.props.ManageParcels && this.props.ManageParcels.length > 0) {\r\n\t\t\tlet parcelList = _.filter(\r\n\t\t\t\tthis.props.ManageParcels,\r\n\t\t\t\t(item) => item.status.status !== ParcelStatuses.Expected\r\n\t\t\t);\r\n\t\t\tthis.setState({\r\n\t\t\t\tprocessing: undefined,\r\n\t\t\t\tparcels:\r\n\t\t\t\t\tthis.state.filterOptionsSelected.length > 0\r\n\t\t\t\t\t\t? this.handleFilerUptions(this.state.filterOptionsSelected, parcelList)\r\n\t\t\t\t\t\t: parcelList,\r\n\t\t\t\tparcelsList: parcelList\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// if (this.props.parcelsDue !== nextProps.parcelsDue && nextProps.parcelsDue.length > 0) {\r\n\t\t// \tthis.setState({\r\n\t\t// \t\tparcelsDue: nextProps.parcelsDue\r\n\t\t// \t});\r\n\t\t// }\r\n\t}\r\n\r\n\tcomponentWillUpdate(nextProps, nextState) {\r\n\t\tif (this.props.portalSettings !== nextProps.portalSettings && !_.isUndefined(nextProps.portalSettings)) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tportalType: nextProps.portalSettings.portalType\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.props.parcelStatus !== nextProps.parcelStatus &&\r\n\t\t\tnextProps.parcelStatus &&\r\n\t\t\tnextProps.parcelStatus.length > 0\r\n\t\t) {\r\n\t\t\tthis.handleResourceChange(nextState.filterOptionsSelected, nextProps.parcelStatus);\r\n\t\t}\r\n\t}\r\n\thandlePacrelClick(val) {\r\n\t\tconst { parcels, parcelsDue } = this.state;\r\n\t\tlet parcelList = _.concat(parcels, parcelsDue);\r\n\t\tlet selectedParcel = _.find(parcelList, { id: val });\r\n\r\n\t\tif (!_.isUndefined(selectedParcel)) {\r\n\t\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/concierge/parcel/info',\r\n\r\n\t\t\t\tstate: {\r\n\t\t\t\t\tparcel: selectedParcel\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\twindow.scrollTo(0, 0);\r\n\t\t}\r\n\t}\r\n\t// handleResourceChange(val) {\r\n\r\n\t// \tlet selected = _.filter(\r\n\t// \t\t_.map(val, (item) => {\r\n\t// \t\t\tlet s = _.find(this.props.parcelStatus, { id: item });\r\n\r\n\t// \t\t\tif (!_.isUndefined(s)) {\r\n\t// \t\t\t\treturn { id: s.id, name: s.status };\r\n\t// \t\t\t}\r\n\t// \t\t\treturn undefined;\r\n\t// \t\t}),\r\n\t// \t\t(o) => !_.isUndefined(o)\r\n\t// \t);\r\n\r\n\t// \tthis.setState({\r\n\t// \t\tfilterOptionsSelected: val,\r\n\t// \t\tselectedOptions: selected\r\n\t// \t});\r\n\r\n\t// \tlet currentParcels =\r\n\t// \t\tval && val.length > 0 ? this.handleFilerUptions(val, this.state.parcelsList) : this.state.parcelsList;\r\n\r\n\t// \tif (this.state.search) {\r\n\t// \t\tthis.updateSearchList(this.state.search, currentParcels);\r\n\t// \t} else {\r\n\t// \t\tthis.setState({\r\n\t// \t\t\tparcels: currentParcels\r\n\t// \t\t});\r\n\t// \t}\r\n\t// }\r\n\r\n\thandleResourceChange(val, parcelStatusList) {\r\n\t\tconst { portalSettings } = this.props;\r\n\t\tlet selected = _.filter(\r\n\t\t\t_.map(val, (item) => {\r\n\t\t\t\tlet s = _.find(parcelStatusList, { id: item });\r\n\r\n\t\t\t\tif (!_.isUndefined(s)) {\r\n\t\t\t\t\treturn { id: s.id, name: s.status };\r\n\t\t\t\t}\r\n\t\t\t\treturn undefined;\r\n\t\t\t}),\r\n\t\t\t(o) => !_.isUndefined(o)\r\n\t\t);\r\n\r\n\t\tthis.setState({\r\n\t\t\tfilterOptionsSelected: val,\r\n\t\t\tselectedOptions: selected\r\n\t\t});\r\n\r\n\t\tlet currentParcels =\r\n\t\t\tval && val.length > 0 ? this.handleFilerUptions(val, this.state.parcelsList) : this.state.parcelsList;\r\n\r\n\t\tif (currentParcels && currentParcels.length > 0) {\r\n\t\t\tcurrentParcels = _.orderBy(currentParcels, [ 'dateArrived' ], [ 'desc' ]);\r\n\t\t}\r\n\r\n\t\tif (this.state.search) {\r\n\t\t\tthis.updateSearchList(this.state.search, currentParcels);\r\n\t\t\tthis.setState({\r\n\t\t\t\tselectedStatus: val\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\tparcels: currentParcels,\r\n\t\t\t\tselectedStatus: val\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tresetParcelList() {\r\n\t\tlet currentParcels =\r\n\t\t\tthis.state.selectedStatus && this.state.selectedStatus.length > 0\r\n\t\t\t\t? this.handleFilerUptions(this.state.selectedStatus, this.state.parcelsList)\r\n\t\t\t\t: this.state.parcelsList;\r\n\r\n\t\tif (currentParcels && currentParcels.length > 0) {\r\n\t\t\tcurrentParcels = _.orderBy(currentParcels, [ 'dateArrived' ], [ 'desc' ]);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tparcels: currentParcels,\r\n\t\t\tsearch: ''\r\n\t\t});\r\n\t}\r\n\r\n\thandleLoadMore(parcels) {\r\n\t\tconst parcelslength = parcels.length;\r\n\t\tconst currentLimit = this.state.loadMoreLimit;\r\n\t\tif (currentLimit < parcelslength) {\r\n\t\t\tthis.setState({ loadMoreLimit: currentLimit + this.state.defaultLimit });\r\n\t\t}\r\n\t}\r\n\thandleInputChange(e) {\r\n\t\tconst field = e.target.name;\r\n\t\tconst value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tif (value === '') {\r\n\t\t\tthis.setState({\r\n\t\t\t\tparcels: this.state.parcelsList\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\thandleSearchPress(e) {\r\n\t\tconst { parcelsList, search, filterOptionsSelected } = this.state;\r\n\r\n\t\tif (e.key === 'Enter') {\r\n\t\t\tlet parcels =\r\n\t\t\t\tthis.state.filterOptionsSelected.length > 0\r\n\t\t\t\t\t? this.handleFilerUptions(filterOptionsSelected, parcelsList)\r\n\t\t\t\t\t: parcelsList;\r\n\r\n\t\t\tthis.updateSearchList(search, parcels);\r\n\t\t} else if (e.key === 'Clear') {\r\n\t\t} else if (e.key === 'Reset') {\r\n\t\t}\r\n\t}\r\n\r\n\tupdateSearchList(search, parcels) {\r\n\t\tconst { portalType } = this.state;\r\n\t\tconst { portalSettings } = this.props;\r\n\t\tlet type = portalType;\r\n\t\tconst inputValue = search.trim().toLowerCase();\r\n\r\n\t\tconst inputParts = inputValue.split(' ').filter((value) => {\r\n\t\t\treturn value !== '';\r\n\t\t});\r\n\r\n\t\tlet searchData = '';\r\n\r\n\t\tlet match = [];\r\n\t\tlet parcels_ = _.filter(parcels, (item) => {\r\n\t\t\tif (!_.isUndefined(type) && type === PortalTypes.Residential) {\r\n\t\t\t\treturn item.resident.firstName !== null || item.resident.lastName !== null;\r\n\t\t\t} else if (!_.isUndefined(type) && type === PortalTypes.Commercial) {\r\n\t\t\t\treturn item.tenant.firstName !== null || item.tenant.lastName !== null;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (inputParts.length === 1) {\r\n\t\t\tif (!_.isUndefined(type) && type === PortalTypes.Residential) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), inputParts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine2 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine2.toLowerCase(), inputParts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode !== null ? o.barcode.toLowerCase() : null, inputParts[0].toLowerCase())\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t} else if (!_.isUndefined(type) && type === PortalTypes.Commercial) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t(o.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), inputParts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode !== null ? o.barcode.toLowerCase() : null, inputParts[0].toLowerCase())\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (inputParts.length === 2) {\r\n\t\t\tsearchData = _.trimEnd(_.trimStart(search));\r\n\r\n\t\t\tif (!_.isUndefined(type) && type === PortalTypes.Residential) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[1].toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode !== null ? o.barcode.toLowerCase() : null, searchData)\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t} else if (!_.isUndefined(type) && type === PortalTypes.Commercial) {\r\n\t\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t(_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[1].toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode !== null ? o.barcode.toLowerCase() : null, searchData);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (inputParts.length > 2) {\r\n\t\t\tlet search_ = '';\r\n\t\t\tfor (var i = 2; i < inputParts.length; i++) {\r\n\t\t\t\tsearch_ += inputParts[i] + ' ';\r\n\t\t\t}\r\n\r\n\t\t\tsearchData = _.trimEnd(_.trimStart(search));\r\n\r\n\t\t\tmatch = _.filter(parcels_, (o) => {\r\n\t\t\t\tif (!_.isUndefined(type) && type === PortalTypes.Residential) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[1].toLowerCase()) &&\r\n\t\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), search_.trim().toLowerCase()))) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode !== null ? o.barcode.toLowerCase() : null, searchData)\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (!_.isUndefined(type) && type === PortalTypes.Commercial) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[1].toLowerCase()) &&\r\n\t\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), search_.trim().toLowerCase()))) ||\r\n\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t_.startsWith(o.barcode !== null ? o.barcode.toLowerCase() : null, searchData)\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (match && match.length > 0) {\r\n\t\t\tmatch = _.orderBy(match, [ 'dateArrived' ], [ 'desc' ]);\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tparcels: match\r\n\t\t});\r\n\t}\r\n\r\n\thandleFilerUptions(options, lists) {\r\n\t\tlet currentList = [];\r\n\r\n\t\t_.map(options, (statusItem) => {\r\n\t\t\t_.map(lists, (parcelItem) => {\r\n\t\t\t\tif (parcelItem.status.id === statusItem) {\r\n\t\t\t\t\tcurrentList.push(parcelItem);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn currentList;\r\n\t}\r\n\r\n\tgetstatus(status) {\r\n\t\tswitch (status.toLowerCase()) {\r\n\t\t\tcase ParcelStatuses.CheckedIn:\r\n\t\t\t\treturn 'In Storage';\r\n\r\n\t\t\tcase ParcelStatuses.Due:\r\n\t\t\t\treturn 'Due to be Returned';\r\n\r\n\t\t\tcase ParcelStatuses.Collected:\r\n\t\t\t\treturn 'Collected';\r\n\r\n\t\t\tcase ParcelStatuses.Returned:\r\n\t\t\t\treturn 'Returned';\r\n\r\n\t\t\tcase ParcelStatuses.Discarded:\r\n\t\t\t\treturn 'Discarded';\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * reformat filter options for display\r\n\t */\r\n\tgetFilterOptions(data) {\r\n\t\tconst statusSortOrder = [ 1, 4, 2, 3, 6 ];\r\n\r\n\t\tif (data && data.length > 0) {\r\n\t\t\tlet options = _.filter(\r\n\t\t\t\t_.map(data, (item) => {\r\n\t\t\t\t\tif (item.id === 0 || item.id === 5) {\r\n\t\t\t\t\t\treturn undefined;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn { id: item.id, label: this.getstatus(item.status), name: item.status };\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\t(o) => !_.isUndefined(o)\r\n\t\t\t);\r\n\r\n\t\t\tif (options.length > 0 && options.length === statusSortOrder.length) {\r\n\t\t\t\tlet options_status = _.map(statusSortOrder, (x) => {\r\n\t\t\t\t\treturn _.find(options, { id: x });\r\n\t\t\t\t});\r\n\r\n\t\t\t\toptions = options_status;\r\n\t\t\t} else {\r\n\t\t\t\toptions = [];\r\n\t\t\t}\r\n\t\t\treturn options;\r\n\t\t} else {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { portalType, parcels, search } = this.state;\r\n\t\tconst { parcelStatus } = this.props;\r\n\t\tconst currentModule = _.find(this.props.modules, (o) => o.title === 'Parcels');\r\n\t\tconst overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\r\n\t\tlet searchPH = '';\r\n\t\tif (portalType) {\r\n\t\t\tsearchPH = portalType === PortalTypes.Residential ? 'or address' : 'or company';\r\n\t\t}\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\thandleKeyPress={(e) => this.handleSearchPress(e)}\r\n\t\t\t\t\t\t\t\t\tclearable={true}\r\n\t\t\t\t\t\t\t\t\ticon={'ion-close-round'}\r\n\t\t\t\t\t\t\t\t\tresetField={(val) => {\r\n\t\t\t\t\t\t\t\t\t\tif (val === true) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.resetParcelList();\r\n\t\t\t\t\t\t\t\t\t\t\t// this.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t// \tparcels: this.state.parcelsList,\r\n\t\t\t\t\t\t\t\t\t\t\t// \tsearch: ''\r\n\t\t\t\t\t\t\t\t\t\t\t// });\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdisabled={this.state.processing}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tthis.handleResourceChange(e, this.props.parcelStatus);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tselectedOption={\r\n\t\t\t\t\t\t\t\t\t\tthis.state.selectedOptions.length > 0 ? this.state.selectedOptions : undefined\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t//processing={true}\r\n\t\t\t\t\t\t\t\t\tplaceHolder={'Select an option'}\r\n\t\t\t\t\t\t\t\t\teventSelectionprocessing={this.state.processing}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{_.isUndefined(this.state.processing) && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t{!_.isUndefined(this.state.processing) && this.state.processing === true ? (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    {' '}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\tportalType &&\r\n\t\t\t\t\t\t\tparcels.length > 0 && (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{_.map(parcels.slice(0, this.state.loadMoreLimit), (parcel, index) => {\r\n\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t {}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick={(item) => this.handlePacrelClick(item)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowoverlay={false}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{parcels &&\r\n\t\t\t\t\t\t\t\t\t\tthis.state.loadMoreLimit < parcels.length && (\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleLoadMore(parcels);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tManageParcels: parcelSelectors.getManageParcels(state),\r\n\t\tportalSettings: portalSettingsSelectors.loadGlobalSetting(state),\r\n\t\tparcelSettings: parcelSelectors.getParcelSettings(state),\r\n\r\n\t\tparcelStatus: parcelSelectors.getStatusCodes(state)\r\n\r\n\t\t//\tparcelStatuses: parcelSelectors.getStatusCodes(state)\r\n\t};\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(ParcelManagementScreen));\r\n","import React, { Component } from 'react';\r\nimport _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport autoBind from 'react-autobind';\r\nimport moment from 'moment';\r\nimport dateFormat from 'dateformat';\r\nimport * as configHelper from '../../helpers/configHelper';\r\nimport * as helpers from '../../helpers/stringHelper';\r\n/**\r\n * Display list of Parcels with properties Tenant Name, Address, Sender and Expected Arrival\r\n * \r\n */\r\nconst PortalTypes = configHelper.PortalTypes;\r\nclass ParcelsListComponent extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tIsParcelSelected: false,\r\n\t\t\tselectedItem: undefined,\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.portalSettings && !_.isUndefined(this.props.portalSettings.portalType)\r\n\t\t\t\t\t? this.props.portalSettings.portalType\r\n\t\t\t\t\t: '',\r\n\t\t\tdisabledItem: false,\r\n\t\t\texpectedParcelsIndexInState: [],\r\n\t\t\tmemberId: undefined,\r\n\t\t\tisParcelExpectedSearched: this.props.isParcelExpectedSearched,\r\n\t\t\tselectedParcels: []\r\n\t\t};\r\n\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\tUNSAFE_componentWillReceiveProps(nextProps) {\r\n\t\t//Change trigere fro selected row, clear selection on deselct trigger recieved\r\n\t\tif (this.props.isParcelExpectedSearched !== nextProps.isParcelExpectedSearched) {\r\n\t\t\tif (this.props.isParcelExpectedSearched) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\texpectedParcelsIndexInState: [],\r\n\t\t\t\t\tmemberId: undefined,\r\n\t\t\t\t\tselectedParcels: []\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tthis.props.setParcelSearched(false);\r\n\t\t\tthis.props.actionClick(false);\r\n\t\t}\r\n\r\n\t\tif (this.props.selectedParcels !== nextProps.selectedParcels) {\r\n\t\t\tif (nextProps.selectedParcels.length > 0) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tselectedParcels: nextProps.selectedParcels\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\texpectedParcelsIndexInState: [],\r\n\t\t\t\t\tmemberId: undefined,\r\n\t\t\t\t\tselectedParcels: []\r\n\t\t\t\t});\r\n\t\t\t\tthis.props.actionClick(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tUNSAFE_componentWillMount() {}\r\n\r\n\tUNSAFE_componentWillUpdate(nextProps, nextState) {\r\n\t\tif (this.props.isParcelListChanged !== nextProps.isParcelListChanged) {\r\n\t\t\tif (this.props.isParcelListChanged) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\texpectedParcelsIndexInState: [],\r\n\t\t\t\t\tmemberId: undefined,\r\n\t\t\t\t\tselectedParcels: []\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tthis.props.setParcelsUpdated && this.props.setParcelsUpdated(false);\r\n\t\t}\r\n\t}\r\n\r\n\t//not sure this is needed in here, component would react to data passed into it\r\n\t//condition already specified in page using it\r\n\tgetExpectedParcelCount() {\r\n\t\tconst { data } = this.props;\r\n\t\tlet expectedCount = 0;\r\n\t\t!_.isUndefined(data) &&\r\n\t\t\tdata &&\r\n\t\t\tdata.length > 0 &&\r\n\t\t\t_.map(data.slice(0, this.state.limit), (expectedParcel, index) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\texpectedParcel.status.status &&\r\n\t\t\t\t\texpectedParcel.status.status.toLowerCase() === configHelper.ParcelStatuses.Expected.toLowerCase() &&\r\n\t\t\t\t\tdateFormat(expectedParcel.expecteDate, 'dd/mm/yyyy') === dateFormat(moment().format(), 'dd/mm/yyyy')\r\n\t\t\t\t) {\r\n\t\t\t\t\texpectedCount++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn expectedCount;\r\n\t}\r\n\r\n\thandleParcelSelected(rowIndex, expectedParcel) {\r\n\t\tconst { selectedParcels } = this.state;\r\n\r\n\t\tlet selectedList = selectedParcels;\r\n\r\n\t\t//check current selected list, if selected row item is present\r\n\t\tlet parcelItem = _.find(selectedParcels, { id: expectedParcel.id });\r\n\r\n\t\t//selected item is present\r\n\t\tif (!_.isUndefined(parcelItem)) {\r\n\t\t\t//remove selected item from list (deselection mode)\r\n\t\t\tselectedList = _.filter(selectedParcels, (item) => item.id !== parcelItem.id);\r\n\r\n\t\t\t/**after deselection is any item remaining, if not reset memberId tag to default */\r\n\t\t\tif (selectedList.length === 0) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tmemberId: undefined\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (_.isUndefined(parcelItem)) {\r\n\t\t\t/**current selected is not in main selection list and if its the first set as the unique member */\r\n\t\t\tif (selectedParcels.length === 0) {\r\n\t\t\t\tselectedList.push(expectedParcel);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tmemberId: expectedParcel.recipient.memberId\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t/**current selected not in list befor adding to the selection list, make sure it belongs to set member */\r\n\t\t\t\tif (\r\n\t\t\t\t\tselectedParcels &&\r\n\t\t\t\t\tselectedParcels.length > 0 &&\r\n\t\t\t\t\tselectedParcels[0].recipient.memberId === expectedParcel.recipient.memberId\r\n\t\t\t\t) {\r\n\t\t\t\t\tselectedList.push(expectedParcel);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**compile and set the reformed selected list */\r\n\t\tthis.setState({\r\n\t\t\tselectedParcels: selectedList\r\n\t\t});\r\n\r\n\t\tthis.props.actionClick(selectedList.length > 0);\r\n\t\tthis.props.setSelectedParcel(expectedParcel, selectedList);\r\n\r\n\t\t// if (this.state.expectedParcelsIndexInState[rowIndex] === rowIndex) {\r\n\t\t// \tconst matchedParcels = _.filter(this.state.selectedParcels, (parcel) => {\r\n\t\t// \t\treturn parcel.id !== expectedParcel.id;\r\n\t\t// \t});\r\n\r\n\t\t// \tthis.setState({ selectedParcels: matchedParcels }, function() {\r\n\t\t// \t\tthis.props.setSelectedParcel(expectedParcel, this.state.selectedParcels);\r\n\t\t// \t});\r\n\r\n\t\t// \tlet tempArray = this.state.expectedParcelsIndexInState.slice();\r\n\t\t// \ttempArray[rowIndex] = 'random element';\r\n\t\t// \tthis.setState({\r\n\t\t// \t\texpectedParcelsIndexInState: tempArray\r\n\t\t// \t});\r\n\t\t// \tvar count = tempArray.reduce(function(n, val) {\r\n\t\t// \t\treturn n + (val !== 'random element');\r\n\t\t// \t}, 0);\r\n\r\n\t\t// \tif (count === 0) {\r\n\t\t// \t\tthis.setState({\r\n\t\t// \t\t\tmemberId: undefined\r\n\t\t// \t\t});\r\n\r\n\t\t// \t\tthis.props.actionClick(false);\r\n\t\t// \t}\r\n\t\t// } else {\r\n\t\t// \tif (this.state.memberId === expectedParcel.recipient.memberId || this.state.memberId === undefined) {\r\n\t\t// \t\tlet tempArray = this.state.expectedParcelsIndexInState.slice();\r\n\t\t// \t\ttempArray[rowIndex] = rowIndex;\r\n\t\t// \t\tthis.setState({ expectedParcelsIndexInState: tempArray });\r\n\r\n\t\t// \t\tlet selectedParcels = this.state.selectedParcels;\r\n\t\t// \t\tselectedParcels.push(expectedParcel);\r\n\t\t// \t\tthis.setState({\r\n\t\t// \t\t\tmemberId: expectedParcel.recipient.memberId,\r\n\t\t// \t\t\tselectedParcels: selectedParcels\r\n\t\t// \t\t});\r\n\r\n\t\t// \t\tthis.props.actionClick(true);\r\n\t\t// \t\tthis.props.setSelectedParcel(expectedParcel, this.state.selectedParcels);\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { data, portalType, noParcelFoundMsg } = this.props;\r\n\r\n\t\tif (data && data.length > 0) {\r\n\t\t\treturn (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\tSelect items from the list then press ‘Register Parcel’ or press ‘Unexpected Parcel’\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    Tenant Name
    \r\n\t\t\t\t\t\t
    {portalType === PortalTypes.Commercial ? 'Company' : 'Address'}
    \r\n\t\t\t\t\t\t
    Sender
    \r\n\t\t\t\t\t\t
    Expected Arrival
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{data.length > 0 &&\r\n\t\t\t\t\t\t_.map(data, (expectedParcel, rowIndex) => {\r\n\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\tdateFormat(expectedParcel.expecteDate, 'dd/mm/yyyy') ===\r\n\t\t\t\t\t\t\t\tdateFormat(moment().format(), 'dd/mm/yyyy')\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t this.handleParcelSelected(rowIndex, expectedParcel)}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{portalType === PortalTypes.Commercial ? expectedParcel.tenant.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.tenant.lastName !=\r\n\t\t\t\t\t\t\t\t\t\t\tnull ? (expectedParcel.tenant.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.tenant.lastName).length > 24 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t(expectedParcel.tenant.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.tenant.lastName).substring(0, 24) + '...'\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.tenant.firstName + ' ' + expectedParcel.tenant.lastName\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t) : expectedParcel.resident.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.lastName !=\r\n\t\t\t\t\t\t\t\t\t\t\tnull ? (expectedParcel.resident.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.lastName).length > 24 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t(expectedParcel.resident.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.lastName).substring(0, 24) + '...'\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.firstName +\r\n\t\t\t\t\t\t\t\t\t\t\t\t' ' +\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.lastName\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{portalType === PortalTypes.Commercial ? expectedParcel.tenant\r\n\t\t\t\t\t\t\t\t\t\t\t\t.companyName != null ? expectedParcel.tenant.companyName.length > 30 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.tenant.companyName.substring(0, 30) + '...'\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.tenant.companyName\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\thelpers.formatStringList(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine2,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine3,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine4,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine5,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine6,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.postCode\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t23\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{expectedParcel.name != null ? expectedParcel.name.length > 28 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.name.substring(0, 28) + '...'\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.name\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{expectedParcel.expectedDate !== null ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\tmoment(expectedParcel.expectedDate).format('DD/MM/YYYY')\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t
    \r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn (\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{/* No matching results found. Try looking for past and future parcels expected. */}\r\n\t\t\t\t\t\t{noParcelFoundMsg}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nParcelsListComponent.propTypes = {\r\n\t/**The list of Parcels to be displayed */\r\n\tdata: PropTypes.array,\r\n\t/** Function that is called for clicking on the icon */\r\n\tactionClick: PropTypes.func,\r\n\r\n\t/**Sets Portal type */\r\n\tportalType: PropTypes.string,\r\n\r\n\t/**bool for If the Parcel is searched */\r\n\tIsParcelExpectedSearched: PropTypes.bool,\r\n\t/**bool for If the Parcel list is changed */\r\n\tisParcelListChanged: PropTypes.bool,\r\n\r\n\t/** list of selected parcels */\r\n\tselectedParcels: PropTypes.array\r\n};\r\n\r\nexport default ParcelsListComponent;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport autobind from 'react-autobind';\r\nimport InputComponent from '../Input/Input';\r\nimport Button from '../Button/Button';\r\nimport moment from 'moment';\r\nimport AriaModal from 'react-aria-modal';\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nimport { createBrowserHistory } from 'history';\r\nimport * as parcelActions from '../../store/Parcels/actions';\r\nimport * as parcelSelectors from '../../store/Parcels/reducer';\r\n\r\nimport '../../sass/components/ParcelModal/index.css';\r\nimport '../../sass/iescss.css';\r\n\r\nimport * as configHelper from '../../helpers/configHelper';\r\nimport * as helpers from '../../helpers/stringHelper';\r\n/**\r\n * Main Modal event, diferent modal states loaded as type is specified\r\n */\r\n\r\nconst PortalTypes = configHelper.PortalTypes;\r\nconst ParcelScreens = {\r\n\tRegister: 'register',\r\n\tResult: 'result'\r\n};\r\n\r\nconst browserHistory = createBrowserHistory();\r\nclass ParcelModal extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tswitchActive: '',\r\n\t\t\tspecialInstruction_chk: false,\r\n\t\t\tspecialInstructions: '',\r\n\t\t\tmodalActive: true,\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.portalSettings && !_.isUndefined(this.props.portalSettings.portalType)\r\n\t\t\t\t\t? this.props.portalSettings.portalType\r\n\t\t\t\t\t: '',\r\n\t\t\tcurrentIndex: this.props.currentIndex,\r\n\t\t\tselectedParcels: [],\r\n\t\t\tbuttontextNext: 'Next',\r\n\t\t\tbuttontextBack: 'Cancel',\r\n\t\t\tisLocationEmpty: true,\r\n\t\t\tselectedOptions: [],\r\n\t\t\tlocationSelect: false,\r\n\t\t\tisParcelRegistered: false,\r\n\t\t\tbuttonFinish: 'Finish',\r\n\t\t\tscreen: ParcelScreens.Register,\r\n\t\t\tstatusFailure: false\r\n\t\t};\r\n\r\n\t\tthis.registerParcelValidation = null;\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.addValidation();\r\n\t\t/**\r\n * exclude control + J on input response, this is needed as scanner append Ctrl + J at end of value scanned\r\n * https://stackoverflow.com/questions/27960841/usb-barcode-scanner-opens-browsers-downloads-page/27961410\r\n */\r\n\r\n\t\twindow.addEventListener('keydown', function(event) {\r\n\t\t\tif (event.keyCode === 17 || event.keyCode === 74) {\r\n\t\t\t\tif (event.ctrlKey) event.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\r\n\t\tlet tempArrayForOptions = [];\r\n\t\tlet tempArray = [];\r\n\r\n\t\tif (!_.isUndefined(this.props.selectedParcels)) {\r\n\t\t\tfor (var i = 0; i < this.props.selectedParcels.length; i++) {\r\n\t\t\t\tvar tempItem = {};\r\n\t\t\t\ttempItem.name = this.props.selectedParcels[i].name;\r\n\t\t\t\ttempItem.id = this.props.selectedParcels[i].id;\r\n\t\t\t\ttempItem.location = this.props.selectedParcels[i].location;\r\n\t\t\t\ttempItem.barcode = this.props.selectedParcels[i].barcode;\r\n\t\t\t\ttempArray.push(tempItem);\r\n\r\n\t\t\t\tvar tempItemForOptions = { value: undefined };\r\n\r\n\t\t\t\tif (this.props.parcelLocations && this.props.parcelLocations.length === 1) {\r\n\t\t\t\t\tif (i === this.state.currentIndex) {\r\n\t\t\t\t\t\ttempItemForOptions = { value: this.props.parcelLocations[0].id };\r\n\t\t\t\t\t\ttempArray[i].location = this.props.parcelLocations[0].id;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttempArrayForOptions.push(tempItemForOptions);\r\n\t\t\t}\r\n\r\n\t\t\tthis.setState(\r\n\t\t\t\t{\r\n\t\t\t\t\tselectedParcels: [ ...tempArray ],\r\n\t\t\t\t\tselectedOptions: [ ...tempArrayForOptions ]\r\n\t\t\t\t},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tif (this.state.selectedParcels.length === 1) {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tbuttontextNext: 'Register'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\tif (this.state.isParcelRegistered !== prevState.isParcelRegistered) {\r\n\t\t\tif (this.state.isParcelRegistered === true) {\r\n\t\t\t\tlet itemList = _.filter(\r\n\t\t\t\t\t_.map(this.state.selectedParcels, (selectedParcel, rowIndex) => {\r\n\t\t\t\t\t\tif (!_.find(this.props.registeredParcels, { id: selectedParcel.id })) return undefined;\r\n\r\n\t\t\t\t\t\treturn selectedParcel;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(item) => _.isUndefined(item)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (itemList.length > 0) {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tstatusFailure: true,\r\n\t\t\t\t\t\tbuttonFinish: 'I Understand'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t/**send parcel checkin/arrived/registerd notification */\r\n\t\t\t\tthis.sendParcelArrivedNotification(this.props.registeredParcels);\r\n\t\t\t}\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tisParcelRegistered: false\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//pre update parcel location when just one parcel location is available\r\n\t\tif (this.state.currentIndex !== prevState.currentIndex) {\r\n\t\t\tlet currentOption = this.state.selectedOptions;\r\n\r\n\t\t\tvar currentArray = _.map(this.state.selectedParcels, (parcel, i) => {\r\n\t\t\t\tif (this.props.parcelLocations && this.props.parcelLocations.length === 1) {\r\n\t\t\t\t\tif (i === this.state.currentIndex && currentOption && currentOption.length > 0) {\r\n\t\t\t\t\t\tcurrentOption[i].value = this.props.parcelLocations[0].id;\r\n\t\t\t\t\t\tparcel.location = this.props.parcelLocations[0].id;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn parcel;\r\n\t\t\t});\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tselectedOptions: currentOption,\r\n\t\t\t\tselectedParcels: currentArray\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsendParcelArrivedNotification(parcels) {\r\n\t\tthis.props.dispatch(\r\n\t\t\tparcelActions.notifyCheckinParcels(parcels, (success) => {\r\n\t\t\t\tif (success === true) {\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\taddValidation() {\r\n\t\tthis.registerParcelValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleChange(e) {\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tvar tempArray = [];\r\n\t\ttempArray = this.state.selectedParcels.slice();\r\n\t\ttempArray[this.state.currentIndex].location = e.target.value;\r\n\r\n\t\tthis.setState({\r\n\t\t\tselectedParcels: tempArray\r\n\t\t});\r\n\t}\r\n\r\n\thandleLocationChange(e) {\r\n\t\tlet data = _.map(this.state.selectedOptions, (item, index) => {\r\n\t\t\tif (index === this.state.currentIndex) {\r\n\t\t\t\treturn { value: e.target.value };\r\n\t\t\t}\r\n\r\n\t\t\treturn item;\r\n\t\t});\r\n\r\n\t\tthis.setState({ selectedOptions: data });\r\n\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tvar tempArray = [];\r\n\t\ttempArray = this.state.selectedParcels.slice();\r\n\t\ttempArray[this.state.currentIndex].location = e.target.value;\r\n\r\n\t\tthis.setState({\r\n\t\t\tselectedParcels: tempArray\r\n\t\t});\r\n\t}\r\n\r\n\thandleBarcodeChange(e) {\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tvar tempArray = [];\r\n\t\ttempArray = this.state.selectedParcels.slice();\r\n\t\ttempArray[this.state.currentIndex].barcode = e.target.value;\r\n\r\n\t\tthis.setState({\r\n\t\t\tselectedParcels: tempArray\r\n\t\t});\r\n\t}\r\n\r\n\t/**modal screens */\r\n\thandleNextClick() {\r\n\t\tconst { selectedParcels } = this.state;\r\n\r\n\t\tif (this.state.buttontextNext === 'Register') {\r\n\t\t\tlet parcelsData = _.map(selectedParcels, (parcel) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: parcel.id,\r\n\t\t\t\t\tstatus: configHelper.ParcelStatuses.CheckedIn,\r\n\t\t\t\t\tdateArrived: moment().format(),\r\n\t\t\t\t\tlocationId: parcel.location,\r\n\t\t\t\t\tbarcode: parcel.barcode\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.props.dispatch(\r\n\t\t\t\tparcelActions.registerExpected(parcelsData, (success) => {\r\n\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tisParcelRegistered: true,\r\n\t\t\t\t\t\t\tscreen: ParcelScreens.Result\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\t\tmessage: 'Unexected error occured!'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tif (\r\n\t\t\t\t!_.isUndefined(this.state.selectedParcels) &&\r\n\t\t\t\tthis.state.currentIndex < this.state.selectedParcels.length - 1\r\n\t\t\t) {\r\n\t\t\t\tthis.setState(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcurrentIndex: this.state.currentIndex + 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction() {\r\n\t\t\t\t\t\tif (this.state.currentIndex === this.state.selectedParcels.length - 1) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tbuttontextNext: 'Register'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tbuttontextBack: 'Back'\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (_.isUndefined(this.state.selectedOptions[this.state.currentIndex].value)) {\r\n\t\t\t\t\t\t\tfor (let key in this.refs) {\r\n\t\t\t\t\t\t\t\tif (key.indexOf('locationRef') === 0) {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tlocationSelect: false\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tthis.refs[key].reset();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tlocationSelect: true\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandleBackClick() {\r\n\t\tif (!_.isUndefined(this.state.selectedParcels) && this.state.currentIndex >= 0) {\r\n\t\t\tthis.setState(\r\n\t\t\t\t{\r\n\t\t\t\t\tcurrentIndex: this.state.currentIndex - 1\r\n\t\t\t\t},\r\n\t\t\t\tfunction() {\r\n\t\t\t\t\tif (this.state.currentIndex === 0) {\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tbuttontextBack: 'Cancel'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tbuttontextNext: 'Next'\r\n\t\t});\r\n\r\n\t\tthis.setState({\r\n\t\t\tlocationSelect: true\r\n\t\t});\r\n\t}\r\n\r\n\tshowRegiterScreen() {\r\n\t\tconst { parcelLocations, moduleColor, handleCloseClick, expectedParcel } = this.props;\r\n\t\tlet senderName = '';\r\n\t\tlet totalParcels = 1;\r\n\t\tif (!_.isUndefined(this.state.selectedParcels) && this.state.selectedParcels.length > 0) {\r\n\t\t\tsenderName = this.state.selectedParcels[this.state.currentIndex].name;\r\n\t\t\ttotalParcels = this.state.selectedParcels.length;\r\n\t\t}\r\n\r\n\t\tlet location_option = [];\r\n\r\n\t\tconst selectedLocation = parcelLocations.length === 1 ? parcelLocations[0].id : '';\r\n\r\n\t\t_.map(parcelLocations, (location, rowIndex) => {\r\n\t\t\tlet curruntLocation = { name: location.locationName, label: location.locationName, value: location.id };\r\n\t\t\tlocation_option.push(curruntLocation);\r\n\t\t});\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t 30 ? (\r\n\t\t\t\t\t\t\t\t\texpectedParcel.tenant.companyName.substring(0, 30) + '...'\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\texpectedParcel.tenant.companyName\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t) : expectedParcel.resident.addressLine1 != null ? (\r\n\t\t\t\t\t\t\t\t\thelpers\r\n\t\t\t\t\t\t\t\t\t\t.formatStringList(\r\n\t\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine1,\r\n\t\t\t\t\t\t\t\t\t\t\t\texpectedParcel.resident.addressLine2\r\n\t\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t\t50\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tdisabled={true}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t{' '}\r\n\t\t\t\t\tParcel {this.state.currentIndex + 1}/{totalParcels} -{' '}\r\n\t\t\t\t\t{(senderName != null ? senderName : '').substring(0, 17)}\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\tshowResultScreen() {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{_.map(this.state.selectedParcels, (selectedParcels, rowIndex) => {\r\n\t\t\t\t\t\treturn _.find(this.props.registeredParcels, { id: selectedParcels.id }) ? (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\tParcel {rowIndex + 1}/{this.state.selectedParcels.length} -{' '}\r\n\t\t\t\t\t\t\t\t\t{selectedParcels.name !== null ? selectedParcels.name : ''}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\tParcel {rowIndex + 1}/{this.state.selectedParcels.length} -{' '}\r\n\t\t\t\t\t\t\t\t\t{selectedParcels.name !== null ? selectedParcels.name : ''}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\thandleCloseClick,\r\n\t\t\tgetApplicationNode,\r\n\t\t\tfocus,\r\n\t\t\tmoduleColor,\r\n\t\t\t// expectedParcel,\r\n\r\n\t\t\tparcelLocations\r\n\t\t\t// portalSettings\r\n\t\t} = this.props;\r\n\r\n\t\tlet location_option = [];\r\n\r\n\t\tconst selectedLocation = parcelLocations.length === 1 ? parcelLocations[0].id : '';\r\n\t\t_.map(parcelLocations, (location, rowIndex) => {\r\n\t\t\tlet curruntLocation = { name: location.locationName, label: location.locationName, value: location.id };\r\n\t\t\tlocation_option.push(curruntLocation);\r\n\t\t});\r\n\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t handleCloseClick(true)}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tParcel Registration\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t\t{this.state.screen === ParcelScreens.Register && this.showRegiterScreen()}\r\n\r\n\t\t\t\t\t\t\t\t\t\t{this.state.screen === ParcelScreens.Result && this.showResultScreen()}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{this.state.screen === ParcelScreens.Register && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state.currentIndex === 0\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? handleCloseClick(true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: this.handleBackClick()}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t{this.state.screen === ParcelScreens.Result && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{this.state.statusFailure ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tIt was not possible to register{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{this.state.selectedParcels.length -\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.registeredParcels.length}{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{this.state.selectedParcels.length -\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.registeredParcels.length >\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t1 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'parcels.'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'parcel.'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    {' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbrowserHistory.push('/concierge/parcel/register');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tClick here\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tto register it as an Unexpected Parcel.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleCloseClick(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.resetParcelsList &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.resetParcelsList(this.props.registeredParcels);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t// !this.state.isParcelRegistered ?\r\n\t\t\t\t\t\t\t\t\t// \"\"\r\n\t\t\t\t\t\t\t\t\t// :\r\n\t\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t\t\t//
    Parcel Registration
    \r\n\t\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nParcelModal.propTypes = {\r\n\t/**Screen type value to specify current screen loaded */\r\n\ttype: PropTypes.string,\r\n\t/**getting the module color */\r\n\tmoduleColor: PropTypes.string\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tregisteredParcels: parcelSelectors.getRegisteredParcels(state)\r\n\t};\r\n}\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ParcelModal);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport autobind from 'react-autobind';\r\nimport InputComponent from '../../../components/Input/CustomInput';\r\nimport { createBrowserHistory } from 'history';\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport FooterNavigation from '../../../components/FooterNavigation/FooterNavigation';\r\nimport Button from '../../../components/Button/Button';\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\nimport * as parcelActions from '../../../store/Parcels/actions';\r\nimport * as portalSettingsActions from '../../../store/ConciergeSetting/actions';\r\nimport * as portalSettingsSelectors from '../../../store/ConciergeSetting/reducer';\r\nimport * as configHelper from '../../../helpers/configHelper';\r\nimport ParcelsListComponent from '../../../components/Parcel/ParcelsListComponent';\r\nimport * as parcelSelectors from '../../../store/Parcels/reducer';\r\n\r\nimport '../../../sass/components/Parcel/index.css';\r\nimport ParcelModal from '../../../components/ariaModals/ParcelModal';\r\n\r\n/**\r\n * Parcel Expected screen\r\n */\r\n\r\nlet history = createBrowserHistory();\r\nconst PortalTypes = configHelper.PortalTypes;\r\nclass ParcelExpectedScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.setSelectedParcel = this.setSelectedParcel.bind(this);\r\n\t\tthis.state = {\r\n\t\t\ttype: 'parcels',\r\n\t\t\ttoday: moment(),\r\n\t\t\tparcels: [],\r\n\t\t\tparcelList: [],\r\n\t\t\tsearch: '',\r\n\t\t\tbtnText: 'Unexpected Parcel',\r\n\t\t\ttodayFilterSelected: true,\r\n\t\t\tmaxFilterSelected: false,\r\n\t\t\tminFilterSelected: false,\r\n\t\t\tdayFilter: 15,\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.portalSettings && this.props.portalSettings.portalType\r\n\t\t\t\t\t? this.props.portalSettings.portalType\r\n\t\t\t\t\t: '',\r\n\t\t\tshowFilterOptions: false,\r\n\t\t\tmodal: '',\r\n\t\t\tmodalShow: false,\r\n\t\t\tIsAnyParcelSelected: false,\r\n\t\t\tIsParcelSearched: false,\r\n\t\t\tselectedParcels: [],\r\n\t\t\tcurrentIndex: 0,\r\n\t\t\tIsParcelsUpdated: false,\r\n\t\t\tnoParcelFoundMsg: ''\r\n\t\t};\r\n\r\n\t\tthis.addParcelValidation = null;\r\n\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\tcomponentWillMount() {\r\n\t\tthis.props.dispatch(parcelActions.getAllLocations());\r\n\t\tthis.props.dispatch(portalSettingsActions.getGlobalSetting());\r\n\t\tthis.props.dispatch(parcelActions.getParcelSettigs());\r\n\t\tthis.props.dispatch(parcelActions.getParcelsByStatus(configHelper.ParcelStatuses.Expected));\r\n\t}\r\n\r\n\tcomponentWillUpdate(nextProps, nextState) {\r\n\t\tif (this.props.portalSettings !== nextProps.portalSettings && !_.isUndefined(nextProps.portalSettings)) {\r\n\t\t\tif (nextProps.portalSettings.portalType) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tportalType: nextProps.portalSettings.portalType\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.props.parcelSettings !== nextProps.parcelSettings && !_.isUndefined(nextProps.parcelSettings)) {\r\n\t\t\tlet filterOptions = nextProps.parcelSettings.filterSettings;\r\n\t\t\tif (filterOptions) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdayFilter: filterOptions.dayFilter ? filterOptions.dayFilter : this.state.dayFilter\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//load initial parcel list on page load\r\n\t\t// && nextProps.parcels.length > 0 i remove this condition so that when no parcel found after updation it should also updated with blank list\r\n\t\tif (this.props.parcels !== nextProps.parcels) {\r\n\t\t\tlet parcelList = _.filter(\r\n\t\t\t\tnextProps.parcels,\r\n\t\t\t\t(parcel) => moment(parcel.expectedDate).format('YYYY-MM-DD') === this.state.today.format('YYYY-MM-DD')\r\n\t\t\t);\r\n\t\t\tthis.setState({\r\n\t\t\t\tparcels: parcelList\r\n\t\t\t});\r\n\r\n\t\t\tthis.updateSearchList(this.state.search, nextProps.parcels);\r\n\t\t}\r\n\r\n\t\tif (this.state.selectedParcels !== nextState.selectedParcels) {\r\n\t\t\tlet listItemSelected = nextState.selectedParcels && nextState.selectedParcels.length > 0 ? true : false;\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tIsAnyParcelSelected: listItemSelected\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tresetParcelsList(registeredParcelsList) {\r\n\t\tthis.props.dispatch(parcelActions.getParcelsByStatus(configHelper.ParcelStatuses.Expected));\r\n\t}\r\n\r\n\tsetSelectedParcel(expectedParcel, setSelectedParcel) {\r\n\t\tthis.setState({\r\n\t\t\texpectedParcel: expectedParcel,\r\n\t\t\tselectedParcels: setSelectedParcel\r\n\t\t});\r\n\t}\r\n\r\n\tsetParcelsUpdated(status) {\r\n\t\tthis.setState({\r\n\t\t\tIsParcelsUpdated: status\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n * Handle filter option seltion, \r\n * @param {*} min \r\n * @param {*} today \r\n * @param {*} max \r\n */\r\n\thandleFilterOptionsClick(min, today, max) {\r\n\t\tlet min_sel = false,\r\n\t\t\ttoday_sel = false,\r\n\t\t\tmax_sel = false;\r\n\r\n\t\tif (today === true) {\r\n\t\t\tif (!this.state.minFilterSelected && !this.state.maxFilterSelected) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tminFilterSelected: !min,\r\n\t\t\t\t\tmaxFilterSelected: !max,\r\n\t\t\t\t\ttodayFilterSelected: today\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmin_sel = !min;\r\n\t\t\t\tmax_sel = !max;\r\n\t\t\t\ttoday_sel = today;\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttodayFilterSelected: !this.state.todayFilterSelected ? today : !today,\r\n\t\t\t\t\tminFilterSelected: this.state.minFilterSelected,\r\n\t\t\t\t\tmaxFilterSelected: this.state.maxFilterSelected\r\n\t\t\t\t});\r\n\t\t\t\tmin_sel = this.state.minFilterSelected;\r\n\t\t\t\tmax_sel = this.state.maxFilterSelected;\r\n\t\t\t\ttoday_sel = !this.state.todayFilterSelected ? today : !today;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (max === true) {\r\n\t\t\tif (!this.state.todayFilterSelected && !this.state.minFilterSelected) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tmaxFilterSelected: max,\r\n\t\t\t\t\tminFilterSelected: !min,\r\n\t\t\t\t\ttodayFilterSelected: !today\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmax_sel = max;\r\n\t\t\t\tmin_sel = !min;\r\n\t\t\t\ttoday_sel = !today;\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tmaxFilterSelected: !this.state.maxFilterSelected ? max : !max,\r\n\t\t\t\t\tminFilterSelected: this.state.minFilterSelected,\r\n\t\t\t\t\ttodayFilterSelected: this.state.todayFilterSelected\r\n\t\t\t\t});\r\n\t\t\t\tmax_sel = !this.state.maxFilterSelected ? max : !max;\r\n\t\t\t\tmin_sel = this.state.minFilterSelected;\r\n\t\t\t\ttoday_sel = this.state.todayFilterSelected;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (min === true) {\r\n\t\t\tif (!this.state.maxFilterSelected && !this.state.todayFilterSelected) {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tmaxFilterSelected: !max,\r\n\t\t\t\t\tminFilterSelected: min,\r\n\t\t\t\t\ttodayFilterSelected: !today\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmax_sel = !max;\r\n\t\t\t\tmin_sel = min;\r\n\t\t\t\ttoday_sel = !today;\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tmaxFilterSelected: this.state.maxFilterSelected,\r\n\t\t\t\t\tminFilterSelected: !this.state.minFilterSelected ? min : !min,\r\n\t\t\t\t\ttodayFilterSelected: this.state.todayFilterSelected\r\n\t\t\t\t});\r\n\t\t\t\tmax_sel = this.state.maxFilterSelected;\r\n\t\t\t\tmin_sel = !this.state.minFilterSelected ? min : !min;\r\n\t\t\t\ttoday_sel = this.state.todayFilterSelected;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.handleFilterSelected(min_sel, max_sel, today_sel, this.state.parcelList);\r\n\t}\r\n\thandleInputChange(e) {\r\n\t\tconst field = e.target.name;\r\n\t\tconst value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tif (value === '') {\r\n\t\t\tlet defaultParcels = _.filter(\r\n\t\t\t\tthis.props.parcels,\r\n\t\t\t\t(parcel) => moment(parcel.expectedDate).format('YYYY-MM-DD') === this.state.today.format('YYYY-MM-DD')\r\n\t\t\t);\r\n\t\t\tthis.setState({\r\n\t\t\t\tsearch: '',\r\n\t\t\t\tparcels: defaultParcels,\r\n\t\t\t\tshowFilterOptions: false,\r\n\t\t\t\tIsParcelSearched: true\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleFilterSelected(\r\n\t\t\t\tthis.state.minFilterSelected,\r\n\t\t\t\tthis.state.maxFilterSelected,\r\n\t\t\t\tthis.state.todayFilterSelected,\r\n\t\t\t\tthis.props.parcels\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\thandleCloseClick() {\r\n\t\tthis.setState({ modalShow: false });\r\n\t}\r\n\t/**\r\n * \r\n * @param {*} e handle return key search trigger \r\n */\r\n\thandleSearchPress(e) {\r\n\t\tconst { parcels } = this.props;\r\n\t\tconst { search, portalType, today, dayFilter } = this.state;\r\n\r\n\t\tlet type = portalType;\r\n\r\n\t\t// this.setState({\r\n\t\t// IsParcelSearched:true,\r\n\t\t// });\r\n\r\n\t\tif (e.key === 'Enter') {\r\n\t\t\tthis.updateSearchList(search, parcels);\r\n\t\t\t// this.setState(\r\n\t\t\t// \t{\r\n\t\t\t// \t\tminFilterSelected: false,\r\n\t\t\t// \t\tmaxFilterSelected: false,\r\n\t\t\t// \t\ttodayFilterSelected: true\r\n\t\t\t// \t},\r\n\t\t\t// \tfunction() {\r\n\t\t\t// \t\tthis.updateSearchList(search, parcels);\r\n\t\t\t// \t}\r\n\t\t\t// );\r\n\t\t} else if (e.key === 'Clear') {\r\n\t\t\tthis.setState({\r\n\t\t\t\tIsParcelSearched: true\r\n\t\t\t});\r\n\t\t} else if (e.key === 'Reset') {\r\n\t\t\tlet defaultParcels = _.filter(\r\n\t\t\t\tthis.props.parcels,\r\n\t\t\t\t(parcel) => moment(parcel.expectedDate).format('YYYY-MM-DD') === this.state.today.format('YYYY-MM-DD')\r\n\t\t\t);\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tIsParcelSearched: true,\r\n\t\t\t\tsearch: '',\r\n\t\t\t\tparcels: defaultParcels,\r\n\t\t\t\tshowFilterOptions: false\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tupdateSearchList(search, parcels) {\r\n\t\tconst { portalType, today, dayFilter } = this.state;\r\n\r\n\t\tlet type = portalType;\r\n\t\tconst inputValue = search.trim().toLowerCase();\r\n\t\t// const inputLength = inputValue.length;\r\n\t\tconst inputParts = inputValue.split(' ').filter((value) => {\r\n\t\t\treturn value !== '';\r\n\t\t});\r\n\r\n\t\tlet searchData = '';\r\n\r\n\t\tlet match = [];\r\n\t\tif (inputParts.length === 1) {\r\n\t\t\tif (!_.isUndefined(type) && type === configHelper.PortalTypes.Residential) {\r\n\t\t\t\tmatch = _.filter(parcels, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), inputParts[0].toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine2 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine2.toLowerCase(), inputParts[0].toLowerCase()))\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t} else if (!_.isUndefined(type) && type === configHelper.PortalTypes.Commercial) {\r\n\t\t\t\tmatch = _.filter(parcels, (o) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[0].toLowerCase()) ||\r\n\t\t\t\t\t\t(o.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), inputParts[0].toLowerCase()))\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (inputParts.length === 2) {\r\n\t\t\tsearchData = _.trimEnd(_.trimStart(search));\r\n\r\n\t\t\tmatch = _.filter(parcels, (o) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[1].toLowerCase())) ||\r\n\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t(_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[1].toLowerCase()))\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t} else if (inputParts.length > 2) {\r\n\t\t\tsearchData = _.trimEnd(_.trimStart(search));\r\n\r\n\t\t\tmatch = _.filter(parcels, (o) => {\r\n\t\t\t\tif (!_.isUndefined(type) && type === configHelper.PortalTypes.Residential) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(_.startsWith(o.resident.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.resident.lastName.toLowerCase(), inputParts[1].toLowerCase()) &&\r\n\t\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), inputParts[2].toLowerCase()))) ||\r\n\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t(o.resident.addressLine1 &&\r\n\t\t\t\t\t\t\t_.includes(o.resident.addressLine1.toLowerCase(), searchData.toLowerCase()))\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (!_.isUndefined(type) && type === configHelper.PortalTypes.Commercial) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), searchData.toLowerCase())) ||\r\n\t\t\t\t\t\t(_.startsWith(o.tenant.firstName.toLowerCase(), inputParts[0].toLowerCase()) &&\r\n\t\t\t\t\t\t\t_.startsWith(o.tenant.lastName.toLowerCase(), inputParts[1].toLowerCase()) &&\r\n\t\t\t\t\t\t\t(o.tenant &&\r\n\t\t\t\t\t\t\t\to.tenant.companyName &&\r\n\t\t\t\t\t\t\t\t_.startsWith(o.tenant.companyName.toLowerCase(), inputParts[2].toLowerCase())))\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (inputParts.length === 0) {\r\n\t\t\tmatch = _.filter(parcels);\r\n\t\t}\r\n\r\n\t\tvar duration = moment.duration({ days: dayFilter });\r\n\t\tlet maxDate = moment(today).add(duration, 'days');\r\n\t\tlet minDate = moment(today).subtract(duration, 'days');\r\n\r\n\t\t//get parcels list within dayfilter range, this would set the showfilteroptios value, if condition is met\r\n\t\tlet filterList = _.filter(match, (parcel) => {\r\n\t\t\treturn (\r\n\t\t\t\t(moment(parcel.expectedDate).format('L') === minDate.format('L') ||\r\n\t\t\t\t\tmoment(parcel.expectedDate).isAfter(minDate)) &&\r\n\t\t\t\t(moment(parcel.expectedDate).format('L') === maxDate.format('L') ||\r\n\t\t\t\t\tmoment(parcel.expectedDate).isBefore(maxDate))\r\n\t\t\t\t// && moment(parcel.expectedDate).format('L') !== today.format('L')\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tlet filteredList = _.filter(filterList, (parcel) => {\r\n\t\t\treturn moment(parcel.expectedDate).format('L') !== today.format('L');\r\n\t\t});\r\n\r\n\t\tlet expectedToday = _.filter(\r\n\t\t\tmatch,\r\n\t\t\t(o) => moment(o.expectedDate).format('YYYY-MM-DD') === today.format('YYYY-MM-DD')\r\n\t\t);\r\n\r\n\t\tthis.setState({\r\n\t\t\tshowFilterOptions: expectedToday.length === 0 && filterList.length > 0,\r\n\t\t\tparcelList: filterList,\r\n\t\t\tIsParcelSearched: true,\r\n\t\t\texpectedTodayList: expectedToday.length\r\n\t\t});\r\n\r\n\t\t//this was used to allow component state to update,\r\n\t\t//fresh search triggered default settings is set\r\n\r\n\t\tthis.handleFilterSelected(\r\n\t\t\tthis.state.minFilterSelected,\r\n\t\t\tthis.state.maxFilterSelected,\r\n\t\t\tthis.state.todayFilterSelected,\r\n\t\t\tmatch\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n * handle filter options selected, filter parcels data based on expecteddate value\r\n * @param {*} minSelected \r\n * @param {*} maxSelected \r\n */\r\n\thandleFilterSelected(minSelected, maxSelected, todaySelected, parcels) {\r\n\t\tconst { today, dayFilter } = this.state;\r\n\t\tlet parcelList = [];\r\n\t\tlet parcelListAll = [];\r\n\r\n\t\tvar duration = moment.duration({ days: dayFilter });\r\n\t\tlet maxDate = moment(today).add(duration, 'days');\r\n\t\tlet minDate = moment(today).subtract(duration, 'days');\r\n\r\n\t\tparcelListAll = _.filter(parcels, (parcel) => {\r\n\t\t\treturn (\r\n\t\t\t\t(moment(parcel.expectedDate).format('L') === minDate.format('L') ||\r\n\t\t\t\t\tmoment(parcel.expectedDate).isAfter(minDate)) &&\r\n\t\t\t\t(moment(parcel.expectedDate).format('L') === maxDate.format('L') ||\r\n\t\t\t\t\tmoment(parcel.expectedDate).isBefore(maxDate))\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tlet noParcelFoundMsg =\r\n\t\t\tparcelListAll && parcelListAll.length > 0\r\n\t\t\t\t? 'No matching results. Try looking for past and future parcels expected. '\r\n\t\t\t\t: ' No matching results.';\r\n\t\tthis.setState({\r\n\t\t\tnoParcelFoundMsg: noParcelFoundMsg\r\n\t\t});\r\n\t\tif (todaySelected === true && !minSelected && !maxSelected) {\r\n\t\t\tparcelList = _.filter(parcels, (parcel) => {\r\n\t\t\t\treturn moment(parcel.expectedDate).format('L') === today.format('L');\r\n\t\t\t});\r\n\t\t} else if (minSelected === true && todaySelected === true && !maxSelected) {\r\n\t\t\tparcelList = _.filter(parcels, (parcel) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t((moment(parcel.expectedDate).format('L') === minDate.format('L') ||\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).isAfter(minDate)) &&\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).isBefore(moment(today))) ||\r\n\t\t\t\t\tmoment(parcel.expectedDate).format('L') === today.format('L')\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t} else if (minSelected === true && !todaySelected && !maxSelected) {\r\n\t\t\tparcelList = _.filter(\r\n\t\t\t\tparcels,\r\n\t\t\t\t(parcel) =>\r\n\t\t\t\t\t(moment(parcel.expectedDate).format('L') === minDate.format('L') ||\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).isAfter(minDate)) &&\r\n\t\t\t\t\tmoment(parcel.expectedDate).isBefore(moment(today)) &&\r\n\t\t\t\t\tmoment(parcel.expectedDate).format('L') !== today.format('L')\r\n\t\t\t);\r\n\t\t} else if (minSelected === true && maxSelected === true && todaySelected === true) {\r\n\t\t\tparcelList = _.filter(parcels, (parcel) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(moment(parcel.expectedDate).format('L') === minDate.format('L') ||\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).isAfter(minDate)) &&\r\n\t\t\t\t\t(moment(parcel.expectedDate).format('L') === maxDate.format('L') ||\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).isBefore(maxDate))\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t} else if (minSelected === true && maxSelected === true && !todaySelected) {\r\n\t\t\tparcelList = _.filter(\r\n\t\t\t\t_.filter(parcels, (parcel) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(moment(parcel.expectedDate).format('L') === minDate.format('L') ||\r\n\t\t\t\t\t\t\tmoment(parcel.expectedDate).isAfter(minDate)) &&\r\n\t\t\t\t\t\t(moment(parcel.expectedDate).format('L') === maxDate.format('L') ||\r\n\t\t\t\t\t\t\tmoment(parcel.expectedDate).isBefore(maxDate))\r\n\t\t\t\t\t);\r\n\t\t\t\t}),\r\n\t\t\t\t(o) => moment(o.expectedDate).format('L') !== today.format('L')\r\n\t\t\t);\r\n\t\t} else if (!minSelected && todaySelected === true && maxSelected === true) {\r\n\t\t\tparcelList = _.filter(parcels, (parcel) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(moment(parcel.expectedDate).format('L') === today.format('L') ||\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).isAfter(today)) &&\r\n\t\t\t\t\t(moment(parcel.expectedDate).isBefore(maxDate) ||\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).format('L') === maxDate.format('L'))\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t} else if (!minSelected && !todaySelected && maxSelected === true) {\r\n\t\t\tparcelList = _.filter(\r\n\t\t\t\tparcels,\r\n\t\t\t\t(parcel) =>\r\n\t\t\t\t\t(moment(parcel.expectedDate).format('L') === maxDate.format('L') ||\r\n\t\t\t\t\t\tmoment(parcel.expectedDate).isBefore(maxDate)) &&\r\n\t\t\t\t\tmoment(parcel.expectedDate).isAfter(today) &&\r\n\t\t\t\t\tmoment(parcel.expectedDate).format('L') !== today.format('L')\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tparcels: parcelList\r\n\t\t});\r\n\r\n\t\tlet filteredSelectedParcelList = _.filter(\r\n\t\t\t_.map(this.state.selectedParcels, (item) => {\r\n\t\t\t\tlet parcel = _.find(parcelList, { id: item.id });\r\n\t\t\t\tif (!_.isUndefined(parcel)) {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn undefined;\r\n\t\t\t}),\r\n\t\t\t(o) => !_.isUndefined(o)\r\n\t\t);\r\n\r\n\t\tthis.setState({\r\n\t\t\tselectedParcels: filteredSelectedParcelList\r\n\t\t});\r\n\t}\r\n\r\n\tgetApplicationNode = () => {\r\n\t\treturn document.getElementById('parcelRoot');\r\n\t};\r\n\r\n\tsetParcelSearched(status) {\r\n\t\tthis.setState({\r\n\t\t\tIsParcelSearched: status\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { search, showFilterOptions, portalType, modules, noParcelFoundMsg } = this.state;\r\n\t\tconst { parcelLocations } = this.props;\r\n\t\tconst currentModule = _.find(this.props.modules, (o) => o.title === 'Parcels');\r\n\r\n\t\tconst overlayColor = currentModule && currentModule.imageOverlayTextColour;\r\n\r\n\t\tconst { parcels } = this.state;\r\n\r\n\t\tconst dayFilter = this.state.dayFilter > 1 ? this.state.dayFilter + ' days' : this.state.dayFilter + ' day';\r\n\r\n\t\tlet currentParcels = [];\r\n\r\n\t\tif (parcels && parcels.length > 0) {\r\n\t\t\tcurrentParcels = _.orderBy(parcels, [ 'expectedDate' ], [ 'desc' ]);\r\n\r\n\t\t\tif (portalType === PortalTypes.Commercial) {\r\n\t\t\t\tcurrentParcels = _.orderBy(currentParcels, [ 'tenant.firstName', 'tenant.companyName' ], [ 'asc' ]);\r\n\t\t\t} else if (portalType === PortalTypes.Residential) {\r\n\t\t\t\tcurrentParcels = _.orderBy(\r\n\t\t\t\t\tcurrentParcels,\r\n\t\t\t\t\t[ 'resident.firstName', 'resident.addressLine1' ],\r\n\t\t\t\t\t[ 'asc' ]\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{portalType === PortalTypes.Commercial ? (\r\n\t\t\t\t\t\t\t\t'Search for Tenant Name or Company'\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t'Search for Tenant Name or Address'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\thandleKeyPress={(e) => this.handleSearchPress(e)}\r\n\t\t\t\t\t\t\t\tclearable={true}\r\n\t\t\t\t\t\t\t\ticon={'ion-close-round'}\r\n\t\t\t\t\t\t\t\tresetField={(val) => {\r\n\t\t\t\t\t\t\t\t\t// let defaultParcels = _.filter(\r\n\t\t\t\t\t\t\t\t\t// \tthis.props.parcels,\r\n\t\t\t\t\t\t\t\t\t// \t(parcel) =>\r\n\t\t\t\t\t\t\t\t\t// \t\tmoment(parcel.expectedDate).format('YYYY-MM-DD') ===\r\n\t\t\t\t\t\t\t\t\t// \t\tthis.state.today.format('YYYY-MM-DD')\r\n\t\t\t\t\t\t\t\t\t// );\r\n\t\t\t\t\t\t\t\t\tthis.updateSearchList('', this.props.parcels);\r\n\r\n\t\t\t\t\t\t\t\t\tif (val === true)\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\tsearch: '',\r\n\t\t\t\t\t\t\t\t\t\t\t//\tparcels: defaultParcels,\r\n\t\t\t\t\t\t\t\t\t\t\tshowFilterOptions: false,\r\n\t\t\t\t\t\t\t\t\t\t\tIsParcelSearched: true\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (this.state.IsAnyParcelSelected === true) {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({ modalShow: true });\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tthis.setState({ modalShow: false });\r\n\t\t\t\t\t\t\t\t\t\tthis.props.history.push('/concierge/parcel/register');\r\n\t\t\t\t\t\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t{/* {showFilterOptions === true && ( */}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    Filter results:
    \r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.handleFilterOptionsClick(true, false, false);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tLast {dayFilter}{' '}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.handleFilterOptionsClick(false, true, false);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tToday\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tthis.handleFilterOptionsClick(false, false, true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tNext {dayFilter}{' '}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t{/* )} */}\r\n\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (IsParcelSelected === true) {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tbtnText: 'Register Parcel'\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tbtnText: 'Unexpected Parcel'\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tisParcelExpectedSearched={this.state.IsParcelSearched}\r\n\t\t\t\t\t\t\tsetParcelSearched={this.setParcelSearched}\r\n\t\t\t\t\t\t\tisParcelListChanged={this.state.IsParcelsUpdated}\r\n\t\t\t\t\t\t\tsetParcelsUpdated={this.setParcelsUpdated}\r\n\t\t\t\t\t\t\tselectedParcels={this.state.selectedParcels}\r\n\t\t\t\t\t\t\tnoParcelFoundMsg={noParcelFoundMsg}\r\n\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t{this.state.modalShow ? (\r\n\t\t\t\t\t\t\t this.handleCloseClick()}\r\n\t\t\t\t\t\t\t\tfocus={true}\r\n\t\t\t\t\t\t\t\tgetApplicationNode={this.getApplicationNode}\r\n\t\t\t\t\t\t\t\tmoduleColor={overlayColor}\r\n\t\t\t\t\t\t\t\texpectedParcel={this.state.expectedParcel}\r\n\t\t\t\t\t\t\t\tportalSettings={this.props.portalSettings}\r\n\t\t\t\t\t\t\t\tselectedParcels={this.state.selectedParcels}\r\n\t\t\t\t\t\t\t\tcurrentIndex={this.state.currentIndex}\r\n\t\t\t\t\t\t\t\tparcelLocations={parcelLocations}\r\n\t\t\t\t\t\t\t\tresetParcelsList={this.resetParcelsList}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tparcels: parcelSelectors.getParcels(state),\r\n\t\tparcelSettings: parcelSelectors.getParcelSettings(state),\r\n\t\tportalSettings: portalSettingsSelectors.loadGlobalSetting(state),\r\n\t\tparcelLocations: parcelSelectors.getParcelLocations(state)\r\n\t};\r\n}\r\n\r\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ParcelExpectedScreen);\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport autobind from 'react-autobind';\r\nimport InputComponent from '../Input/Input';\r\nimport Button from '../Button/Button';\r\nimport moment from 'moment';\r\nimport AriaModal from 'react-aria-modal';\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nimport { browserHistory } from 'react-router';\r\nimport * as parcelActions from '../../store/Parcels/actions';\r\nimport * as parcelSelectors from '../../store/Parcels/reducer';\r\nimport TextAreaInput from '../../components/Input/TextAreaInput';\r\nimport '../../sass/components/ParcelModal/index.css';\r\nimport '../../sass/iescss.css';\r\n\r\nimport { PortalTypes, ParcelStatuses, ParcelReasons } from '../../helpers/configHelper';\r\n\r\n/**\r\n * Main Modal event, diferent modal states loaded as type is specified\r\n */\r\n\r\nconst ParcelScreens = {\r\n\tRegister: 'register',\r\n\tResult: 'result'\r\n};\r\n\r\nclass ParcelStatusModal extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tmodalActive: true,\r\n\t\t\tportalType:\r\n\t\t\t\tthis.props.portalSettings && !_.isUndefined(this.props.portalSettings.portalType)\r\n\t\t\t\t\t? this.props.portalSettings.portalType\r\n\t\t\t\t\t: '',\r\n\t\t\tcurrentIndex: this.props.currentIndex,\r\n\t\t\tselectedParcels: [],\r\n\t\t\tbuttontextNext: 'Next',\r\n\t\t\tbuttontextBack: 'Cancel',\r\n\t\t\tisLocationEmpty: true,\r\n\t\t\tselectedOptions: [],\r\n\t\t\tlocationSelect: false,\r\n\t\t\tisParcelRegistered: false,\r\n\t\t\tbuttonFinish: 'Finish',\r\n\t\t\tscreen: ParcelScreens.Register,\r\n\t\t\tstatusFailure: false,\r\n\r\n\t\t\tstatusId: '',\r\n\t\t\treasonId: '',\r\n\t\t\tadditionalInfo: '',\r\n\t\t\tisAdditionalInformationFieldVisible: false,\r\n\t\t\tisReasonFieldVisible: false,\r\n\t\t\tisValid: false,\r\n\t\t\tsuccess: undefined,\r\n\t\t\tmessage: ''\r\n\t\t};\r\n\r\n\t\tthis.registerParcelValidation = null;\r\n\t\tautobind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.addValidation();\r\n\t\t/**\r\n * exclude control + J on input response, this is needed as scanner append Ctrl + J at end of value scanned\r\n * https://stackoverflow.com/questions/27960841/usb-barcode-scanner-opens-browsers-downloads-page/27961410\r\n */\r\n\r\n\t\twindow.addEventListener('keydown', function(event) {\r\n\t\t\tif (event.keyCode === 17 || event.keyCode === 74) {\r\n\t\t\t\tif (event.ctrlKey) event.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.props.dispatch(parcelActions.getStatusCodes());\r\n\t\tthis.props.dispatch(parcelActions.getReturnReasonCodes());\r\n\t}\r\n\t\r\n\r\n\taddValidation() {\r\n\t\tthis.registerParcelValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\thandleStatusChange(e) {\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tif (e.target.label === 'Collected') {\r\n\t\t\tthis.setState({\r\n\t\t\t\tisValid: true,\r\n\t\t\t\tisReasonFieldVisible: false,\r\n\t\t\t\tisAdditionalInformationFieldVisible: false,\r\n\t\t\t\treasonId: ''\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\tisValid: false,\r\n\t\t\t\tisReasonFieldVisible: true\r\n\t\t\t});\r\n\r\n\t\t\tlet reasonObj = _.find(this.props.parcelReturnReason, { id: this.state.reasonId });\r\n\r\n\t\t\tif (reasonObj && reasonObj.reason === 'Other') {\r\n\t\t\t\tif (this.state.additionalInfo === '') {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tisValid: false\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tisValid: true\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.state.reasonId === '') {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tisValid: false\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\tisValid: true\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandleReasonChange(e) {\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tif (e.target.label === 'Other') {\r\n\t\t\tthis.setState({\r\n\t\t\t\tisAdditionalInformationFieldVisible: true\r\n\t\t\t});\r\n\r\n\t\t\tif (this.state.additionalInfo === '') {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tisValid: false\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tisValid: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\tisAdditionalInformationFieldVisible: false,\r\n\t\t\t\tisValid: true\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thandleInputChange(e) {\r\n\t\tconst field = e.target.name;\r\n\t\tconst value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value\r\n\t\t});\r\n\r\n\t\tif (e.target.value === '') {\r\n\t\t\tthis.setState({\r\n\t\t\t\tisValid: false\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({\r\n\t\t\t\tisValid: true\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thandleSubmit() {\r\n\t\tconst { data, parcelStatus, parcelReturnReason } = this.props;\r\n\t\tconst { statusId, reasonId, additionalInfo } = this.state;\r\n\r\n\t\tlet statusObj = _.find(parcelStatus, { id: statusId });\r\n\t\tlet reasonObj = _.find(parcelReturnReason, { id: reasonId });\r\n\r\n\t\tif (!_.isUndefined(statusObj)) {\r\n\t\t\tlet updateData = {\r\n\t\t\t\tid: data.id,\r\n\t\t\t\tbarcode: data.barcode,\r\n\t\t\t\tmemberId: data.memberId,\r\n\t\t\t\tlocationId: data.locationId,\r\n\t\t\t\tstatus: {status : statusObj.status}\r\n\t\t\t};\r\n\r\n\t\t\tif (statusObj.status === ParcelStatuses.Collected) {\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tparcelActions.checkoutParcel(data, (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tsuccess: success,\r\n\t\t\t\t\t\t\t\tmessage: '',\r\n\t\t\t\t\t\t\t\tisValid: false\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\t\t\t\tparcelActions.notifyParcels([ updateData ], (complete) => {\r\n\t\t\t\t\t\t\t\t\tif (complete === true) {\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tthis.props.handleCloseClick(true);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\t\t\terrorMessage: 'Your changes could not be saved. Please try again.'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tlet updateData_ = {\r\n\t\t\t\t\t...updateData,\r\n\t\t\t\t\tstatusReasonId: reasonObj ? reasonObj.id : '',\r\n\t\t\t\t\tcomment: additionalInfo,\r\n\t\t\t\t\tstatus : statusObj.status\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\terror: undefined,\r\n\t\t\t\t\terrorMessage: ''\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tparcelActions.updateParcel(updateData_, (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tsuccess: success,\r\n\t\t\t\t\t\t\t\tmessage: '',\r\n\t\t\t\t\t\t\t\tisValid: false\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\t\t\t\tparcelActions.notifyParcels([ updateData ], updateData.status, (complete) => {\r\n\t\t\t\t\t\t\t\t\tif (complete === true) {\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tthis.props.handleCloseClick(true);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\t\t\terrorMessage: 'Your changes could not be saved. Please try again.'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tsuccess: undefined,\r\n\t\t\t\tmessage: ''\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\trender() {\r\n\t\tconst {\r\n\t\t\thandleCloseClick,\r\n\t\t\tgetApplicationNode,\r\n\t\t\tfocus,\r\n\t\t\tmoduleColor,\r\n\t\t\tparcelStatus,\r\n\t\t\tparcelReturnReason\r\n\t\t} = this.props;\r\n\r\n\t\tlet status_options = [];\r\n\r\n\t\t_.map(parcelStatus, (status, rowIndex) => {\r\n\t\t\tlet curruntStatus = {\r\n\t\t\t\tname: status.status,\r\n\t\t\t\tlabel: status.status.charAt(0).toUpperCase() + status.status.slice(1),\r\n\t\t\t\tvalue: status.id\r\n\t\t\t};\r\n\t\t\tif (\r\n\t\t\t\tstatus.status === ParcelStatuses.Collected ||\r\n\t\t\t\tstatus.status === ParcelStatuses.Discarded ||\r\n\t\t\t\tstatus.status === ParcelStatuses.Returned\r\n\t\t\t) {\r\n\t\t\t\tstatus_options.push(curruntStatus);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet reasons_options = [];\r\n\r\n\t\t_.map(parcelReturnReason, (reason, rowIndex) => {\r\n\t\t\tlet curruntReason = {\r\n\t\t\t\tname: reason.reason,\r\n\t\t\t\tlabel: reason.reason.charAt(0).toUpperCase() + reason.reason.slice(1),\r\n\t\t\t\tvalue: reason.id\r\n\t\t\t};\r\n\t\t\tif (\r\n\t\t\t\treason.reason === ParcelReasons.Damaged ||\r\n\t\t\t\treason.reason === ParcelReasons.ForwardedToNewAddress ||\r\n\t\t\t\treason.reason === ParcelReasons.RecipientMovedOut ||\r\n\t\t\t\treason.reason === ParcelReasons.Uncollected ||\r\n\t\t\t\treason.reason === ParcelReasons.Other\r\n\t\t\t) {\r\n\t\t\t\treasons_options.push(curruntReason);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\tParcel Status\r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t this.handleStatusChange(e)}\r\n\t\t\t\t\t\t\t\t\t\t// value={\r\n\t\t\t\t\t\t\t\t\t\t// \tselectedStatus === '' ? !_.isUndefined(\r\n\t\t\t\t\t\t\t\t\t\t// \t\tthis.state.selectedOptions[this.state.currentIndex].value\r\n\t\t\t\t\t\t\t\t\t\t// \t) ? (\r\n\t\t\t\t\t\t\t\t\t\t// \t\tthis.state.selectedOptions[this.state.currentIndex].value.toString()\r\n\t\t\t\t\t\t\t\t\t\t// \t) : (\r\n\t\t\t\t\t\t\t\t\t\t// \t\tundefined\r\n\t\t\t\t\t\t\t\t\t\t// \t) : (\r\n\t\t\t\t\t\t\t\t\t\t// \t\tselectedLocation\r\n\t\t\t\t\t\t\t\t\t\t// \t)\r\n\t\t\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\t{this.state.isReasonFieldVisible ? (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t{this.state.isAdditionalInformationFieldVisible ? (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{this.state.error && (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{this.state.errorMessage}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t{this.state.success && (\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t{this.state.message}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nParcelStatusModal.propTypes = {\r\n\t/**Screen type value to specify current screen loaded */\r\n\ttype: PropTypes.string,\r\n\t/**getting the module color */\r\n\tmoduleColor: PropTypes.string,\r\n\t/** Portal type value specifies current portal type*/\r\n\tportalType: PropTypes.string\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n\treturn {\r\n\t\tregisteredParcels: parcelSelectors.getRegisteredParcels(state),\r\n\t\tparcelStatus: parcelSelectors.getStatusCodes(state),\r\n\t\tparcelReturnReason: parcelSelectors.getReturnResonCodes(state),\r\n\t\tparcel: parcelSelectors.getParcel(state)\r\n\t};\r\n}\r\nexport default connect(mapStateToProps)(ParcelStatusModal);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport _ from 'lodash';\r\nimport * as $ from 'jquery';\r\nimport FeatureArea from '../../../components/FeatureArea/FeatureArea';\r\nimport FooterNavigation from '../../../components/FooterNavigation/FooterNavigation';\r\nimport InputComponent from '../../../components/Input/InputNew';\r\nimport TextAreaInput from '../../../components/Input/TextAreaInput';\r\nimport Button from '../../../components/Button/Button';\r\nimport {withRouter} from 'react-router-dom';\r\nimport autoBind from 'react-autobind';\r\nimport * as configHelper from '../../../helpers/configHelper';\r\nimport * as moduleSelectors from '../../../store/ServiceModules/reducer';\r\nimport * as parcelActions from '../../../store/Parcels/actions';\r\nimport { portalTypes, parcelStatuses } from '../../../services/config';\r\nimport * as parcelSelectors from '../../../store/Parcels/reducer';\r\nimport ButtonGroup from '../../../components/Button/ButtonGroup';\r\n\r\nimport * as portalSettingsActions from '../../../store/ConciergeSetting/actions';\r\nimport moment from 'moment';\r\nimport ParcelStatusModal from '../../../components/ariaModals/ParcelStatusModal';\r\nimport * as residentActions from '../../../store/Residents/actions';\r\nimport * as residentSelectors from '../../../store/Residents/reducer';\r\nimport * as tenantActions from '../../../store/Tenants/actions';\r\nimport * as tenantSelectors from '../../../store/Tenants/reducer';\r\nimport * as settingSelector from '../../../store/ConciergeSetting/reducer';\r\nimport MemberAutoSuggest from '../../../components/TenantAutoSuggest/MemberAutoSuggest';\r\nimport ParcelCancelModal from '../../../components/ariaModals/ParcelCancelModal';\r\n\r\n/**\r\n * Parcel registration screen\r\n */\r\n\r\nconst PortalTypes = configHelper.PortalTypes;\r\nconst ParcelStatuses = configHelper.ParcelStatuses;\r\nconst ParcelReasons = configHelper.ParcelReasons;\r\nclass ParcelInfoScreen extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\ttype: 'parcels',\r\n\t\t\tparcel: undefined,\r\n\t\t\tbarcode: '',\r\n\t\t\tmemberId: undefined,\r\n\t\t\tparcelEmail: '',\r\n\t\t\tphone: '',\r\n\t\t\tIsEditable: true,\r\n\t\t\tlocationId: undefined,\r\n\t\t\tportalType: '',\r\n\t\t\tmodalShow: false,\r\n\t\t\taddParcelFormUsed: false,\r\n\t\t\tmodalCancelShow: false,\r\n\t\t\tstatus: ''\r\n\t\t};\r\n\r\n\t\tthis.addParcelValidation = null;\r\n\t\t// this.addDatepickerValidation = null;\r\n\t\tautoBind(this);\r\n\t}\r\n\r\n\t// componentDidMount() {\r\n\t\t\r\n\t// }\r\n\tcomponentDidMount() {\r\n\t\tthis.addValidation();\r\n\t\tlet parcel = this.props.history.location && this.props.history.location.state && this.props.history.location.state.parcel;\r\n\r\n\t\tif (parcel) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tparcel: parcel,\r\n\t\t\t\tbarcode: parcel.barcode,\r\n\t\t\t\tlocationId: parcel.locationId,\r\n\t\t\t\tmemberId: parcel.memberId,\r\n\t\t\t\tparcelEmail: parcel.resident ? parcel.resident.email : '',\r\n\t\t\t\tphone: parcel.resident && parcel.resident.mobileNumber ? parcel.resident.mobileNumber : '',\r\n\t\t\t\tstatus: parcel.status.status,\r\n\t\t\t\tstatusReasonId: parcel.statusReasonId\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.props.dispatch(parcelActions.getAllLocations());\r\n\t\tthis.props.dispatch(portalSettingsActions.getGlobalSetting());\r\n\t\tthis.props.dispatch(residentActions.getAllResidents());\r\n\t\tthis.props.dispatch(tenantActions.getAllTenants());\r\n\t\tthis.props.dispatch(parcelActions.getReturnReasonCodes());\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState) {\r\n\t\t// if (this.state.parcel !== nextState.parcel && !_.isUndefined(nextState.parcel)) {\r\n\t\t// \tlet parcel = nextState.parcel;\r\n\t\t// \tthis.setState({\r\n\t\t// \t\tparcelEmail: parcel && parcel.resident ? parcel.resident.email : '',\r\n\t\t// \t\tphone:\r\n\t\t// \t\t\tparcel && parcel.resident && parcel.resident.mobileNumber\r\n\t\t// \t\t\t\t? parcel.resident.mobileNumber\r\n\t\t// \t\t\t\t: ''\r\n\t\t// \t});\r\n\t\t// }\r\n\t}\r\n\tcomponentWillUpdate(nextProps, nextState) {\r\n\t\tif (this.props.portalSettings !== nextProps.portalSettings) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tportalType: nextProps.portalSettings ? nextProps.portalSettings.portalType : ''\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.props.parcel !== nextProps.parcel && !_.isUndefined(nextProps.parcel)) {\r\n\t\t\tlet updateRecord = {\r\n\t\t\t\tparcel: nextProps.parcel,\r\n\t\t\t\tmemberId: nextProps.parcel.memberId,\r\n\t\t\t\tlocationId: nextProps.parcel.location.id,\r\n\t\t\t\tbarcode: nextProps.parcel.barcode,\r\n\t\t\t\tstatus: nextProps.parcel.status.status,\r\n\t\t\t\tstatusReasonId: nextProps.parcel.statusReasonId\r\n\t\t\t};\r\n\r\n\t\t\tif (\r\n\t\t\t\tnextProps.parcel.status.status === ParcelStatuses.CheckedIn &&\r\n\t\t\t\tNumber(this.state.parcel.memberId) !== Number(nextProps.parcel.memberId)\r\n\t\t\t) {\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tparcelActions.notifyCheckinParcels([ nextProps.parcel ], (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\t\t\terrorMessage: 'Unable to send email notification!'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tthis.setState({ ...updateRecord });\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tsuccess: undefined,\r\n\t\t\t\t\tmessage: ''\r\n\t\t\t\t});\r\n\t\t\t}, 5000);\r\n\t\t\tthis.props.history.push({\r\n\t\t\t\tpathname: '/concierge/parcel/info',\r\n\t\t\t\tstate: { parcel: nextProps.parcel }\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\t//this.addParcelValidation.destroy();\r\n\t}\r\n\taddValidation() {\r\n\t\tthis.addParcelValidation = $(this.refs.validate).parsley({\r\n\t\t\tclassHandler: function(el) {\r\n\t\t\t\treturn el.$element.closest('div:not(.input-wrapper):not(.Select)');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tvalidate(fromSubmit = false) {\r\n\t\tthis.addParcelValidation.validate({ force: true });\r\n\r\n\t\tlet validationError = !_.isUndefined(this.state.memberId) ? false : true;\r\n\t\tconst valid = this.addParcelValidation.isValid();\r\n\r\n\t\tthis.setState({\r\n\t\t\taddParcelFormValid: valid,\r\n\t\t\taddParcelFormUsed: true,\r\n\t\t\terror: !validationError ? undefined : true,\r\n\t\t\tmemberValidationStatus: _.isUndefined(this.state.memberId) ? 'invalid' : '',\r\n\t\t\tmemberValidationMessage: _.isUndefined(this.state.memberId) ? 'Please select a valid Recipient name' : '',\r\n\t\t\tlocationValidationStatus: _.isUndefined(this.state.locationId) ? 'invalid' : '',\r\n\t\t\tlocatinValidationMessage: _.isUndefined(this.state.locationId) ? 'Please select a location' : ''\r\n\t\t});\r\n\r\n\t\tif (valid === true && fromSubmit === true && validationError === false) {\r\n\t\t\tconst { parcel, barcode, memberId, locationId, IsEditable } = this.state;\r\n\r\n\t\t\tif (!IsEditable) {\r\n\t\t\t\tlet updateData = {\r\n\t\t\t\t\tid: parcel.id,\r\n\t\t\t\t\tbarcode: barcode,\r\n\t\t\t\t\tmemberId: memberId,\r\n\t\t\t\t\tlocationId: locationId,\r\n\t\t\t\t\tcomment: null,\r\n\t\t\t\t\tstatus: parcel.status.status\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.props.dispatch(\r\n\t\t\t\t\tparcelActions.updateParcel(updateData, (success) => {\r\n\t\t\t\t\t\tif (success === true) {\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\tIsEditable: true,\r\n\t\t\t\t\t\t\t\terror: undefined,\r\n\t\t\t\t\t\t\t\tsuccess: success,\r\n\t\t\t\t\t\t\t\tmessage: 'Your changes have been successfully saved'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tupdateData = {\r\n\t\t\t\t\t\t\t\tid: this.state.parcel.id,\r\n\t\t\t\t\t\t\t\tbarcode: this.state.parcel.barcode,\r\n\t\t\t\t\t\t\t\tmemberId: this.state.parcel.memberId,\r\n\t\t\t\t\t\t\t\tlocationId: this.state.parcel.locationId,\r\n\t\t\t\t\t\t\t\tcomment: null,\r\n\t\t\t\t\t\t\t\tstatus: this.state.parcel.status.status\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t...updateData,\r\n\t\t\t\t\t\t\t\tIsEditable: true,\r\n\t\t\t\t\t\t\t\terror: true,\r\n\t\t\t\t\t\t\t\terrorMessage: 'Your changes could not be saved. Please try again.'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tformReset() {\r\n\t\tthis.refs['tenant-auto-suggest'].getWrappedInstance().reset();\r\n\t\t//this.refs[\"formSelect-resources\"].setVal(\"\");\r\n\t\t//this.refs[\"formSelect-resources\"].getWrappedInstance().reset();\r\n\r\n\t\t$(this.refs.validate).get(0).reset();\r\n\r\n\t\tthis.addParcelValidation.destroy();\r\n\r\n\t\t// Reset all the select input components to the placeholder value\r\n\t\tfor (let key in this.refs) {\r\n\t\t\tif (key.indexOf('formSelect') === 0) {\r\n\t\t\t\tthis.refs[key].reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.addValidation();\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tresetDefaults() {\r\n\t\tthis.setState({\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\tmemberValidationMessage: '',\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\terror: undefined,\r\n\t\t\tsuccess: undefined,\r\n\t\t\tmessage: '',\r\n\t\t\tmemberId: this.state.parcel.memberId,\r\n\t\t\tlocationId: this.state.parcel.locationId,\r\n\t\t\terrorMessage: ''\r\n\t\t});\r\n\t}\r\n\r\n\tresetEditableDefaults() {\r\n\t\tthis.setState({\r\n\t\t\tlocationId: this.state.parcel.locationId,\r\n\t\t\tmemberId: this.state.parcel.memberId,\r\n\t\t\tbarcode: this.state.parcel.barcode\r\n\t\t});\r\n\t}\r\n\r\n\tresetValidation() {\r\n\t\tthis.setState({\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\tmemberValidationMessage: '',\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\terror: undefined,\r\n\t\t\tsuccess: undefined,\r\n\t\t\tmessage: '',\r\n\t\t\terrorMessage: ''\r\n\t\t});\r\n\t}\r\n\tgetstatus(status) {\r\n\t\t// if(!_.isUndefined(status)){\r\n\t\tswitch (status.toLowerCase()) {\r\n\t\t\tcase ParcelStatuses.CheckedIn:\r\n\t\t\t\treturn 'In Storage';\r\n\r\n\t\t\tcase ParcelStatuses.Due:\r\n\t\t\t\treturn 'Due to be Returned';\r\n\r\n\t\t\tcase ParcelStatuses.Collected:\r\n\t\t\t\treturn 'Collected';\r\n\r\n\t\t\tcase ParcelStatuses.Returned:\r\n\t\t\t\treturn 'Returned';\r\n\r\n\t\t\tcase ParcelStatuses.Discarded:\r\n\t\t\t\treturn 'Discarded';\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\t// }\r\n\t}\r\n\r\n\thandleInputChange(e) {\r\n\t\tlet field = e.target.name;\r\n\t\tlet value = e.target.value;\r\n\t\tthis.setState({\r\n\t\t\t[field]: value,\r\n\t\t\tsuccess: undefined,\r\n\t\t\tmessage: '',\r\n\t\t\terrorMessage: '',\r\n\t\t\terror: undefined\r\n\t\t});\r\n\t}\r\n\r\n\thandleCloseClick() {\r\n\t\tthis.setState({\r\n\t\t\tmodalShow: false,\r\n\t\t\tmodalCancelShow: false\r\n\t\t});\r\n\t}\r\n\r\n\thandleContinueClick() {\r\n\t\tthis.setState({\r\n\t\t\tmodalCancelShow: false,\r\n\t\t\tIsEditable: true\r\n\t\t});\r\n\t\tthis.resetEditableDefaults();\r\n\t\t//this.validate(true);\r\n\t}\r\n\r\n\thandleStayOnPageClick() {\r\n\t\tthis.setState({\r\n\t\t\tmodalCancelShow: false\r\n\t\t});\r\n\t}\r\n\r\n\thandleCancel(e) {\r\n\t\tif (this.state.IsEditable) {\r\n\t\t\tthis.setState({ modalShow: false });\r\n\t\t\tthis.props.history.push('/concierge/parcel/management');\r\n\t\t\twindow.scrollTo(0, 0);\r\n\t\t} else {\r\n\t\t\tthis.resetDefaults();\r\n\t\t\tthis.setState({ IsEditable: true });\r\n\t\t}\r\n\t}\r\n\r\n\thandleTenantSelected(tenant) {\r\n\t\tthis.setState({\r\n\t\t\tmemberId: tenant.memberId && tenant.memberId !== '' ? tenant.memberId : undefined,\r\n\t\t\tmemberValidationStatus: '',\r\n\t\t\tmemberValidationMessage: ''\r\n\t\t});\r\n\t}\r\n\r\n\thandleAmend() {\r\n\t\tconst { parcel, barcode, memberId, locationId, IsEditable } = this.state;\r\n\t\tthis.setState({ IsEditable: false });\r\n\t\tif (!IsEditable) {\r\n\t\t\tthis.validate(true);\r\n\t\t\t// setTimeout(() => {\r\n\t\t\t// \tthis.state.addParcelFormUsed && this.validate(true);\r\n\t\t\t// }, 0);\r\n\t\t}\r\n\t}\r\n\trender() {\r\n\t\tconst { parcelLocations, residents, tenants, parcelReturnReason } = this.props;\r\n\t\tconst { parcel, barcode, parcelEmail, phone, portalType, memberId, status, statusReasonId } = this.state;\r\n\r\n\t\tlet { locationSelect } = this.state;\r\n\t\tconst currentModule = _.find(this.props.modules, (o) => o.title === 'Parcels');\r\n\r\n\t\tlet residentsList = _.orderBy(residents, [ 'firstName', 'addressLine1' ], [ 'asc' ]);\r\n\t\tlet tenantsList = _.orderBy(tenants, [ 'firstName', 'companyName' ], [ 'asc' ]);\r\n\r\n\t\tlet location_option = _.map(parcelLocations, (location, rowIndex) => {\r\n\t\t\treturn { name: location.locationName, label: location.locationName, value: location.id };\r\n\t\t});\r\n\r\n\t\tconst selectedLocationById = _.find(location_option, { value: this.state.locationId });\r\n\t\tconst selectedLocation =\r\n\t\t\tselectedLocationById == undefined\r\n\t\t\t\t? location_option.length === 1 ? location_option[0] : ''\r\n\t\t\t\t: selectedLocationById;\r\n\t\tlocationSelect = locationSelect == undefined ? selectedLocation.value : '';\r\n\r\n\t\tlet defaultTenantIdProperty = {};\r\n\r\n\t\tif (memberId && memberId !== null) {\r\n\t\t\tdefaultTenantIdProperty = {\r\n\t\t\t\tdefaultTenantId: memberId\r\n\t\t\t};\r\n\t\t}\r\n\t\tlet statusReason = '';\r\n\t\tif (parcelReturnReason && parcelReturnReason.length > 0 && statusReasonId !== 0) {\r\n\t\t\tlet status = _.find(parcelReturnReason, { id: statusReasonId });\r\n\t\t\tstatusReason = !_.isUndefined(status) ? status.reason : '';\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tdata-parsley-errors-container=\"#validation-messages\"\r\n\t\t\t\t\t\tdata-parsley-focus=\"none\"\r\n\t\t\t\t\t\tdata-parsley-validate-if-empty\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{(status && status.toLowerCase() === ParcelStatuses.CheckedIn) ||\r\n\t\t\t\t\t\t\t\t\t(status && status.toLowerCase() === ParcelStatuses.Due) ? (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.state.IsEditable ? this.setState({ modalShow: true }) : ''}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tChange Status\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{this.state.IsEditable ? (\r\n\t\t\t\t\t\t\t\t\t\t 57 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbarcode.substring(0, 57) + '...'\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbarcode\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tname=\"barcode\"\r\n\t\t\t\t\t\t\t\t\t\t\thandleChange={(e) => this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={true}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t this.handleInputChange(e)}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={false}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{this.state.IsEditable ? (\r\n\t\t\t\t\t\t\t\t\t\t 23 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedLocationById.label.substring(0, 23) + '...'\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedLocationById.label\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={true}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.handleInputChange(e);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={this.state.IsEditable}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t\t// \t this.handleBarcodeChange(e)}\r\n\t\t\t\t\t\t\t\t// \t/>\r\n\t\t\t\t\t\t\t\t//
    \r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{portalType && (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.handleTenantSelected(data);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tdefaultText={() => {}}\r\n\t\t\t\t\t\t\t\t\t\tdisabled={this.state.IsEditable}\r\n\t\t\t\t\t\t\t\t\t\tshowRecordsField={true}\r\n\t\t\t\t\t\t\t\t\t\tportalType={this.state.portalType}\r\n\t\t\t\t\t\t\t\t\t\tdata={portalType === PortalTypes.Commercial ? tenantsList : residentsList}\r\n\t\t\t\t\t\t\t\t\t\tfieldCleared={(val) => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\t\t\tmemberId: undefined\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\tthis.resetValidation();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tvalidation={{\r\n\t\t\t\t\t\t\t\t\t\t\tvalidate: true,\r\n\t\t\t\t\t\t\t\t\t\t\tclassName: this.state.memberValidationStatus\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t{(status && status.toLowerCase() === ParcelStatuses.Returned) ||\r\n\t\t\t\t\t\t\tstatus.toLowerCase() === ParcelStatuses.Discarded ? (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t{statusReason === ParcelReasons.Other && (\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{this.state.error && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{this.state.memberValidationMessage}\r\n\t\t\t\t\t\t\t\t\t\t{this.state.errorMessage}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{this.state.success && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t{this.state.message}\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{status === 'collected' || status === 'returned' || status === 'discarded' ? (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t this.handleCancel(e)}\r\n\t\t\t\t\t\t\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t this.handleCancel(e)\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbarcode !== parcel.barcode ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocationSelect !== parcel.locationId ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmemberId !== parcel.memberId\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({ modalCancelShow: true });\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({ IsEditable: true });\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\trightClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.handleAmend();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{this.state.modalCancelShow ? (\r\n\t\t\t\t\t\t this.handleCloseClick()}\r\n\t\t\t\t\t\t\thandleContinueClick={() => this.handleContinueClick()}\r\n\t\t\t\t\t\t\thandleStayOnPageClick={() => this.handleStayOnPageClick()}\r\n\t\t\t\t\t\t\tfocus={true}\r\n\t\t\t\t\t\t\t//\tgetApplicationNode={this.getApplicationNode}\r\n\t\t\t\t\t\t\tmoduleColor={currentModule && currentModule.imageOverlayTextColour}\r\n\t\t\t\t\t\t\tconfirmationMessage={\r\n\t\t\t\t\t\t\t\t'Please notice that by leaving this page all changes to this parcel records will be discard. Do you wish to continue?'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{this.state.modalShow ? (\r\n\t\t\t\t\t\t this.handleCloseClick()}\r\n\t\t\t\t\t\t\tfocus={true}\r\n\t\t\t\t\t\t\tdata={parcel}\r\n\t\t\t\t\t\t\tmoduleColor={currentModule && currentModule.imageOverlayTextColour}\r\n\t\t\t\t\t\t\tportalType={portalType}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n\treturn {\r\n\t\tmodules: moduleSelectors.loadModules(state),\r\n\t\tparcelLocations: parcelSelectors.getParcelLocations(state),\r\n\t\tresidents: residentSelectors.getResidents(state),\r\n\t\ttenants: tenantSelectors.getAllTenants(state),\r\n\t\tportalSettings: settingSelector.loadGlobalSetting(state),\r\n\t\tparcel: parcelSelectors.getParcel(state),\r\n\t\tparcelReturnReason: parcelSelectors.getReturnResonCodes(state)\r\n\t};\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, null, null, { forwardRef: true })(ParcelInfoScreen));\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport HeaderNavigation from \"../../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../../components/FooterNavigation/FooterNavigation\";\r\nimport Button from \"../../components/Button/Button\";\r\nimport { createBrowserHistory } from 'history';\r\nimport * as authActions from \"../../store/auth/actions\";\r\nimport \"../../sass/containers/ErrorScreen/index.css\";\r\n\r\n\r\nconst browserHistory = createBrowserHistory();\r\nconst location = browserHistory.location;\r\nclass ErrorScreen401 extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n }\r\n\r\n componentDidMount() {\r\n \r\n setTimeout(() => {\r\n \r\n this.props.dispatch(authActions.logout());\r\n window.location.reload();\r\n \r\n }, 100);\r\n\r\n \r\n }\r\nhandleClick(e){\r\n browserHistory.push({\"pathname\" : \"/\"});\r\n\r\n setTimeout(() =>{\r\n window.location.reload();\r\n }, 1000);\r\n \r\n\r\n}\r\n render() {\r\n\r\n return (\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n

    #401

    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n

    UnAuthorized

    \r\n\r\n

    Sorry, but it looks like your account is
    un-authosized to process this page.

    \r\n\r\n
    \r\n\r\n
    \r\n this.handleClick(e)}\r\n text=\"Back To Home\"\r\n size=\"medium\" />\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {};\r\n }\r\n export default connect(mapStateToProps)(ErrorScreen401);\r\n","import React, { Component } from \"react\";\r\nimport HeaderNavigation from \"../../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../../components/FooterNavigation/FooterNavigation\";\r\nimport Button from \"../../components/Button/Button\";\r\nimport { createBrowserHistory } from 'history';\r\n\r\nimport \"../../sass/containers/ErrorScreen/index.css\";\r\n\r\nconst browserHistory = createBrowserHistory();\r\nconst location = browserHistory.location;\r\nclass ErrorScreen404 extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n }\r\n\r\n \r\n render() {\r\n\r\n return (\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n

    #404

    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n

    It Looks Like You're Lost

    \r\n\r\n

    The page you’re looking for does not exist.

    \r\n\r\n
    \r\n\r\n
    \r\n { \r\n browserHistory.push(\"/\"); \r\n window.location.reload();\r\n }}\r\n text=\"Back To Home\"\r\n size=\"medium\" />\r\n
    \r\n\r\n\r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default ErrorScreen404;\r\n","import React, { Component } from \"react\";\r\nimport HeaderNavigation from \"../../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../../components/FooterNavigation/FooterNavigation\";\r\nimport Button from \"../../components/Button/Button\";\r\nimport { createBrowserHistory } from 'history';\r\nimport \"../../sass/containers/ErrorScreen/index.css\";\r\n\r\n\r\nconst browserHistory = createBrowserHistory();\r\nconst location = browserHistory.location;\r\nclass ErrorScreen403 extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n\r\n \r\n render() {\r\n\r\n return (\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n

    #403

    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n

    Access Denied

    \r\n\r\n

    Sorry, but it looks like you don't have
    permission to access this page.

    \r\n\r\n
    \r\n\r\n
    \r\n { \r\n browserHistory.push(\"/\");\r\n window.location.reload();\r\n }}\r\n text=\"Back To Home\"\r\n size=\"medium\" />\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default ErrorScreen403;\r\n","import React, { Component } from \"react\";\r\nimport HeaderNavigation from \"../../components/HeaderNavigation/HeaderNavigation\";\r\nimport FooterNavigation from \"../../components/FooterNavigation/FooterNavigation\";\r\nimport Button from \"../../components/Button/Button\";\r\nimport { createBrowserHistory } from 'history';\r\n\r\nimport \"../../sass/containers/ErrorScreen/index.css\";\r\n\r\nconst browserHistory = createBrowserHistory();\r\nclass ErrorScreen500 extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n }\r\n\r\n \r\n render() {\r\n\r\n return (\r\n
    \r\n {\r\n // \r\n }\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n

    #500

    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n

    Unexpected Error

    \r\n\r\n

    Seems like an error has occurred
    and your request couldn't be completed

    \r\n\r\n
    \r\n\r\n
    \r\n { \r\n browserHistory.push(\"/\");\r\n window.location.reload();\r\n }}\r\n text=\"Back To Home\"\r\n size=\"medium\" />\r\n
    \r\n\r\n\r\n\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default ErrorScreen500;\r\n","import React from 'react';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport {IndexRoute, Redirect } from 'react-router';\r\nimport App from './App';\r\n\r\nimport AuthArea from './containers/concierge/AuthArea';\r\nimport LoginScreen from './containers/LoginScreen';\r\nimport LogoutWrapper from './containers/Logout';\r\nimport LandingScreen from './containers/LandingScreen';\r\nimport CheckInScreen from './containers/concierge/parcel/CheckInScreen';\r\n\r\nimport AddResidentScreen from './containers/concierge/residents/ResidentCreatePage';\r\nimport ResidentViewProfile from './containers/concierge/residents/ResidentProfilePage';\r\nimport ResidentArchiveProfile from './containers/concierge/residents/ResidentArchivePage';\r\n\r\nimport ResidentProfileScreen from './containers/concierge/residents/ResidentProfilePage';\r\nimport ResidentProfileEditScreen from './containers/concierge/residents/ResidentEditProfilePage';\r\n\r\nimport ForgotPassword from './containers/ForgotPassword';\r\nimport PasswordRecoverySent from './containers/PasswordRecoverySent';\r\nimport PassRecoveryNewPassword from './containers/PassRecoveryNewPassword';\r\nimport TermsAndConditions from './containers/TermsAndConditions';\r\n\r\nimport KeysTestScreen from './containers/concierge/keys/keysTestScreen';\r\nimport KeyAssignScreen from './containers/concierge/keys/KeyAssignScreen';\r\nimport KeyProfileScreen from './containers/concierge/keys/KeyProfileScreen';\r\nimport KeyReturnScreen from './containers/concierge/keys/KeyReturnScreen';\r\n\r\nimport CheckinVisitorScreen from './containers/concierge/visitors/CheckinVisitorScreen';\r\n\r\nimport Visitor from './containers/concierge/visitors/Vistor';\r\nimport VisitorBooking from './containers/concierge/visitors/VisitorBooking';\r\nimport VisitorManagement from './containers/concierge/visitors/VisitorManagement';\r\nimport VisitorProfile from './containers/concierge/visitors/VisitorProfile';\r\nimport ManagementScreen from './containers/concierge/visitors/ManagementScreen';\r\n\r\nimport PaymentsScreen from './containers/concierge/PaymentScreens/Payments';\r\n\r\nimport ParcelRegisterScreen from './containers/concierge/parcel/RegisterScreen';\r\nimport ParcelManagementScreen from './containers/concierge/parcel/ParcelManagementScreen';\r\nimport ParcelExpectedScreen from './containers/concierge/parcel/ParcelExpectedScreen';\r\nimport ParcelInfoScreen from './containers/concierge/parcel/ParcelInfoScreen';\r\n\r\nimport ErrorScreen401 from './containers/static/ErrorScreen401';\r\nimport ErrorScreen404 from './containers/static/ErrorScreen404';\r\nimport ErrorScreen403 from './containers/static/ErrorScreen403';\r\nimport ErrorScreen500 from './containers/static/ErrorScreen500';\r\nimport { lang } from 'moment';\r\n\r\n\r\nconst currentHostname = document.location.hostname;\r\nconst isLocalhost = currentHostname.match(/localhost|127\\.0\\.0\\.1/g);\r\nlet restrictRoutesTo = false;\r\n\r\nif (isLocalhost === null) {\r\n\tif (currentHostname.indexOf('concierge') !== -1) {\r\n\t\trestrictRoutesTo = 'concierge';\r\n\t} else if (currentHostname.indexOf('visitor') !== -1) {\r\n\t\trestrictRoutesTo = 'visitor';\r\n\t}\r\n}\r\n\r\nconst onRouteChanges = {\r\n\t//Function to set the Class on certain routes\r\n\tsetClass: (previousRoute, nextRoute) => {\r\n\t\tvar bodyClass = nextRoute.location.pathname.replace(/\\//g, '-').substr(1);\r\n\t\tif (bodyClass === '') {\r\n\t\t\tbodyClass = 'home';\r\n\t\t}\r\n\t\tdocument.body.removeAttribute('class');\r\n\t\tdocument.body.classList.add(bodyClass);\r\n\t},\r\n\tcheckForRedirect: (previousRoute, nextRoute) => {\r\n\t\t// This function is only called on load of 404 page\r\n\r\n\t\t// Possible urls for reference\r\n\t\t// http://127.0.0.1:3000/ http://localhost:3000/ http://kirkstallforge.ept-stage.co.uk/ http://kirkstallforge-concierge.ept-stage.co.uk/\r\n\t\t// http://kirkstallforge-visitor.ept-stage.co.uk/ http://concierge.kirkstallforgelife.com http://visitor.kirkstallforgelife.com\r\n\t\t// http://www.kirkstallforgelife.com\r\n\r\n\t\t// User landed on 404 by trying to access a page only available on another sub domain\r\n\r\n\t\tif (\r\n\t\t\tisLocalhost === null &&\r\n\t\t\trestrictRoutesTo !== false &&\r\n\t\t\tnextRoute.location.pathname !== '' &&\r\n\t\t\tnextRoute.location.pathname !== '/' &&\r\n\t\t\tnextRoute.location.pathname.indexOf('/') === 0 &&\r\n\t\t\tnextRoute.location.pathname.length > 1\r\n\t\t) {\r\n\t\t\tconst firstSubPath = document.location.pathname.split('/').filter((chunk) => {\r\n\t\t\t\treturn chunk !== '';\r\n\t\t\t})[0];\r\n\r\n\t\t\t// Switch name from concierge to reception\r\n\t\t\tconst compareWith = restrictRoutesTo === 'concierge' ? 'concierge' : restrictRoutesTo;\r\n\t\t\tconst swap = restrictRoutesTo === 'concierge' ? 'visitor' : 'concierge';\r\n\r\n\t\t\tif (\r\n\t\t\t\t(firstSubPath === 'concierge' || firstSubPath === 'visitor') &&\r\n\t\t\t\tfirstSubPath !== compareWith &&\r\n\t\t\t\tdocument.location.origin.indexOf(restrictRoutesTo) !== -1\r\n\t\t\t) {\r\n\t\t\t\twindow.location.replace(\r\n\t\t\t\t\tdocument.location.origin.replace(restrictRoutesTo, swap) + document.location.pathname\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst onChange = (previousRoute, nextRoute) => {\r\n\tonRouteChanges.setClass(previousRoute, nextRoute);\r\n};\r\n\r\nfunction APP_(){\r\n\treturn ;\r\n}\r\nfunction AuthA(){\r\n\treturn ;\r\n}\r\nfunction Landing(){\r\n\treturn ;\r\n}\r\n\r\nfunction ParcelManagement(){\r\n\treturn ;\r\n}\r\nlet rI = 0;\r\n\r\nfunction getScreenAction(type){\r\n\tswitch(type){\r\n\t\tcase '/' : \r\n\t\treturn \r\n\t\tcase '/concierge/parcel/management' : \r\n\t\treturn ;\r\n\t\tdefault : \r\n\t\treturn null;\r\n\t}\r\n}\r\nexport default (\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{/* Visitors Journey */}\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t\r\n\t\r\n\t);\r\n","import './sass/index.css';\r\nimport './sass/iescss.css';\r\n\r\nimport 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {Router, Route, Switch, BrowserRouter } from 'react-router-dom';\r\n//import { browserHistory } from 'react-router';\r\nimport routes from './routes';\r\nimport {createBrowserHistory} from 'history';\r\nimport { Provider } from 'react-redux';\r\nimport { createStore, applyMiddleware, combineReducers, compose } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport './utility/validators';\r\nimport * as reducers from './store/reducers';\r\nimport history from './history';\r\nimport LoginScreen from './containers/LoginScreen';\r\n//let Router = require('react-router-dom').BrowserRouter\r\n\r\n//const history = createBrowserHistory();\r\nconst currentHostname = document.location.hostname;\r\nvar composeEnhancers;\r\n\r\nif (\r\n\t!process.env.NODE_ENV ||\r\n\tprocess.env.NODE_ENV === 'development' ||\r\n\tcurrentHostname.indexOf('ept-dev.co.uk') !== -1\r\n) {\r\n\tcomposeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n} else {\r\n\tcomposeEnhancers = compose;\r\n}\r\n\r\nconst store = createStore(combineReducers(reducers), composeEnhancers(applyMiddleware(thunk)));\r\n\r\nReactDOM.render(\r\n\t\r\n\t\r\n\t \r\n\t\t\t\r\n\t \r\n\t,\r\n\tdocument.getElementById('root')\r\n);\r\n\r\n//ReactDom.render(,document.getElementById(\"root\"));\r\n// registerServiceWorker();\r\n","import Parsley from \"parsleyjs\";\r\nimport _ from \"lodash\";\r\n\r\n\r\nParsley.addValidator(\"matchesOneOf\", {\r\n validateString: (value, allSuggestions) => {\r\n return (\r\n _.isUndefined(\r\n allSuggestions.allSuggestions.find(suggestion => {\r\n return suggestion.value.toLowerCase().trim() === value.toLowerCase().trim();\r\n })\r\n ) === false\r\n );\r\n }\r\n});\r\n\r\n(function () {\r\n// minwords, maxwords, words extra validators\r\nvar countWords = function (string) {\r\n return string\r\n .replace( /(^\\s*)|(\\s*$)/gi, \"\" )\r\n .replace( /\\s+/gi, \" \" )\r\n .split(' ').length;\r\n};\r\n\r\nwindow.Parsley.addValidator(\r\n 'minwords',\r\n function (value, nbWords) {\r\n return countWords(value) >= nbWords;\r\n }, 32)\r\n .addMessage('en', 'minwords', 'This value needs more words');\r\n\r\nwindow.Parsley.addValidator(\r\n 'maxwords',\r\n function (value, nbWords) {\r\n return countWords(value) <= nbWords;\r\n }, 32)\r\n .addMessage('en', 'maxwords', 'This value needs fewer words');\r\n\r\nwindow.Parsley.addValidator(\r\n 'words',\r\n function (value, arrayRange) {\r\n var length = countWords(value);\r\n return length >= arrayRange[0] && length <= arrayRange[1];\r\n }, 32)\r\n .addMessage('en', 'words', 'This value has the incorrect number of words');\r\n})();\r\n ","\r\nvar extend = require('extend');\r\n\r\nfunction loadBaseConfig() {\r\n return require('./config.js');\r\n}\r\n\r\nfunction loadEnvironmentConfig() {\r\n var env = process.env.NODE_ENV || 'dev';\r\n var path = './config.' + env + '.js';\r\n try {\r\n if (env === 'development' || env === 'dev') {\r\n return require('./config.js');\r\n } else if (env === 'production' || env === 'prod') {\r\n return require('./config.prod.js');\r\n } else {\r\n return {};\r\n }\r\n\r\n } catch (err) {\r\n if (err.message.indexOf('Cannot find module \\'' + path + '\\'') !== 0) {\r\n throw (err);\r\n }\r\n }\r\n return {};\r\n}\r\n\r\nfunction shallowCloneConfigs(base, extended) {\r\n return extend({}, base, extended);\r\n}\r\n\r\n// Perform shallow copy onto base config\r\nmodule.exports = shallowCloneConfigs(loadBaseConfig(), loadEnvironmentConfig());","import {createBrowserHistory} from 'history'\r\nconst history = createBrowserHistory()\r\nhistory.pushLater = (...args) => setImmediate(() => history.push(...args))\r\nexport default history","const config = {\r\n\tapiDomain: 'https://demo.engagevi.local',\r\n\tportalDomain: 'http://localhost:3006',\r\n\tuserTimeOutInMinutes : 20\r\n};\r\n\r\nmodule.exports = config;\r\n","const config = {\r\n\tapiDomain: '#{API.Domain}',\r\n\t// bookingbugApi: \"#{BookingBugAPI.Domain}\",\r\n\t// bookingbugPwd: \"#{BookingBugAPI.PWD}\"\r\n\tuserTimeOutInMinutes : 20,\r\n\tbookingbugApi: '',\r\n\tbookingbugPwd: ''\r\n};\r\n\r\nmodule.exports = config;\r\n"],"sourceRoot":""}