{"version":3,"sources":["webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue?6bbc","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./src/components/inputs/TimePickerFifteen/index.vue?0a21","webpack:///./src/pages/Shared/amenities/Details/index.vue?189a","webpack:///./src/pages/Management/amenities/ReservabilityAdder/index.vue?c638","webpack:///./src/components/inputs/TimePickerFifteen/index.vue?5dfd","webpack:///./src/utilities/time/toMeridian.js","webpack:///src/components/inputs/TimePickerFifteen/index.vue","webpack:///./src/components/inputs/TimePickerFifteen/index.vue?0ed0","webpack:///./src/components/inputs/TimePickerFifteen/index.vue","webpack:///./src/pages/Management/amenities/ReservabilityAdder/keys/methods.js","webpack:///src/pages/Management/amenities/ReservabilityAdder/index.vue","webpack:///./src/pages/Management/amenities/ReservabilityAdder/index.vue?a708","webpack:///./src/pages/Management/amenities/ReservabilityAdder/index.vue","webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue?ec5d","webpack:///./src/pages/Shared/amenities/ReservationChooser/keys/data.js","webpack:///./src/services/Amenities/AmenityReservation/Post.js","webpack:///./src/services/Amenities/AmenityReservableTime/Delete.js","webpack:///./src/services/Amenities/AmenityReservation/Get.js","webpack:///./src/services/Amenities/AmenityReservation/sequences/findMultipleReservations.js","webpack:///./src/services/Amenities/AmenityReservation/sequences/deleteMultiple.js","webpack:///./src/services/Amenities/Amenity/store.js","webpack:///./src/services/Amenities/AmenityFee/store.js","webpack:///./src/utilities/time/compare.js","webpack:///./src/utilities/time/getSpans.js","webpack:///./src/utilities/time/isAvailable.js","webpack:///./src/utilities/amenities/findReliantReservations.js","webpack:///./src/utilities/time/getDuration.js","webpack:///./src/pages/Shared/amenities/ReservationChooser/keys/methods.js","webpack:///./src/pages/Shared/amenities/ReservationChooser/keys/computed.js","webpack:///src/pages/Shared/amenities/ReservationChooser/index.vue","webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue?4876","webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue","webpack:///./src/pages/Shared/amenities/Details/keys/beforeDestroy.js","webpack:///./src/pages/Shared/amenities/Details/keys/computed.js","webpack:///./src/pages/Shared/amenities/Details/keys/data.js","webpack:///./src/services/Amenities/Amenity/Get.js","webpack:///./src/utilities/Date/addSuffix.js","webpack:///./src/utilities/Date/allDatesInMonth.js","webpack:///./src/utilities/amenities/filterReservableTimes.js","webpack:///./src/pages/Shared/amenities/Details/keys/methods.js","webpack:///./src/pages/Shared/amenities/Details/keys/mounted.js","webpack:///./src/pages/Shared/amenities/Details/keys/props.js","webpack:///./src/pages/Shared/amenities/Details/keys/watch.js","webpack:///src/pages/Shared/amenities/Details/index.vue","webpack:///./src/pages/Shared/amenities/Details/index.vue?a8d6","webpack:///./src/pages/Shared/amenities/Details/index.vue","webpack:///./src/pages/Shared/amenities/Details/index.vue?02cf","webpack:///./src/components/tiles/Status.vue?30b9","webpack:///src/components/tiles/Status.vue","webpack:///./src/components/tiles/Status.vue?1d2c","webpack:///./src/components/tiles/Status.vue","webpack:///./node_modules/core-js/internals/array-reduce.js"],"names":["$","$reduce","left","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","1","target","proto","forced","reduce","callbackfn","this","arguments","length","undefined","render","_vm","_h","$createElement","_c","_self","style","paddingBottom","position","attrs","display","justifyContent","alignItems","_v","_s","name","reservationDurationLimitInMinutes","borderLeft","Math","round","_e","marginLeft","found","loading","padding","textAlign","opacity","transition","Object","assign","marginBottom","breakpoint","flexDirection","portal","on","openAddModal","margin","model","value","callback","$$v","showing","expression","_l","option","key","domProps","text","ref","calendarUpdate","dayTapped","events","refreshParent","staticRenderFns","isOpen","$event","scopedSlots","_u","fn","proxy","add","formData","$set","day","index","staticClass","width","onChange","hour","minute","meridian","toMeridian","t","includeBreakdown","timeIsInvalid","split","result","second","parseInt","includes","console","error","Error","final","toString","hours","push","min","minutes","parse24","time","props","String","onUpdate","type","Function","default","data","meridians","watch","setValue","methods","toUpperCase","getValue","isValid","24","mounted","component","open","amenityID","debug","startTime","$refs","fromTime","endTime","toTime","cleanupDurationInMinutes","dayOfWeek","amenityStore","dispatch","json","successful","message","notifyProblem","callRefresh","components","Modal","TimePicker","_testAmenityID","Number","weekDays","_modal","maxWidth","checkBeforeClose","authUserType","staticStyle","show","cancelReservation","updateReservableTime","back","allowUpdate","confirmUpdateReservableTime","closeModal","deleteReservableTime","_get","amenityData","reserve","amenityFeeTotal","requestReservation","flexGrow","fee","cancelRefundable","_f","amount","description","convenienceFee","handleSubmit","preventDefault","onFormSubmit","amenityPaymentMethodType","label","ownerPaymentMethodID","creditCardNumber","cardHolderName","cvc","zipCode","directives","rawName","addCreditCardPaymentMethod","accountAliasCreditCard","errors","mDate","monthStr","dayOfMonth","year","opening","openings","marginTop","reservableTime","confirmEditReservableTime","confirmDeleteReservableTime","reservableTimes","reservation","paddingLeft","reservationIsApproved","approveReservationRequest","ownerID","confirmCancelReservation","reservations","toDelete","reliantReservations","rr","i","reservableTimeDayOfWeek","deleted","successes","problems","toUpdate","updaterOnUpdate","proposal","border","theme","color","affectedReservations","overflowY","height","r","marginRight","reservationToCancel","chargeAmount","nonRefundableAmount","amenityPaymentMethodTypes","amenityFees","amenityPaymentMethod","newAmenityReservation","paymentMethods","spans","requestJwtToken","month","affectedReservationsDetails","masks","creditCard","addAmenityReservation","kms","post","deleteAmenityReservableTime","amenityReservableTimeID","delete","getAmenityReservation","amenityReservationID","get","findMultipleReservations","a","reservationIDs","Promise","all","map","results","retrievals","deleteMultipleReservations","deleteAmenityReservation","actions","updateAmenity","payload","done","put","isDebug","JSON","stringify","notifyMessage","detail","notifyError","getAmenityFeePaymentMethodTypes","amenityFeePaymentMethodTypes","list","Vue","use","Vuex","Store","state","mutations","getters","getAmenityFeeList","params","amenityFeeStore","compareTimes","b","aInvalid","bInvalid","p","e","filter","c","x","determineSpans","availabilities","issues","l","b1","b2","b1Invalid","invalid","b2Invalid","l2","a1","a2","comparisons","2","3","4","a1b1","a1b2","a2b1","a2b2","getTimeSpans","sIssues","oIssues","cloneDeep","f1","r1","r2","resolutionFound","f2","o1","o2","o1r1","o1r2","o2r1","o2r2","splice","timeIsAvailable","check","c1","c2","f","available","findReliantReservations","blocks","id","Array","isArray","reservationDayOfWeek","wkDaysNums","moment","reservableTimesOnDay","getDuration","t1","t2","t1Parsed","t2Parsed","parsed","h","m","s","inBetween","num","$forceUpdate","amenityReservableTimes","amenityReservations","approveAmenityReservation","chargedAmount","convenienceFeeFromPercent","convenienceFeeAmount","parseReservableTimes","parseReservations","determineAvailability","filtered","entry","filteredReservableTimes","date","startDate","format","endDate","filteredReservations","monthNums","authUser","ownerId","getArray","loadAmenityFees","percent","percentage","percentAmount","isOrphan","commit","resolve","setTimeout","then","amenityReservationStore","formatter","Intl","NumberFormat","minimumFractionDigits","notifymessage","ensureIsAvailable","comparison","proposedDurationSeconds","reservationDurationLimitInSeconds","isAvailable","reservationOwnerID","reservationIdentityID","notes","amenityReservation","validationMessages","luhn","validate","expMonthYear","cardExpirationDateComponent","loadingComponent","$buefy","container","close","getFortisJwtOneTimeToken","paymentAmount","isApprovalPending","tokenNumber","resetFormValues","totalWithConvenienceFee","outstandingPayment","invalidMessage","lastFourDigits","slice","registerParams","account_number","method","jwt","expMonth","expYear","cvv","status","ownerUserID","paymentMethodType","token","token_number","tokenType","token_type","savePaymentMethod","accountAlias","postalCode","savePaymentToken","epicGateway","details","requiresApproval","hoaID","hoaId","loadServiceFees","parseFloat","creditCardPercentageServiceFee","creditCardPercentage","continueToFees","$store","reservationFees","loadPaymentMethodTypes","acc","item","loadPaymentMethods","selectedOwnerUser","ownerUsers","indexOf","allReservations","reliantReservation","editFromTime","editToTime","idToRemove","_cloneDeep","ids","reservableTimeProposal","addReservableTime","addedSuccessfully","addMessage","computed","mapState","win","user","selectedHoaId","homeownerSelectedUnit","mapGetters","bind","input","_vCleave","unbind","destroy","StatusTile","ValidSelect","ValidInput","Info","DateMonthPicker","ValidationObserver","ValidationProvider","beforeDestroy","unsubWindowStore","unsubAmenityStore","homeOwnerDisplays","total","allReservationsText","yourReservationsText","options","yourFutureReservations","yourPastReservations","join","yourFutureReservationRequests","yourPastReservationRequests","futureReservations","pastReservations","futureReservationRequests","pastReservationRequests","managementDisplays","dayTappedDay","dayTappedMonth","dayTappedYear","attributes","months","shown","getAmenity","addSuffix","strDate","len","secondToLast","last","allDatesInMonth","suffix","totalDays","daysInMonth","dates","Date","getDay","number","filterReservableTimes","wkDays","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","wkDay","calendar","getInfo","reservationChooser","calculateYourReservationCounts","currentOwnerId","calcOwnerEventTotals","your","totals","future","requests","count","past","calculateTotals","now","thisDate","isPast","isBefore","isApproved","from","refresh","initDatePickers","move","monthStrs","$route","reservabilityAdder","showYourReservations","datesInMonth","_date","to","showReservations","showReservableTimes","showOpenings","sDate","eDate","showPendingReservationRequests","subscribe","mutation","mType","PageContent","PleasantCalendar","ReservabilityAdder","ReservationChooser","backgrounds","5","styles","background","styles_","aFunction","toObject","IndexedObject","toLength","createMethod","IS_RIGHT","that","argumentsLength","memo","O","self","TypeError","module","exports","right"],"mappings":"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","file":"js/chunk-31113fa9.951ec6ae.js","sourcesContent":["import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&scope=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&scope=true&\"","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('PageContent',{style:({ paddingBottom: '300px', position: 'relative' }),attrs:{\"id\":\"amenities-details\",\"amenities-details-page\":\"\"}},[_c('div',{style:({ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline' })},[_c('h3',[_vm._v(_vm._s(_vm.name))]),_c('div',{style:({ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline' })},[(\n typeof _vm.reservationDurationLimitInMinutes === 'number' &&\n _vm.reservationDurationLimitInMinutes > 0\n )?_c('b-taglist',{attrs:{\"attached\":\"\"}},[_c('b-tag',{attrs:{\"type\":\"is-light\"}},[_vm._v(\"Reservation Time Limit\")]),_c('b-tag',{style:({ borderLeft: '1px solid #DDD' }),attrs:{\"type\":\"is-light\"}},[_vm._v(_vm._s(Math.round(_vm.reservationDurationLimitInMinutes / 60) + ' hour(s)'))])],1):_vm._e(),(_vm.requiresApproval)?_c('b-taglist',{style:({ marginLeft: '12px' }),attrs:{\"attached\":\"\"}},[_c('b-tag',{attrs:{\"type\":\"is-light\"}},[_vm._v(\"Reservations Require Approval\")])],1):_vm._e()],1)]),_c('div',{style:({\n display: !_vm.found && !_vm.loading ? 'block' : 'none',\n padding: '100px',\n textAlign: 'center'\n })},[_vm._v(\" The amenity could not be found. It may have been deleted. \")]),_c('div',{style:({ opacity: _vm.found ? 1 : 0, transition: 'opacity 1.4s' })},[_c('div',{style:(Object.assign({}, {display: 'flex',\n justifyContent: 'space-between',\n marginBottom: '30px'},\n (_vm.breakpoint === 'desktop'\n ? {\n alignItems: 'end'\n }\n : {\n alignItems: 'unset',\n flexDirection: 'column'\n })))},[(_vm.portal === 2)?_c('b-button',{attrs:{\"add-reservable-time-button\":\"\",\"type\":\"is-primary\",\"rounded\":\"\"},on:{\"click\":_vm.openAddModal}},[_vm._v(\"Add Reservable Time\")]):_vm._e(),_c('div',{style:(Object.assign({}, {display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n margin: '20px 0 0'\n })))},[(_vm.portal === 1)?_c('b-field',{attrs:{\"label\":\"Show\"}},[_c('b-select',{model:{value:(_vm.showing),callback:function ($$v) {_vm.showing=$$v},expression:\"showing\"}},_vm._l((_vm.homeOwnerDisplays),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(\" \"+_vm._s(option.text)+\" \")])}),0)],1):_vm._e(),(_vm.portal === 2)?_c('b-field',{attrs:{\"label\":\"Show\"}},[_c('b-select',{model:{value:(_vm.showing),callback:function ($$v) {_vm.showing=$$v},expression:\"showing\"}},_vm._l((_vm.managementDisplays),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(\" \"+_vm._s(option.text)+\" \")])}),0)],1):_vm._e()],1)],1),_c('PleasantCalendar',{ref:\"calendar\",attrs:{\"pageChange\":_vm.calendarUpdate,\"dayTapped\":_vm.dayTapped,\"events\":_vm.events,\"breakpoint\":_vm.breakpoint}})],1),_c('ReservabilityAdder',{ref:\"reservabilityAdder\",attrs:{\"refreshParent\":_vm.refreshParent}}),_c('ReservationChooser',{ref:\"reservationChooser\",attrs:{\"refreshParent\":_vm.refreshParent}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"amenities-reservability-adder\":\"\",\"toggle\":_vm.isOpen,\"loading\":_vm.loading},on:{\"update:toggle\":function($event){_vm.isOpen=$event}},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"Amenity Reservable Times\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('div',{style:({ display: 'flex', justifyContent: 'end' })},[_c('b-button',{attrs:{\"type\":\"is-primary\",\"add-button\":\"\"},on:{\"click\":_vm.add}},[_vm._v(\"Add\")])],1)]},proxy:true}])},[_c('b-field',{attrs:{\"label\":\"Every\"}}),_c('b-select',{attrs:{\"day-select\":\"\",\"placeholder\":\"Day of Week\"},model:{value:(_vm.formData.dayOfWeek),callback:function ($$v) {_vm.$set(_vm.formData, \"dayOfWeek\", $$v)},expression:\"formData.dayOfWeek\"}},_vm._l((_vm.weekDays),function(day,index){return _c('option',{key:index,domProps:{\"value\":day}},[_vm._v(\" \"+_vm._s(day)+\" \")])}),0),_c('br'),_c('b-field',{attrs:{\"label\":\"From\"}}),_c('TimePicker',{ref:\"fromTime\",attrs:{\"from-time\":\"\"}}),_c('br'),_c('b-field',{attrs:{\"label\":\"To\"}}),_c('TimePicker',{ref:\"toTime\",attrs:{\"to-time\":\"\"}}),_c('br')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"time-picker--foundation\",style:({ display: 'flex', alignItems: 'center' })},[_c('b-select',{style:({ width: '100px' }),attrs:{\"hour-select\":\"\",\"placeholder\":\"hour\"},on:{\"input\":_vm.onChange},model:{value:(_vm.hour),callback:function ($$v) {_vm.hour=$$v},expression:\"hour\"}},_vm._l((_vm.hours),function(hour){return _c('option',{key:hour,domProps:{\"value\":hour}},[_vm._v(\" \"+_vm._s(hour)+\" \")])}),0),_c('b-select',{style:({ width: '120px' }),attrs:{\"minute-select\":\"\",\"placeholder\":\"minute\"},on:{\"input\":_vm.onChange},model:{value:(_vm.minute),callback:function ($$v) {_vm.minute=$$v},expression:\"minute\"}},_vm._l((_vm.minutes),function(minute){return _c('option',{key:minute,domProps:{\"value\":minute}},[_vm._v(\" \"+_vm._s(minute)+\" \")])}),0),_c('b-select',{style:({ width: '100px', marginLeft: '8px' }),attrs:{\"meridian-select\":\"\",\"placeholder\":\"meridian\"},on:{\"input\":_vm.onChange},model:{value:(_vm.meridian),callback:function ($$v) {_vm.meridian=$$v},expression:\"meridian\"}},_vm._l((_vm.meridians),function(meridian){return _c('option',{key:meridian,domProps:{\"value\":meridian}},[_vm._v(\" \"+_vm._s(meridian)+\" \")])}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\r\n\timport { toMeridian } from \"@/utilities/time/toMeridian\"\r\n\r\n\tconst meridianTime = toMeridian (\"00:00:00\");\r\n\r\n\tplan:\r\n\t\t00:00:00 -> 12 am\r\n\t\t01:00:00 -> 1 am\r\n\t\t03:17:00 -> 3:17 am\r\n\r\n\r\n\t\t00 -> 12 am\r\n\t\t12 -> 12 pm\r\n\t\t13 -> 1 pm\r\n\t\t23 -> 11 pm\r\n\t\t24 -> 12 am\r\n\r\n*/\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\n\r\nexport function toMeridian(t, { includeBreakdown = false } = {}) {\r\n if (timeIsInvalid(t)) {\r\n return t\r\n }\r\n\r\n const split = t.split(':')\r\n\r\n let result = {\r\n hour: '',\r\n minute: split[1],\r\n second: split[2],\r\n meridian: 'am'\r\n }\r\n\r\n const hour = parseInt(split[0])\r\n\r\n if ([0, 24].includes(hour)) {\r\n result.hour += '12'\r\n result.meridian = 'am'\r\n } else if (hour === 12) {\r\n result.hour += '12'\r\n result.meridian = 'pm'\r\n } else if (hour >= 13) {\r\n result.hour = hour - 12\r\n result.meridian = 'pm'\r\n } else if (hour >= 1 && hour <= 11) {\r\n result.hour = hour\r\n result.meridian = 'am'\r\n } else {\r\n console.error({ hour })\r\n throw new Error(t)\r\n }\r\n\r\n let final = result.hour\r\n\r\n if (split[1] !== '00') {\r\n final += ':' + split[1]\r\n }\r\n\r\n final += ' ' + result.meridian\r\n\r\n if (includeBreakdown) {\r\n if (typeof result.minute === 'number') {\r\n result.minute = result.minute.toString()\r\n }\r\n if (result.minute.length === 1) {\r\n result.minute = '0' + result.minute\r\n }\r\n\r\n if (typeof result.hour === 'number') {\r\n result.hour = result.hour.toString()\r\n }\r\n if (result.hour.length === 1) {\r\n result.hour = '0' + result.hour\r\n }\r\n\r\n return {\r\n final,\r\n result\r\n }\r\n }\r\n\r\n return final\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=41b8e565&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { amenityStore } from '@/services/Amenities/store'\r\nimport { notifyProblem } from '@/services/notify'\r\n\r\nexport const methods = {\r\n open({ amenityID }) {\r\n this.isOpen = true\r\n this.loading = false\r\n\r\n this.amenityID = amenityID\r\n },\r\n async add() {\r\n console.debug('in ReservabilityAdder add...')\r\n this.loading = true\r\n\r\n const startTime = this.$refs.fromTime.getValue()[24]\r\n const endTime = this.$refs.toTime.getValue()[24]\r\n const cleanupDurationInMinutes = this.formData.cleanupDurationInMinutes\r\n const dayOfWeek = this.formData.dayOfWeek\r\n const amenityID = this.amenityID\r\n\r\n const { successful, message } = await amenityStore.dispatch('addReservableTime', {\r\n json: {\r\n amenityID,\r\n dayOfWeek,\r\n startTime,\r\n endTime,\r\n cleanupDurationInMinutes\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n this.callRefresh = true\r\n console.debug('calling refreshParent...')\r\n this.refreshParent()\r\n this.isOpen = false\r\n }\r\n}\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2f38257a&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"amenities-reservation-chooser\":\"\",\"toggle\":_vm.isOpen,\"loading\":_vm.loading,\"styles\":{ _modal: { maxWidth: '1400px' } },\"checkBeforeClose\":_vm.checkBeforeClose},on:{\"update:toggle\":function($event){_vm.isOpen=$event}},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',[(_vm.authUserType === 'HomeOwner' && _vm.showing !== 8)?_c('div',[_vm._v(\"Reservation Chooser\")]):_vm._e(),(_vm.authUserType === 'HomeOwner' && _vm.showing === 8)?_c('div',[_vm._v(\" Amenity Fees - Due at Time of Reservation or Approval \")]):_vm._e(),(_vm.authUserType === 'Account')?_c('div',[_vm._v(\"Details\")]):_vm._e()])]},proxy:true},{key:\"footer\",fn:function(){return [_c('div',{staticStyle:{}},[(_vm.showing === 6)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":function($event){return _vm.show(4)}}},[_vm._v(\"Back\")]),(_vm.authUserType === 'HomeOwner')?_c('b-button',{attrs:{\"type\":\"is-danger\",\"rounded\":\"\"},on:{\"click\":function($event){return _vm.cancelReservation()}}},[_vm._v(\"Cancel Reservation\")]):_vm._e()],1):_vm._e(),(_vm.showing === 5)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":function($event){return _vm.show(4)}}},[_vm._v(\"Back\")]),_c('b-button',{staticClass:\"button is-primary is-small\",on:{\"click\":_vm.updateReservableTime}},[_vm._v(\"Update\")])],1):_vm._e(),(_vm.showing === 4)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":_vm.back}},[_vm._v(\"Back\")]),(_vm.allowUpdate === 0)?_c('b-tooltip',{attrs:{\"label\":\"Please select the new time span.\",\"position\":\"is-left\"}},[_c('b-button',{staticClass:\"button is-primary is-small\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Update\")])],1):_vm._e(),(_vm.allowUpdate === 2)?_c('b-tooltip',{attrs:{\"label\":\"The end time needs to be after the start time.\",\"position\":\"is-left\"}},[_c('b-button',{staticClass:\"button is-primary is-small\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Update\")])],1):_vm._e(),(_vm.allowUpdate === 1)?_c('b-button',{staticClass:\"button is-primary is-small\",on:{\"click\":_vm.confirmUpdateReservableTime}},[_vm._v(\"Update\")]):_vm._e()],1):_vm._e(),(_vm.showing === 3)?_c('div',{style:({ display: 'flex', justifyContent: 'end' })},[_c('b-button',{on:{\"click\":_vm.closeModal}},[_vm._v(\"Close\")])],1):_vm._e(),(_vm.showing === 2)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":_vm.back}},[_vm._v(\"Back\")]),_c('b-button',{attrs:{\"type\":\"is-danger\"},on:{\"click\":_vm.deleteReservableTime}},[_vm._v(\"Delete\")])],1):_vm._e(),(_vm.showing === 1 && _vm.authUserType === 'HomeOwner')?_c('div',{style:({ display: 'flex', justifyContent: 'end' })},[(\n _vm.authUserType === 'HomeOwner' && _vm._get(_vm.amenityData, 'requiresApproval', null) !== true\n )?_c('b-button',{attrs:{\"type\":\"is-primary\"},on:{\"click\":_vm.reserve}},[_vm._v(\"Reserve\")]):_vm._e(),(\n _vm.authUserType === 'HomeOwner' &&\n _vm._get(_vm.amenityData, 'requiresApproval', null) === true &&\n _vm.amenityFeeTotal <= 0\n )?_c('b-button',{attrs:{\"type\":\"is-primary\"},on:{\"click\":_vm.requestReservation}},[_vm._v(\"Request to Reserve\")]):_vm._e(),(_vm.authUserType === 'HomeOwner')?_c('span',{staticClass:\"pl-3\"},[_vm._v(\" \")]):_vm._e(),(_vm.authUserType === 'HomeOwner' && _vm.amenityFeeTotal > 0)?_c('b-button',{attrs:{\"type\":\"is-primary\"},on:{\"click\":function($event){return _vm.requestReservation(true)}}},[_vm._v(\"Continue to Fees\")]):_vm._e(),(_vm.authUserType === 'Account')?_c('b-tooltip',{attrs:{\"label\":\"Only home owners may reserve amenities.\",\"position\":\"is-left\"}},[_c('b-button',{attrs:{\"type\":\"is-primary\",\"disabled\":\"\"}},[_vm._v(\"Reserve\")])],1):_vm._e()],1):_vm._e(),(_vm.showing === 8 && _vm.authUserType === 'HomeOwner')?_c('div',{staticClass:\"scrollbar\",staticStyle:{\"max-height\":\"615px !important\"}},[_c('div',{style:(Object.assign({}, {display: 'flex',\n marginBottom: '12px'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n flexDirection: 'column'\n })))},[_c('div',{staticClass:\"card\",style:({ padding: '12px', flexGrow: 2 })},[_vm._l((_vm.amenityFees),function(fee,index){return _c('div',{key:index},[_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-10 font-bold\"},[_vm._v(\" \"+_vm._s(fee.name || '')+\" \"+_vm._s((\"\" + (fee.cancelRefundable === true ? ' (Refundable)' : ' (Non-Refundable)')))+\" \")]),_c('div',{staticClass:\"column is-2 text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(fee.amount)))])]),_c('div',{staticClass:\"columns pl-5\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-12\"},[_vm._v(_vm._s(fee.description || ''))])])])}),_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-10 font-bold\"},[_vm._v(\" Convenience Fee (Non-Refundable) \")]),_c('div',{staticClass:\"column is-2 text-right font-larger2\"},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.convenienceFee))+\" \")])]),_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-10 font-bold text-right\"},[_vm._v(\"Total Due Today:\")]),_c('div',{staticClass:\"column is-2 font-bold text-right\"},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")((_vm.amenityFeeTotal + _vm.convenienceFee)))+\" \")])])],2)]),_c('div',[_c('ValidationObserver',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var handleSubmit = ref.handleSubmit;\nreturn [_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\",\"appear\":\"\"}},[_c('form',{staticClass:\"form\",on:{\"submit\":function($event){$event.preventDefault();return handleSubmit(_vm.onFormSubmit)}}},[_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-12 font-bold\"},[_vm._v(\"Payment Method Type\")])]),_c('div',{staticStyle:{\"width\":\"500px\"}},[_c('valid-select',{attrs:{\"placeholder\":\"Payment Method Type\",\"vid\":\"amenityPaymentMethodType\",\"aria-required\":\"The payment method type is required\",\"rules\":\"required\"},model:{value:(_vm.amenityPaymentMethodType),callback:function ($$v) {_vm.amenityPaymentMethodType=$$v},expression:\"amenityPaymentMethodType\"}},_vm._l((_vm.amenityPaymentMethodTypes),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.label))])}),0)],1),(_vm.amenityPaymentMethodType && _vm.amenityPaymentMethodType == 'stored')?_c('div',{staticClass:\"pt-5\",staticStyle:{\"width\":\"500px\"}},[_c('label',{staticClass:\"label\"},[_vm._v(\"Payment Method\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"Select the stored payment that you want to use to make this payment.\"}})],1),_c('valid-select',{attrs:{\"placeholder\":\"Payment Method\",\"vid\":\"ownerPaymentMethodID\",\"aria-required\":\"The payment method is required\",\"rules\":\"required\"},model:{value:(_vm.ownerPaymentMethodID),callback:function ($$v) {_vm.ownerPaymentMethodID=$$v},expression:\"ownerPaymentMethodID\"}},_vm._l((_vm.paymentMethods),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.label))])}),0)],1):_vm._e(),(_vm.amenityPaymentMethodType && _vm.amenityPaymentMethodType == 'creditcard')?_c('div',{staticClass:\"pt-1\"},[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Credit Card Number\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"The credit card number.\"}})],1),_c('b-input',{attrs:{\"id\":\"cardnumber\",\"name\":\"creditCardNumber\",\"type\":\"text\",\"vid\":\"creditCardNumber\",\"placeholder\":\"Credit Card Number\",\"rules\":\"required|max:100\"},model:{value:(_vm.creditCardNumber),callback:function ($$v) {_vm.creditCardNumber=$$v},expression:\"creditCardNumber\"}})],1),_c('div',{staticClass:\"column is-5\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Card Holder Name\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"The card holder name.\"}})],1),_c('valid-input',{attrs:{\"name\":\"cardHolderName\",\"type\":\"text\",\"vid\":\"cardHolderName\",\"placeholder\":\"Card Holder Name\",\"rules\":\"required|max:255\"},model:{value:(_vm.cardHolderName),callback:function ($$v) {_vm.cardHolderName=$$v},expression:\"cardHolderName\"}})],1)]),_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5 pt-1\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Expiration Date\"),_c('Info',{attrs:{\"title\":\"Expiration Date\",\"information\":\"The date that the credit card expires.\"}})],1),_c('b-field',[_c('DateMonthPicker',{ref:\"cardExpirationDateComponent\",attrs:{\"required\":\"\"}})],1)],1),_c('div',{staticClass:\"column is-5 pt-1\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"CVC\"),_c('Info',{attrs:{\"title\":\"CVC\",\"information\":\"The credit card verification code. This code is the final three digits of the number printed on the signature strip on the reverse side of your card.\"}})],1),_c('valid-input',{attrs:{\"name\":\"cvc\",\"type\":\"text\",\"vid\":\"cvc\",\"placeholder\":\"Card Verification Code\",\"rules\":\"required|max:5\"},model:{value:(_vm.cvc),callback:function ($$v) {_vm.cvc=$$v},expression:\"cvc\"}})],1)]),_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5 pt-1\"},[_c('div',{staticClass:\"column is-12 pt-2\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Postal Code\"),_c('Info',{attrs:{\"title\":\"Postal Code\",\"information\":\"The postal code of the credit card holder's mailing address.\"}})],1)]),_c('valid-input',{attrs:{\"name\":\"zipCode\",\"type\":\"text\",\"vid\":\"zipCode\",\"placeholder\":\"Zip Code\",\"maxlength\":\"5\",\"rules\":\"required|max:5\"},model:{value:(_vm.zipCode),callback:function ($$v) {_vm.zipCode=$$v},expression:\"zipCode\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5 pl-3 pt-5\"},[_c('b-checkbox',{staticClass:\"has-left-text\",model:{value:(_vm.addCreditCardPaymentMethod),callback:function ($$v) {_vm.addCreditCardPaymentMethod=$$v},expression:\"addCreditCardPaymentMethod\"}},[_vm._v(\"Save this Payment Method?\")])],1),(_vm.addCreditCardPaymentMethod === true)?_c('div',{staticClass:\"column is-5\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Account Alias\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"Assign a name to your account. This can be any name that you want to assign.\"}})],1),_c('valid-input',{attrs:{\"name\":\"accountAliasCreditCard\",\"type\":\"text\",\"vid\":\"accountAliasCreditCard\",\"placeholder\":\"Account Alias\",\"rules\":\"max:255\"},model:{value:(_vm.accountAliasCreditCard),callback:function ($$v) {_vm.accountAliasCreditCard=$$v},expression:\"accountAliasCreditCard\"}})],1):_vm._e()])]):_vm._e(),_c('div',{staticClass:\"pb-5 pt-5 primary\"},[_c('span',{staticClass:\"is-left pr-3\"},[_c('b-button',{on:{\"click\":_vm.back}},[_vm._v(\"Back\")])],1),_c('button',{staticClass:\"button is-primary pl-3\",attrs:{\"type\":\"submit\",\"disabled\":_vm.loading}},[_vm._v(\" Send Payment \")])]),_c('fieldset',[_c('ValidationProvider',{attrs:{\"vid\":\"providerErrors\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('div',{staticClass:\"field\"},[_c('span',[_vm._v(_vm._s(errors[0]))])])]}}],null,true)})],1)])])]}}],null,false,1578327875)})],1)]):_vm._e()])]},proxy:true}])},[(_vm.showing === 1)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.mDate.monthStr)+\" \"+_vm._s(_vm.mDate.dayOfMonth)+\", \"+_vm._s(_vm.mDate.year))]),_c('div',{style:(Object.assign({}, {display: 'flex',\n marginBottom: '12px'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n flexDirection: 'column'\n })))},[_c('div',{staticClass:\"card\",style:({ padding: '12px', flexGrow: 3 })},[_c('h5',{style:({ margin: 0, padding: 0 })},[_vm._v(\"Current Availability\")]),_vm._l((_vm.openings),function(opening,index){return _c('div',{key:index},[_vm._v(\" \"+_vm._s(_vm.toMeridian(opening[0]))+\" to \"+_vm._s(_vm.toMeridian(opening[1]))+\" \")])}),(_vm.openings.length === 0)?_c('div',[_vm._v(\"None\")]):_vm._e()],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticClass:\"card\",style:(Object.assign({}, {padding: '12px',\n flexGrow: 2},\n (_vm.breakpoint === 'desktop'\n ? {\n marginLeft: '12px'\n }\n : {\n marginTop: '12px'\n })))},[_c('h5',{style:({ margin: 0, padding: 0 })},[_vm._v(\"Original Reservable Times\")]),_vm._l((_vm.reservableTimes),function(reservableTime,index){return _c('div',{key:index,staticClass:\"card\",style:({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '8px',\n margin: '4px 0'\n })},[_c('div',[_vm._v(_vm._s(_vm.toMeridian(reservableTime[0]))+\" to \"+_vm._s(_vm.toMeridian(reservableTime[1])))]),(_vm.authUserType === 'Account')?_c('div',[_c('b-button',{staticClass:\"button is-info is-light is-small is-outline is-rounded\",on:{\"click\":function($event){return _vm.confirmEditReservableTime({ reservableTime: reservableTime })}}},[_vm._v(\"Edit\")]),_c('b-button',{staticClass:\"button is-info is-light is-small is-outline is-rounded\",style:({ marginLeft: '8px' }),on:{\"click\":function($event){return _vm.confirmDeleteReservableTime({ reservableTime: reservableTime })}}},[_vm._v(\"Delete\")])],1):_vm._e()])}),(_vm.reservableTimes.length === 0)?_c('div',[_vm._v(\"None\")]):_vm._e()],2)]),_c('div',{style:({ display: 'flex' })},[_c('div',{staticClass:\"card\",style:({ padding: '12px', flexGrow: 2 })},[_c('h5',{style:({ margin: 0, padding: 0 })},[_vm._v(\"Other Reservations\")]),_vm._l((_vm.reservations),function(reservation,index){return _c('div',{key:index,staticClass:\"card\",style:({\n display: 'flex',\n justifyContent: 'space-between',\n\n marginTop: '6px',\n padding: '8px',\n alignItems: 'center'\n })},[_c('div',{style:({ display: 'flex', alignItems: 'center' })},[_c('b-tag',{attrs:{\"size\":\"is-medium\"}},[_vm._v(_vm._s(_vm.toMeridian(reservation[0]))+\" to \"+_vm._s(_vm.toMeridian(reservation[1])))]),_c('span',{style:({ padding: '0 10px' })},[_vm._v(\"for\")]),_c('b-tag',{style:({ paddingLeft: '10px' }),attrs:{\"size\":\"is-medium\"}},[_vm._v(_vm._s(reservation[2]))]),(\n _vm._get(_vm.amenityData, ['requiresApproval'], false) &&\n !_vm.reservationIsApproved({ reservation: _vm._get(reservation, [3], null) })\n )?_c('StatusTile',{style:({ marginLeft: '12px' }),attrs:{\"text\":\"Pending Approval\",\"background\":1}}):_vm._e(),(\n _vm._get(_vm.amenityData, ['requiresApproval'], false) &&\n _vm.reservationIsApproved({ reservation: _vm._get(reservation, [3], null) })\n )?_c('StatusTile',{style:({ marginLeft: '12px' }),attrs:{\"text\":\"Approved\",\"background\":2}}):_vm._e()],1),(\n _vm.authUserType === 'Account' &&\n _vm._get(_vm.amenityData, 'requiresApproval', null) === true &&\n !_vm.reservationIsApproved({ reservation: _vm._get(reservation, 3, null) })\n )?_c('b-button',{attrs:{\"type\":\"is-primary\",\"rounded\":\"\"},on:{\"click\":function($event){return _vm.approveReservationRequest({ reservation: reservation })}}},[_vm._v(\"Approve Request\")]):_vm._e(),(\n _vm.authUserType === 'HomeOwner' &&\n typeof _vm.ownerID === 'number' &&\n _vm.ownerID === _vm._get(reservation, [3, 'reservationOwnerID'], null)\n )?_c('b-button',{attrs:{\"type\":\"is-danger\",\"rounded\":\"\"},on:{\"click\":function($event){return _vm.confirmCancelReservation({ reservation: reservation })}}},[_vm._v(\"Cancel Reservation\")]):_vm._e()],1)}),(_vm.reservations.length === 0)?_c('div',[_vm._v(\"None\")]):_vm._e()],2)]),(_vm.authUserType === 'HomeOwner')?_c('div',{staticClass:\"card\",style:({ padding: '12px', marginTop: '12px' })},[(_vm._get(_vm.amenityData, 'requiresApproval', null) === true)?_c('h4',[_vm._v(\"New Reservation Request\")]):_c('h4',[_vm._v(\"New Reservation\")]),_c('b-field',{attrs:{\"label\":\"From\"}}),_c('TimePicker',{ref:\"fromTime\"}),_c('br'),_c('b-field',{attrs:{\"label\":\"To\"}}),_c('TimePicker',{ref:\"toTime\"})],1):_vm._e()]):_vm._e(),(_vm.showing === 2)?_c('div',[_c('div',[_c('div',[_vm._v(\" There are \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.reliantReservations.length))]),_vm._v(\" reservation\"+_vm._s(_vm.toDelete.reliantReservations.length === 1 ? '' : 's')+\" or reservation request\"+_vm._s(_vm.toDelete.reliantReservations.length === 1 ? '' : 's')+\" that will be cancelled if this reservable time is deleted. \")]),_vm._l((_vm.toDelete.reliantReservations),function(rr,i){return _c('div',{key:i,style:({ margin: '4px 0' })},[_c('b-tag',[_vm._v(_vm._s(rr[0]))]),_vm._v(\" to \"),_c('b-tag',[_vm._v(_vm._s(rr[1]))]),_vm._v(\" for \"),_c('b-tag',[_vm._v(_vm._s(rr[2]))])],1)})],2),_c('br'),_c('div',[_vm._v(\"Are you sure you want to delete this reservable time block?\")]),_c('div',[_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.reservableTimeDayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.startTime))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.endTime))])])])]):_vm._e(),(_vm.showing === 3)?_c('div',[_c('p',[_vm._v(\"This reservable time slot has been deleted.\")]),_c('p',[_vm._v(\" Every \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.reservableTimeDayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.startTime))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.endTime))])]),_c('br'),(_vm.deleted.successes >= 1)?_c('p',[_c('b',[_vm._v(_vm._s(_vm.deleted.successes))]),_vm._v(\" reservations have been cancelled. \")]):_vm._e(),(_vm.deleted.problems.length >= 1)?_c('p',[_c('b',[_vm._v(_vm._s(_vm.deleted.problems.length))]),_vm._v(\" reservations may not have been cancelled successfully. \")]):_vm._e()]):_vm._e(),(_vm.showing === 4)?_c('div',[_c('h4',[_vm._v(\"Reservable Time Update\")]),_c('div',{staticClass:\"card\",style:({ padding: '16px' })},[_c('h5',{style:({ margin: 0 })},[_vm._v(\"Currently\")]),_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toUpdate.dayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.startTime)))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.endTime)))])])]),_c('br'),_c('div',{style:(Object.assign({}, {display: 'flex'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n flexDirection: 'column'\n })))},[_c('div',{staticClass:\"card\",style:({ padding: '16px' })},[_c('h5',{style:({ margin: 0 })},[_vm._v(\"Update To\")]),_c('b-field',{attrs:{\"label\":\"From\"}}),_c('TimePicker',{ref:\"editFromTime\",attrs:{\"onUpdate\":_vm.updaterOnUpdate},model:{value:(_vm.toUpdate.proposal.startTime),callback:function ($$v) {_vm.$set(_vm.toUpdate.proposal, \"startTime\", $$v)},expression:\"toUpdate.proposal.startTime\"}}),_c('br'),_c('b-field',{attrs:{\"label\":\"To\"}}),_c('TimePicker',{ref:\"editToTime\",attrs:{\"onUpdate\":_vm.updaterOnUpdate},model:{value:(_vm.toUpdate.proposal.endTime),callback:function ($$v) {_vm.$set(_vm.toUpdate.proposal, \"endTime\", $$v)},expression:\"toUpdate.proposal.endTime\"}})],1),_c('div',{staticClass:\"card\",style:(Object.assign({}, {padding: '16px',\n border: \"3px solid\" + _vm.theme.color[4]},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n marginTop: '12px'\n })))},[_c('h5',{style:({ margin: 0 })},[_vm._v(\"Affected Reservations\")]),_c('p',[_c('b',[_vm._v(_vm._s(_vm.affectedReservations.length))]),_vm._v(\" reservation\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" or or reservation request\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" will be cancelled if the reservable time is updated to the selected span. \")]),_c('div',{style:({ overflowY: 'scroll', height: '74%' })},_vm._l((_vm.affectedReservations),function(r,i){return _c('div',{key:i,style:({ margin: '6px 0' })},[_c('p',[_c('b-tag',[_vm._v(_vm._s(r[0]))]),_vm._v(\" to \"),_c('b-tag',[_vm._v(_vm._s(r[1]))]),_vm._v(\" for \"),_c('b-tag',[_vm._v(_vm._s(r[2]))])],1)])}),0)])])]):_vm._e(),(_vm.showing === 5)?_c('div',[_c('h4',[_vm._v(\"Reservable Time Update Confirmation\")]),_c('p',[_vm._v(\"Please confirm that you would like to update the reservable time\")]),_c('div',[_c('b-tag',{style:({ width: '50px', marginRight: '8px' })},[_vm._v(\"From\")]),_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toUpdate.dayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.startTime)))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.endTime)))])])],1),_c('div',{style:({ marginTop: '8px' })},[_c('b-tag',{style:({ width: '50px', marginRight: '8px' })},[_vm._v(\"To\")]),_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toUpdate.proposal.dayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.proposal.startTime)))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.proposal.endTime)))])])],1),_c('br'),_c('p',[_c('b',[_vm._v(_vm._s(_vm.affectedReservations.length))]),_vm._v(\" reservation\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" or reservation request\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" will be cancelled if the reservable time is updated. \")]),_vm._l((_vm.affectedReservations),function(r,i){return _c('div',{key:i,style:({ margin: '6px 0' })},[_c('p',[_c('b-tag',[_vm._v(_vm._s(r[0]))]),_vm._v(\" to \"),_c('b-tag',[_vm._v(_vm._s(r[1]))]),_vm._v(\" for \"),_c('b-tag',[_vm._v(_vm._s(r[2]))])],1)])})],2):_vm._e(),(_vm.showing === 6)?_c('div',[_c('h4',[_vm._v(\"Reservable Cancellation Confirmation\")]),_c('p',[_vm._v(\" To confirm that you would like to cancel the reservation, please press the cancel button. \")]),(\n _vm.reservationToCancel !== undefined &&\n _vm.reservationToCancel &&\n _vm.reservationIsApproved({ reservation: _vm.reservationToCancel })\n )?_c('div',[_c('p',[_vm._v(\"Refundable Amount: \"+_vm._s(_vm._f(\"currency\")((\"\" + (_vm.reservationToCancel.chargeAmount || 0)))))]),_c('p',[_vm._v(\" Service Fee Amount (Non-Refundable): \"+_vm._s(_vm._f(\"currency\")((\"\" + (_vm.reservationToCancel.nonRefundableAmount || 0))))+\" \")]),_c('p',[_vm._v(\" Convenience Fee Amount (Non-Refundable): \"+_vm._s(_vm._f(\"currency\")((\"\" + (_vm.convenienceFee || 0))))+\" \")])]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import _get from 'lodash/get'\r\n\r\nexport function data() {\r\n const authUserType = _get(this, ['$store', 'getters', 'user/authUserType'], null)\r\n const theme = _get(this, ['$store', 'state', 'theme'], {})\r\n\r\n return {\r\n theme,\r\n\r\n // this is set via the\r\n // this.$refs.reservationChooser.open ()\r\n amenityData: null,\r\n ownerID: null,\r\n amenityPaymentMethodTypes: [],\r\n amenityFees: [],\r\n amenityFeeTotal: 0,\r\n convenienceFee: 0,\r\n amenityPaymentMethod: null,\r\n amenityPaymentMethodType: null,\r\n ownerPaymentMethodID: null,\r\n newAmenityReservation: null,\r\n paymentMethods: [],\r\n authUserType,\r\n isOpen: false,\r\n loading: true,\r\n reservableTimes: [],\r\n spans: [],\r\n openings: [],\r\n reservations: [],\r\n creditCardNumber: '',\r\n cardHolderName: '',\r\n cvc: '',\r\n zipCode: '',\r\n addCreditCardPaymentMethod: false,\r\n accountAliasCreditCard: '',\r\n requestJwtToken: '',\r\n mDate: {\r\n year: null,\r\n month: null,\r\n dayOfMonth: null\r\n },\r\n\r\n /*\r\n\t\t\t1 -> main\r\n\t\t\t2 -> confirm delete panel\r\n\t\t*/\r\n showing: 1,\r\n toDelete: {},\r\n toUpdate: {\r\n proposal: {\r\n startTime: null,\r\n endTime: null\r\n }\r\n },\r\n reservationToCancel: null,\r\n allowUpdate: 0,\r\n affectedReservations: [],\r\n affectedReservationsDetails: [],\r\n\r\n masks: {\r\n creditCard: { creditCard: true }\r\n }\r\n }\r\n}\r\n","/*\r\n\timport { addAmenityReservation } from '@/services/Amenities/AmenityReservation/Post';\r\n\r\n const { successful, message } = await addAmenityReservation ({\r\n json: {\r\n amenityID: 14,\r\n reservationOwnerID: 3045,\r\n\t\t\t//\r\n\t\t\tstartDate:\r\n\t\t\tendDate:\r\n\t\t\t//\r\n reservationIdentityID: '_',\r\n //\r\n notes: \"notes about the reservation\",\r\n amenityReservation: \"?\"\r\n }\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function addAmenityReservation({ json }) {\r\n let message = 'The amenity could not be reserved.'\r\n\r\n try {\r\n const result = await kms.post(`/Amenities/AmenityReservation`, json)\r\n\r\n return {\r\n successful: true,\r\n message,\r\n result\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n successful: false,\r\n message,\r\n result: null\r\n }\r\n}\r\n","/*\r\n\timport { deleteAmenityReservableTime } from '@/services/Amenities/AmenityReservableTime/Delete';\r\n\r\n const { successful, message } = await deleteAmenityReservableTime ({\r\n amenityReservableTimeID\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function deleteAmenityReservableTime({ amenityReservableTimeID }) {\r\n let message = 'The amenity reservable time could not be deleted.'\r\n\r\n try {\r\n await kms.delete(`/Amenities/AmenityReservableTime/${amenityReservableTimeID}?forceDelete=true`)\r\n\r\n return {\r\n successful: true,\r\n message\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n successful: false,\r\n message\r\n }\r\n}\r\n","/*\r\n\timport { getAmenityReservation } from '@/services/Amenities/AmenityReservation/Get';\r\n\r\n const { successful, message, reservation } = await getAmenityReservation ({\r\n amenityReservationID: 56\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function getAmenityReservation({ amenityReservationID }) {\r\n let message = 'The amenity reservation details could not be retrieved.'\r\n\r\n try {\r\n const result = await kms.get(`/Amenities/AmenityReservation/${amenityReservationID}`)\r\n\r\n return {\r\n reservation: result,\r\n successful: true,\r\n message: ''\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n reservation: null,\r\n successful: false,\r\n message\r\n }\r\n}\r\n","/*\r\n import { findMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/findMultipleReservations';\r\n\r\n const { reservations, problems } = await findMultipleReservations ({\r\n reservationIDs: [\r\n amenityReservationID,\r\n amenityReservationID,\r\n amenityReservationID\r\n ]\r\n });\r\n if (problems.length >= 1) {\r\n\r\n }\r\n*/\r\n\r\nimport { getAmenityReservation } from '../Get'\r\n\r\nexport async function findMultipleReservations({ reservationIDs }) {\r\n const results = await Promise.all(\r\n reservationIDs.map(amenityReservationID => {\r\n return getAmenityReservation({\r\n amenityReservationID\r\n })\r\n })\r\n )\r\n\r\n const problems = []\r\n const retrievals = []\r\n\r\n for (let a = 0; a < results.length; a++) {\r\n const result = results[a]\r\n const { successful } = result\r\n\r\n if (successful === true) {\r\n retrievals.push(result.reservation)\r\n } else {\r\n problems.push(result)\r\n }\r\n }\r\n\r\n return {\r\n reservations: retrievals,\r\n problems\r\n }\r\n}\r\n","/*\r\n import { deleteMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/deleteMultiple';\r\n\r\n const { successes, problems } = await deleteMultipleReservations ({\r\n reservationIDs: [\r\n amenityReservationID,\r\n amenityReservationID,\r\n amenityReservationID\r\n ]\r\n });\r\n if (problems.length >= 1) {\r\n\r\n }\r\n*/\r\n\r\nimport { deleteAmenityReservation } from '@/services/Amenities/AmenityReservation/Delete'\r\n\r\nexport async function deleteMultipleReservations({ reservationIDs }) {\r\n const results = await Promise.all(\r\n reservationIDs.map(amenityReservationID => {\r\n return deleteAmenityReservation({\r\n amenityReservationID\r\n })\r\n })\r\n )\r\n\r\n const problems = []\r\n const successes = []\r\n\r\n for (let a = 0; a < results.length; a++) {\r\n const result = results[a]\r\n const { successful } = result\r\n\r\n if (successful === true) {\r\n successes.push(result)\r\n } else {\r\n problems.push(result)\r\n }\r\n }\r\n\r\n return {\r\n successes,\r\n problems\r\n }\r\n}\r\n","// /*\r\n// import { amenityStore } from '@/services/Amenities/Amenity/store'\r\n//})\r\n// */\r\n\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { notifyProblem, notifyError, notifyMessage } from '@/services/notify'\r\nimport kms from '@/services/kms'\r\n\r\n/* eslint-disable no-empty-pattern */\r\nconst actions = {\r\n // Update Amenity\r\n async updateAmenity({ dispatch }, { payload = {}, done }) {\r\n try {\r\n const results = await kms.put(`/Amenities/Amenity/UpdateMinimal`, payload)\r\n\r\n if (this.isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (results.amenityID > 0) {\r\n notifyMessage(`Successfully updated this amenity.`)\r\n done({ detail: results })\r\n } else {\r\n notifyError('There was a problem updating this amenity.')\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem processing the update for this amenity.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n //Make Payment Type List\r\n async getAmenityFeePaymentMethodTypes({}) {\r\n try {\r\n let amenityFeePaymentMethodTypes = [\r\n { value: 'creditcard', label: 'Credit Card (New)' },\r\n { value: 'stored', label: 'Credit Card (Saved)' }\r\n ]\r\n\r\n console.debug('amenityFeePaymentMethodTypes=' + JSON.stringify(amenityFeePaymentMethodTypes))\r\n\r\n return {\r\n list: amenityFeePaymentMethodTypes\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem retrieving the amenity fee payment type list.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n list: []\r\n }\r\n }\r\n}\r\n/* eslint-enable no-empty-pattern */\r\n\r\nVue.use(Vuex)\r\nexport const amenityStore = new Vuex.Store({\r\n state: {},\r\n mutations: {},\r\n getters: {},\r\n actions\r\n})\r\n","// /*\r\n// import { amenityFeeStore } from '@/services/Amenities/AmenityFee/store'\r\n//})\r\n// */\r\n\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { notifyProblem } from '@/services/notify'\r\nimport kms from '@/services/kms'\r\n\r\n/* eslint-disable no-empty-pattern */\r\nconst actions = {\r\n //List\r\n async getAmenityFeeList({}, { amenityID }) {\r\n try {\r\n const params = {\r\n amenityID\r\n }\r\n\r\n const results = await kms.get('/Amenities/AmenityFee/List', { params })\r\n\r\n console.debug('getAmenityFeeList=' + JSON.stringify(results))\r\n\r\n return {\r\n list: results.results\r\n }\r\n } catch (exception) {\r\n notifyProblem(`The Amenity Fee list could not be retrieved.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n list: []\r\n }\r\n }\r\n}\r\n/* eslint-enable no-empty-pattern */\r\n\r\nVue.use(Vuex)\r\nexport const amenityFeeStore = new Vuex.Store({\r\n state: {},\r\n mutations: {},\r\n getters: {},\r\n actions\r\n})\r\n","/*\r\n\timport { compareTimes } from \"@/utilities/time/compare\"\r\n\r\n\tconst a = \"22:00:00\";\r\n\tconst b = \"09:00:00\";\r\n\r\n\tconst comparison = compareTimes (a, b);\r\n\r\n\t// results:\r\n\t// 0 -> same\r\n\t// 1 -> a (1st param) is later\r\n\t// 2 -> b (2nd param) is later\r\n\t//\r\n\t// 3 -> indeterminable\r\n\t// 4 -> indeterminable\r\n\t// 5 -> indeterminable\r\n\t// 6 -> indeterminable\r\n*/\r\n\r\n/*\r\n\t// a >= b\r\n\tif ([ 0, 1 ].includes (compareTimes (a, b))) {\r\n\t\t\r\n\t}\r\n\r\n\t// a > b\r\n\tif ([ 1 ].includes (compareTimes (a, b))) {\r\n\t\t\r\n\t}\r\n\r\n\t// b >= a\r\n\tif ([ 0, 2 ].includes (compareTimes (a, b))) {\r\n\t\r\n\t}\r\n\r\n\t// b > a\r\n\tif ([ 2 ].includes (compareTimes (a, b))) {\r\n\t\r\n\t}\r\n*/\r\n\r\n/*\r\n\t00:00:00 to 24:00:00\r\n*/\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\n\r\nexport function compareTimes(a, b) {\r\n try {\r\n const aInvalid = timeIsInvalid(a)\r\n if (aInvalid) {\r\n console.error(aInvalid)\r\n return 3\r\n }\r\n\r\n const bInvalid = timeIsInvalid(b)\r\n if (bInvalid) {\r\n console.error(bInvalid)\r\n return 4\r\n }\r\n\r\n // p -> parsed\r\n const p = {\r\n a: a.split(':').map(e => parseInt(e)),\r\n b: b.split(':').map(e => parseInt(e))\r\n }\r\n\r\n // if a and b are both either 24:00:00 or 00:00:00\r\n if ([a, b].filter(t => ['24:00:00', '00:00:00'].includes(t)).length === 2) {\r\n return 0\r\n }\r\n\r\n for (let c = 0; c <= 2; c++) {\r\n if (p.a[c] > p.b[c]) {\r\n return 1\r\n }\r\n if (p.b[c] > p.a[c]) {\r\n return 2\r\n }\r\n }\r\n\r\n if (a === b) {\r\n return 0\r\n }\r\n\r\n return 5\r\n } catch (x) {\r\n // x -> exception\r\n console.error(x)\r\n }\r\n\r\n return 6\r\n}\r\n","/*\r\n import { getTimeSpans } from '@/utilities/time/getSpans'\r\n\r\n\tconst { spans, openings } = getTimeSpans ({\r\n\t\tavailabilities: [\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ]\r\n\t\t],\r\n\t\treservations: [\r\n\t\t\t[ from, to ]\r\n\t\t]\r\n\t})\r\n*/\r\n\r\n/*\r\n\tspans -> condensed availabilities\r\n\t\tfor example:\r\n\t\t\tavailabilities:\r\n\t\t\t\t00:00:00 to 04:00:00\r\n\t\t\t\t00:00:00 to 05:00:00\r\n\r\n\t\t\tspans -> [ 00:00:00, 05:00:00 ]\r\n\r\n\topenings -> spans without reservations\r\n\t\t\tavailabilities:\r\n\t\t\t\t00:00:00 to 04:00:00\r\n\t\t\t\t00:00:00 to 05:00:00\r\n\r\n\t\t\treservations:\r\n\t\t\t\t02:00:00 to 03:00:00\r\n\r\n\t\t\topenings -> [\r\n\t\t\t\t[ 00:00:00, 02:00:00 ],\r\n\t\t\t\t[ 03:00:00, 05:00:00 ]\r\n\t\t\t]\r\n*/\r\n\r\n/*\r\n\te.g.\r\n\t\t\"08:00:00\", \"10:00:00\"\r\n\t\t\"07:00:00\", \"09:00:00\"\r\n\r\n\t\t-> [ \r\n\t\t\t\t[ \"07:00:00\", \"10:00:00\" ]\r\n\t\t\t]\r\n*/\r\n\r\nimport cloneDeep from 'lodash/cloneDeep'\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\nimport { compareTimes } from '@/utilities/time/compare'\r\n\r\nfunction determineSpans({ availabilities }) {\r\n try {\r\n const issues = []\r\n const spans = []\r\n\r\n // l -> location\r\n for (let l = 0; l < availabilities.length; l++) {\r\n const [b1, b2] = availabilities[l]\r\n const b = availabilities[l]\r\n\r\n const b1Invalid = timeIsInvalid(b1)\r\n if (b1Invalid) {\r\n issues.push({\r\n invalid: l,\r\n b1Invalid\r\n })\r\n console.debug(b1Invalid)\r\n continue\r\n }\r\n const b2Invalid = timeIsInvalid(b2)\r\n if (b2Invalid) {\r\n issues.push({\r\n invalid: l,\r\n b2Invalid\r\n })\r\n console.debug({\r\n b,\r\n invalid: l,\r\n b2Invalid\r\n })\r\n continue\r\n }\r\n\r\n if (spans.length === 0) {\r\n spans.push(b)\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\tlooking for overlaps\r\n\r\n\t\t\t\t\tpossibilities:\r\n\t\t\t\t\t\tno overlaps -> add new span\r\n\t\t\t\t\t\tone overlap -> join spans\r\n\t\t\t\t\t\t2+ overlaps -> join all spans\r\n\r\n\t\t\t\texample:\r\n\t\t\t\t\tnew: 5 to 9\r\n\r\n\t\t\t\t\tspans:\r\n\t\t\t\t\t\t4 to 6 -> [ 4 to 9, 8 to 10 ] after first iteration\r\n\t\t\t\t\t\t8 to 10 -> [ 4 to 10 ] after second iteration\r\n\t\t\t*/\r\n let add = true\r\n for (let l2 = 0; l2 < spans.length; l2++) {\r\n const a = spans[l2]\r\n const [a1, a2] = a\r\n\r\n const comparisons = {\r\n 1: compareTimes(a1, b1),\r\n 2: compareTimes(a1, b2),\r\n 3: compareTimes(a2, b1),\r\n 4: compareTimes(a2, b2)\r\n }\r\n\r\n const a1b1 = comparisons[1]\r\n const a1b2 = comparisons[2]\r\n const a2b1 = comparisons[3]\r\n const a2b2 = comparisons[4]\r\n\r\n /*\r\n\t\t\t\t\tTODO:\r\n\t\t\t\t\t\tcheck if comparison is indeterminable,\r\n\t\t\t\t\t\tif any are indeterminable \r\n\t\t\t\t\t\t(that is the times are invalid..., etc.?)\r\n\t\t\t\t\t\tthen.....\r\n\r\n\t\t\t\t\t\t\tskip... and add the issue\r\n\r\n\t\t\t\t\t\tinvalid times should have been noticed earlier\r\n\t\t\t\t\t\tin the l1 (outer) loop though.\r\n\t\t\t\t*/\r\n\r\n /*\r\n\t\t\t\t\ta1 === b1\r\n\t\t\t\t*/\r\n if (a1b1 === 0) {\r\n const a2b2 = comparisons[4]\r\n\r\n //\r\n /*\r\n\t\t\t\t\t\ta2 === b2 -> ignore b\r\n\t\t\t\t\t\t\ta: |\r\n\t\t\t\t\t\t\tb: |\r\n\r\n\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 0) {\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 > b2 -> ignore b\r\n\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 1) {\r\n add = false\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 < b2 -> overwrite a\r\n\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 2) {\r\n spans[l2] = b\r\n add = false\r\n break\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\ta1 > b1\r\n\t\t\t\t*/\r\n if (a1b1 === 1) {\r\n /*\r\n\t\t\t\t\t\ta2 === b2 -> overwrite a\r\n\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t b: [ ]\r\n\r\n\t\t\t\t\t\t a: |\r\n\t\t\t\t\t\t b: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 0) {\r\n spans[l2] = b\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 > b2\r\n\t\t\t\t\t*/\r\n if (a2b2 === 1) {\r\n /*\r\n\t\t\t\t\t\t\ta1 === b2 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\t\ta1 < b2 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t b: [ ]\r\n\t\t\t\t\t\t*/\r\n if ([0, 2].includes(a1b2)) {\r\n spans[l2] = [b1, a2]\r\n add = false\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t a1 > b2:\r\n\t\t\t\t\t\t\t a: [ ]\r\n\t\t\t\t\t\t\t b: [ ]\r\n\r\n\t\t\t\t\t\t\tif \"add\" is never set to false,\r\n\t\t\t\t\t\t\tthis \"b\" span will be added\r\n\t\t\t\t\t\t\tto the span array \r\n\t\t\t\t\t\t*/\r\n if (a1b2 === 1) {\r\n continue\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 < b2 -> overwrite a\r\n\t\t\t\t\t*/\r\n if (a2b2 === 2) {\r\n spans[l2] = b\r\n add = false\r\n continue\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\ta1 < b1\r\n\t\t\t\t*/\r\n if (a1b1 === 2) {\r\n /*\r\n\t\t\t\t\t\ta2 === b2 -> ignore b\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\ta: [ |\r\n\t\t\t\t\t\tb: |\r\n\t\t\t\t\t*/\r\n if (a2b2 === 0) {\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\ta2 > b2 -> ignore b\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 1) {\r\n add = false\r\n continue\r\n }\r\n\r\n // a2 < b2\r\n if (a2b2 === 2) {\r\n /*\r\n\t\t\t\t\t\t\ta2 === b1 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\t\ta2 > b1 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t\t*/\r\n if ([0, 1].includes(a2b1)) {\r\n spans[l2] = [a1, b2]\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\ta2 < b1 \r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\t\t\tif \"add\" is never set to false,\r\n\t\t\t\t\t\t\t\tthis \"b\" span will be added\r\n\t\t\t\t\t\t\t\tto the span array \r\n\t\t\t\t\t\t*/\r\n if (a2b1 === 2) {\r\n continue\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (add) {\r\n spans.push(b)\r\n continue\r\n }\r\n }\r\n\r\n return {\r\n spans,\r\n issues\r\n }\r\n } catch (x) {\r\n console.debug(x)\r\n }\r\n\r\n return {\r\n spans: [],\r\n issues: []\r\n }\r\n}\r\n\r\nexport function getTimeSpans({ availabilities, reservations = [] }) {\r\n try {\r\n const { spans, issues: sIssues } = determineSpans({ availabilities })\r\n\r\n /*\r\n\t\t\tassuming that all spans are sequential with no overlap...\r\n\t\t*/\r\n\r\n /*\r\n\t\t\tpossible that reservation is outside of a span...\r\n\r\n\t\t\t\te.g.\r\n\r\n\t\t\t\t\ts: [||||||] [||||||||]\r\n\t\t\t\t\tr: [|||||]\r\n\t\t*/\r\n\r\n // f -> focus\r\n let oIssues = []\r\n const openings = cloneDeep(spans)\r\n for (let f1 = 0; f1 < reservations.length; f1++) {\r\n const reservation = reservations[f1]\r\n const [r1, r2] = reservation\r\n\r\n //\r\n // resolutionFound ->\r\n // \tbroken or good\r\n // before the completion of the loop\r\n //\r\n let resolutionFound = false\r\n for (let f2 = 0; f2 < openings.length; f2++) {\r\n const opening = openings[f2]\r\n const [o1, o2] = opening\r\n\r\n /*\r\n\t\t\t\t\tif r1 >= s1 and r2 <= s2 -> divide up the span\r\n\r\n\t\t\t\t\t\texample:\r\n\t\t\t\t\t\t\tspan: \t\t\t\t[ \"00:00:00\", \"24:00:00\" ] \r\n\t\t\t\t\t\t\treservation: \t[ \"04:00:00\", \"08:00:00\" ]\r\n\r\n\t\t\t\t\t\topenings [\r\n\t\t\t\t\t\t\t[ \"00:00:00\", \"04:00:00\" ],\r\n\t\t\t\t\t\t\t[ \"08:00:00\", \"24:00:00\" ],\r\n\t\t\t\t\t\t]\r\n\t\t\t\t*/\r\n\r\n const o1r1 = compareTimes(o1, r1)\r\n const o1r2 = compareTimes(o1, r2)\r\n const o2r1 = compareTimes(o2, r1)\r\n const o2r2 = compareTimes(o2, r2)\r\n\r\n if (o1r1 === 0) {\r\n if (o2r2 === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservations and openings should both\r\n // be spans of time, not points\r\n //\r\n // o: |\r\n // r: |\r\n //\r\n resolutionFound = true\r\n break\r\n }\r\n if (o2r2 === 1) {\r\n if (compareTimes(r1, r2) === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservations should both\r\n // be spans of time, not points\r\n // o: [ ]\r\n // r: |\r\n //\r\n oIssues.push({\r\n reservation\r\n })\r\n }\r\n\r\n //\r\n // o: [ ]\r\n // r: [ ]\r\n //\r\n\r\n openings[f2] = [r2, o2]\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n if (o2r2 === 2) {\r\n // ⚠ ⚠ ⚠\r\n // reservation should either be fully encapsulated\r\n // by openings or not bordering on an opening\r\n //\r\n // o: [ ]\r\n // r: [ ]\r\n //\r\n openings.splice(f2, 1)\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n }\r\n\r\n // o1 > r1\r\n if (o1r1 === 1) {\r\n /*\r\n\t\t\t\t\t\to1 === r2\r\n\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n\r\n if (o2r2 === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservation should either be fully encapsulated\r\n // by openings or not bordering on an opening\r\n\r\n openings.splice(f2, 1)\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n // o2 > r2\r\n if (o2r2 === 1) {\r\n /*\r\n\t\t\t\t\t\t\to1 === r2\r\n\t\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t\t*/\r\n if (o1r2 === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservation should either be fully encapsulated\r\n // by openings or not bordering on an opening\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\to1 > r2\r\n\t\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t\t*/\r\n\r\n if (o1r2 === 1) {\r\n // potentially problematic\r\n // reservation availability match not yet found\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\to1 < r2\r\n\t\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t\t*/\r\n if (o1r2 === 2) {\r\n openings[f2] = [r2, o2]\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\to2 < r2\r\n\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n if (o2r2 === 2) {\r\n openings.splice(f2, 1)\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n }\r\n\r\n // o1 < r1\r\n if (o1r1 === 2) {\r\n if (o2r2 === 0) {\r\n openings[f2] = [o1, r1]\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\to2 > r2\r\n\t\t\t\t\t\t\to: [ ] \r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n if (o2r2 === 1) {\r\n openings[f2] = [o1, r1]\r\n openings.splice(f2 + 1, 0, [r2, o2])\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\to2 < r2\r\n\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n if (o2r2 === 2) {\r\n if (o2r1 === 0) {\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n if (o2r1 === 1) {\r\n openings[f2] = [o1, r1]\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n if (o2r2 === 2) {\r\n continue\r\n }\r\n }\r\n }\r\n\r\n //\r\n // possiby from:\r\n //\t\tinvalid time -> indeterminable comparison\r\n //\r\n\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n continue\r\n }\r\n\r\n if (!resolutionFound) {\r\n oIssues.push({\r\n reservation\r\n })\r\n }\r\n }\r\n\r\n return { spans, openings, oIssues, sIssues }\r\n } catch (x) {\r\n console.error(x)\r\n }\r\n\r\n return {\r\n spans: [],\r\n openings: []\r\n }\r\n}\r\n\r\n////////////////////\r\n","/*\r\n\timport { timeIsAvailable } from \"@/utilities/time/isAvailable\"\r\n\r\n\tconst { \r\n\t\tavailable // boolean \r\n\t} = timeIsAvailable ({\r\n\t\tcheck: [ from, to ],\r\n\t\tavailabilities: [\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ]\r\n\t\t],\r\n\t\treservations: [\r\n\t\t\t[ from, to ]\r\n\t\t]\r\n\t})\r\n*/\r\nimport { getTimeSpans } from '@/utilities/time/getSpans'\r\nimport { compareTimes } from '@/utilities/time/compare'\r\n\r\nexport function timeIsAvailable({ check, availabilities, reservations }) {\r\n const [c1, c2] = check\r\n\r\n const { openings } = getTimeSpans({\r\n availabilities,\r\n reservations\r\n })\r\n\r\n for (let f = 0; f < openings.length; f++) {\r\n const [o1, o2] = openings[f]\r\n\r\n /*\r\n\t\t\tavail if:\r\n\t\t\t\to: [ ]\r\n\t\t\t\tc:\t [ ]\r\n\t\t*/\r\n // c1 >= o1\r\n // c2 <= o2\r\n if ([0, 1].includes(compareTimes(c1, o1)) && [0, 2].includes(compareTimes(c2, o2))) {\r\n return {\r\n available: true\r\n }\r\n }\r\n }\r\n\r\n return {\r\n available: false\r\n }\r\n}\r\n","/*\r\n\timport { findReliantReservations } from '@/utilities/amenities/findReliantReservations'\r\n\r\n\tconst { reliantReservations } = findReliantReservations ({\r\n\t\t// the reservable time that is slated for removal\r\n\t\tamenityReservableTimeID,\r\n\r\n\t\treservableTimes: [],\r\n\t\treservations: []\r\n\t})\r\n*/\r\n\r\n/*\t\r\n\tspliced reservable times\r\n\treservation times\r\n\r\n\tchecking for reservations that would be invalidated\r\n*/\r\n\r\nimport { timeIsAvailable } from '@/utilities/time/isAvailable'\r\nimport { wkDaysNums } from '@/utilities/Date/constants'\r\n\r\nimport _get from 'lodash/get'\r\nimport moment from 'moment'\r\n\r\nexport function findReliantReservations({\r\n amenityReservableTimeID,\r\n reservableTimes,\r\n reservations\r\n}) {\r\n /*\r\n filters the reservable time with the ID specified\r\n */\r\n const blocks = {}\r\n reservableTimes.filter(r => {\r\n const id = _get(r, 'amenityReservableTimeID', '')\r\n if (typeof id === 'number' && id === amenityReservableTimeID) {\r\n return false\r\n }\r\n\r\n if (!Array.isArray(blocks[r.dayOfWeek])) {\r\n blocks[r.dayOfWeek] = []\r\n }\r\n blocks[r.dayOfWeek].push([r.startTime, r.endTime])\r\n\r\n return true\r\n })\r\n\r\n /*\r\n\t\tcheck for events that are on days that\r\n\t\tmight no longer have a reservable time.\r\n\r\n\t\tFor example:\r\n\t\t\tevents: \r\n\t\t\t\tTuesday, 5am to 6am\r\n\t\t\t\tTuesday, 5am to 11am\r\n\t\t\t\tFriday, 6am to 9am\r\n\t\t\t\tFriday, 4am to 7am\r\n\r\n\t\t\tblocks:\r\n\t\t\t\tTuesday, 3am to 11am\r\n\t\t\t\t[Friday, 4am to 10pm] -> up for removal\r\n\t*/\r\n\r\n const reliantReservations = []\r\n for (let a = 0; a < reservations.length; a++) {\r\n const reservation = reservations[a]\r\n\r\n const reservationDayOfWeek = wkDaysNums[moment(_get(reservation, 'startDate', '')).day() + 1]\r\n const reservableTimesOnDay = blocks[reservationDayOfWeek]\r\n\r\n if (!Array.isArray(reservableTimesOnDay) || reservableTimesOnDay.length === 0) {\r\n reliantReservations.push(reservation)\r\n continue\r\n }\r\n\r\n const check = [\r\n _get(reservation, 'startDate', '').split('T')[1],\r\n _get(reservation, 'endDate', '').split('T')[1]\r\n ]\r\n const availabilities = reservableTimesOnDay\r\n\r\n const {\r\n available // boolean\r\n } = timeIsAvailable({\r\n check,\r\n availabilities,\r\n reservations: []\r\n })\r\n if (!available) {\r\n reliantReservations.push(reservation)\r\n }\r\n }\r\n\r\n return {\r\n reliantReservations\r\n }\r\n}\r\n","/*\r\n\timport { getDuration } from '@/utilities/time/getDuration'\r\n\r\n\t// in seconds\r\n\tconst seconds = getDuration ([ \"00:00:00\", \"05:00:00\" ]);\r\n*/\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\n\r\nexport function getDuration([t1, t2]) {\r\n if (timeIsInvalid(t1)) {\r\n return null\r\n }\r\n\r\n if (timeIsInvalid(t2)) {\r\n return null\r\n }\r\n\r\n const t1Parsed = t1.split(':')\r\n const t2Parsed = t2.split(':')\r\n\r\n const parsed = {\r\n t1: {\r\n h: parseInt(t1Parsed[0]),\r\n m: parseInt(t1Parsed[1]),\r\n s: parseInt(t1Parsed[2])\r\n },\r\n t2: {\r\n h: parseInt(t2Parsed[0]),\r\n m: parseInt(t2Parsed[1]),\r\n s: parseInt(t2Parsed[2])\r\n }\r\n }\r\n\r\n const inBetween =\r\n parsed.t2.h * 3600 +\r\n parsed.t2.m * 60 +\r\n parsed.t2.s -\r\n (parsed.t1.h * 3600 + parsed.t1.m * 60 + parsed.t1.s)\r\n\r\n return inBetween\r\n}\r\n","import _get from 'lodash/get'\r\nimport _cloneDeep from 'lodash/cloneDeep'\r\nimport moment from 'moment'\r\nimport { notifyMessage, notifyProblem, notifyError } from '@/services/notify'\r\nimport { addAmenityReservation } from '@/services/Amenities/AmenityReservation/Post'\r\nimport { deleteAmenityReservableTime } from '@/services/Amenities/AmenityReservableTime/Delete'\r\nimport { deleteAmenityReservation } from '@/services/Amenities/AmenityReservation/Delete'\r\nimport { findMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/findMultipleReservations'\r\nimport { deleteMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/deleteMultiple'\r\nimport { addReservableTime } from '@/services/Amenities/AmenityReservableTime/Post'\r\nimport { approveAmenityReservation } from '@/services/Amenities/AmenityReservation/ApproveReservation'\r\nimport { amenityStore } from '@/services/Amenities/Amenity/store'\r\nimport { amenityFeeStore } from '@/services/Amenities/AmenityFee/store'\r\nimport { getTimeSpans } from '@/utilities/time/getSpans'\r\nimport { compareTimes } from '@/utilities/time/compare'\r\nimport { timeIsAvailable } from '@/utilities/time/isAvailable'\r\nimport { monthNums } from '@/utilities/Date/constants'\r\nimport { toMeridian } from '@/utilities/time/toMeridian'\r\nimport { findReliantReservations } from '@/utilities/amenities/findReliantReservations'\r\nimport { getDuration } from '@/utilities/time/getDuration'\r\nimport { reservationIsApproved } from '@/utilities/amenities/reservationIsApproved'\r\nimport { getArray } from '@/utilities/get/Array'\r\nimport { outstandingPayment } from '@/services/Payments/HomeOwner/OutstandingPayment/store'\r\nimport { amenityReservationStore } from '@/services/Amenities/AmenityReservation/store'\r\nimport { epicGateway } from '@/services/EpicGateway/store'\r\nimport luhn from 'luhn'\r\n\r\nexport const methods = {\r\n _get,\r\n toMeridian,\r\n reservationIsApproved,\r\n\r\n back() {\r\n this.showing = 1\r\n },\r\n show(num) {\r\n this.showing = num\r\n this.$forceUpdate()\r\n },\r\n async closeModal() {\r\n this.isOpen = false\r\n },\r\n\r\n async approveReservationRequest({ reservation }) {\r\n this.loading = true\r\n\r\n const amenityData = this.amenityData\r\n\r\n const amenityReservationID = _get(reservation, [3, 'amenityReservationID'], null)\r\n const amenityReservableTimes = _get(amenityData, ['amenityReservableTimes'], null)\r\n const amenityReservations = _get(amenityData, ['amenityReservations'], null)\r\n\r\n const { successful, message } = await approveAmenityReservation({\r\n amenityReservationID\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n return\r\n } else {\r\n console.debug('reservation=' + JSON.stringify(reservation))\r\n if (reservation[3] !== undefined && reservation[3].chargeAmount !== undefined) {\r\n let chargedAmount =\r\n reservation[3].chargeAmount +\r\n reservation[3].nonRefundableAmount +\r\n this.convenienceFeeFromPercent(\r\n reservation[3].chargeAmount + reservation[3].nonRefundableAmount,\r\n reservation[3].convenienceFeeAmount\r\n )\r\n\r\n notifyMessage(\r\n `The home owner's card was charged, $` +\r\n `${chargedAmount ||\r\n 0}. The home owner 'Billing Account Activity' section will show when the payment is processed.`\r\n )\r\n }\r\n }\r\n\r\n this.parseReservableTimes({\r\n list: amenityReservableTimes\r\n })\r\n\r\n await this.parseReservations({\r\n list: amenityReservations\r\n })\r\n\r\n this.determineAvailability()\r\n\r\n this.loading = false\r\n },\r\n\r\n //\tWhen modal is opened\r\n parseReservableTimes({ list }) {\r\n const dayOfWeek = this.dayOfWeek\r\n\r\n const filtered = list.filter(entry => {\r\n return _get(entry, 'dayOfWeek', '') === dayOfWeek\r\n })\r\n\r\n const parsed = filtered.map(entry => {\r\n return [_get(entry, 'startTime', ''), _get(entry, 'endTime', ''), entry]\r\n })\r\n\r\n const { spans } = getTimeSpans({\r\n availabilities: filtered.map(entry => {\r\n return [_get(entry, 'startTime', ''), _get(entry, 'endTime', ''), entry]\r\n })\r\n })\r\n\r\n // this is the calculated availability\r\n this.spans = spans\r\n\r\n this.reservableTimes = parsed\r\n this.filteredReservableTimes = filtered\r\n },\r\n\r\n async parseReservations({ list }) {\r\n const mDate = this.mDate\r\n\r\n const filtered = list.filter(entry => {\r\n const date = moment(entry.startDate)\r\n const year = date.year()\r\n const month = date.month() + 1\r\n const dayOfMonth = date.date()\r\n\r\n if (year == mDate.year && month == mDate.month && dayOfMonth == mDate.dayOfMonth) {\r\n return true\r\n }\r\n\r\n return false\r\n })\r\n\r\n const reservationIDs = []\r\n for (let a = 0; a < filtered.length; a++) {\r\n reservationIDs.push(_get(filtered, [a, 'amenityReservationID'], null))\r\n }\r\n\r\n const { reservations, problems } = await findMultipleReservations({\r\n reservationIDs\r\n })\r\n if (problems.length >= 1) {\r\n notifyProblem(`The details about ${problems.length} could not be retrieved successfully.`)\r\n }\r\n\r\n this.reservations = reservations.map(entry => {\r\n return [\r\n moment(entry.startDate).format('HH:mm:ss'),\r\n moment(entry.endDate).format('HH:mm:ss'),\r\n _get(entry, ['identityInformation', 'name'], ''),\r\n entry\r\n ]\r\n })\r\n\r\n this.filteredReservations = filtered\r\n },\r\n determineAvailability() {\r\n const { openings } = getTimeSpans({\r\n availabilities: this.spans,\r\n reservations: this.reservations\r\n })\r\n\r\n this.openings = openings\r\n },\r\n async open({ amenityData, dayOfMonth, month, year }) {\r\n this.loading = true\r\n\r\n this.mDate = {\r\n year,\r\n month,\r\n monthStr: monthNums[month],\r\n dayOfMonth\r\n }\r\n\r\n const authUser = _get(this, ['$store', 'getters', 'user/authUser'], null)\r\n\r\n this.ownerID = this.ownerId ? this.ownerId : _get(authUser, ['ownerID'], null)\r\n\r\n this.showing = 1\r\n this.toDelete = {}\r\n this.reservableTimes = []\r\n this.spans = []\r\n this.openings = []\r\n this.reservations = []\r\n this.allowUpdate = 0\r\n this.affectedReservations = []\r\n\r\n this.date = moment(`${year}-${month}-${dayOfMonth}`, 'YYYY-MM-DD')\r\n this.dayOfWeek = this.date.format('dddd')\r\n this.amenityData = amenityData\r\n\r\n this.parseReservableTimes({\r\n list: getArray(amenityData, 'amenityReservableTimes', [])\r\n })\r\n\r\n await this.parseReservations({\r\n list: getArray(amenityData, 'amenityReservations', [])\r\n })\r\n\r\n this.determineAvailability()\r\n\r\n console.debug('in open amenityData=' + JSON.stringify(this.amenityData.amenityID))\r\n\r\n await this.loadAmenityFees(this.amenityData.amenityID)\r\n\r\n this.isOpen = true\r\n this.loading = false\r\n },\r\n\r\n //\tCancelling Reservations\r\n async confirmCancelReservation({ reservation }) {\r\n this.showing = 6\r\n this.reservationToCancel = reservation[3]\r\n\r\n if (\r\n this.reservationToCancel.convenienceFeeAmount !== undefined &&\r\n this.reservationToCancel.convenienceFeeAmount\r\n ) {\r\n this.convenienceFee = this.convenienceFeeFromPercent(\r\n this.reservationToCancel.chargeAmount + this.reservationToCancel.nonRefundableAmount,\r\n this.reservationToCancel.convenienceFeeAmount || 0\r\n )\r\n console.debug('this.convenienceFee=' + this.convenienceFee)\r\n }\r\n },\r\n\r\n convenienceFeeFromPercent(amount, percent) {\r\n if (amount && percent) {\r\n try {\r\n const percentage = percent * 0.01\r\n const percentAmount = amount * percentage\r\n return percentAmount\r\n } catch (error) {\r\n console.debug('error in convenienceFeeFromPercent=' + error)\r\n return 0\r\n }\r\n }\r\n },\r\n\r\n async cancelReservation(isOrphan) {\r\n this.loading = true\r\n\r\n const { successful, message } = await deleteAmenityReservation({\r\n amenityReservationID: this.reservationToCancel.amenityReservationID\r\n })\r\n\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservationCancelled')\r\n await new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve()\r\n }, 300)\r\n }).then(() => {\r\n if (this.reservationIsApproved({ reservation: this.reservationToCancel })) {\r\n console.debug('cancelWithRefund in chooser...')\r\n const payload = {\r\n amenityReservationID: this.reservationToCancel.amenityReservationID\r\n }\r\n\r\n let chargeAmount = 0\r\n let nonRefundableAmount = 0\r\n\r\n if (\r\n this.reservationToCancel !== undefined &&\r\n this.reservationToCancel &&\r\n this.reservationToCancel.chargeAmount\r\n ) {\r\n chargeAmount = this.reservationToCancel.chargeAmount\r\n }\r\n\r\n if (\r\n this.reservationToCancel.nonRefundableAmount !== undefined &&\r\n this.reservationToCancel.nonRefundableAmount\r\n ) {\r\n nonRefundableAmount = this.reservationToCancel.nonRefundableAmount\r\n\r\n if (\r\n this.reservationToCancel.convenienceFeeAmount !== undefined &&\r\n this.reservationToCancel.convenienceFeeAmount\r\n ) {\r\n nonRefundableAmount = nonRefundableAmount + this.convenienceFee\r\n }\r\n }\r\n\r\n amenityReservationStore.dispatch('cancelWithRefund', {\r\n payload,\r\n done: detail => {\r\n if (detail) {\r\n console.debug('refunded cancellation= ' + JSON.stringify(detail))\r\n\r\n if (chargeAmount > 0) {\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n let notifymessage =\r\n `This reservation was successfully cancelled with a refund of, $` +\r\n formatter.format(chargeAmount) +\r\n `. `\r\n if (nonRefundableAmount > 0) {\r\n notifymessage =\r\n notifymessage +\r\n `There is a non-refundable amount for, $` +\r\n formatter.format(nonRefundableAmount) +\r\n `.`\r\n }\r\n\r\n notifyMessage(notifymessage)\r\n } else {\r\n notifyMessage('This reservation has been successfully cancelled with a refund.')\r\n }\r\n }\r\n }\r\n })\r\n } else {\r\n if (isOrphan === undefined || !isOrphan) {\r\n notifyMessage('This reservation has been successfully cancelled.')\r\n }\r\n }\r\n })\r\n\r\n this.loading = false\r\n this.reservationToCancel = null\r\n this.refreshParent('cancelandrefund')\r\n this.isOpen = false\r\n },\r\n\r\n //\tMaking Reservations or Reservation Requests\r\n async ensureIsAvailable({ t1, t2 }) {\r\n const comparison = compareTimes(t2, t1)\r\n\r\n if (comparison === 0) {\r\n notifyProblem(\"The reservation can't start and end at the same time.\")\r\n this.loading = false\r\n return\r\n }\r\n if (comparison === 2) {\r\n notifyProblem(\"The reservation can't end before it starts.\")\r\n this.loading = false\r\n return\r\n }\r\n if (comparison >= 3) {\r\n notifyProblem('Please enter proper times for the start and end times.')\r\n console.error({ t1, t2, comparison })\r\n this.loading = false\r\n return\r\n }\r\n\r\n // const [sHour, sMinute, sSecond] = t1.split(':')\r\n // const [eHour, eMinute, eSecond] = t2.split(':')\r\n\r\n const amenityData = this.amenityData\r\n const reservationDurationLimitInMinutes = _get(\r\n amenityData,\r\n 'reservationDurationLimitInMinutes',\r\n 0\r\n )\r\n\r\n if (\r\n typeof reservationDurationLimitInMinutes === 'number' &&\r\n reservationDurationLimitInMinutes > 0\r\n ) {\r\n const proposedDurationSeconds = getDuration([t1, t2])\r\n if (typeof proposedDurationSeconds !== 'number' || proposedDurationSeconds <= 0) {\r\n notifyProblem(\r\n `A problem occurred and the duration of the reservation could not be determined.`\r\n )\r\n this.loading = false\r\n return\r\n }\r\n\r\n const reservationDurationLimitInSeconds = reservationDurationLimitInMinutes * 60\r\n if (reservationDurationLimitInSeconds < proposedDurationSeconds) {\r\n notifyProblem(\r\n `Reservations for this amenity cannot exceed ${reservationDurationLimitInMinutes} minutes.`\r\n )\r\n this.loading = false\r\n return\r\n }\r\n }\r\n\r\n const {\r\n available // boolean\r\n } = timeIsAvailable({\r\n check: [t1, t2],\r\n availabilities: this.openings,\r\n reservations: []\r\n })\r\n if (!available) {\r\n notifyProblem(\"That time slot doesn't seem to be available.\")\r\n this.loading = false\r\n return\r\n }\r\n\r\n return true\r\n },\r\n async reserve() {\r\n this.loading = true\r\n\r\n const t1 = this.$refs.fromTime.getValue()[24]\r\n const t2 = this.$refs.toTime.getValue()[24]\r\n\r\n const isAvailable = await this.ensureIsAvailable({ t1, t2 })\r\n if (isAvailable !== true) {\r\n return\r\n }\r\n\r\n const reservationOwnerID = this.ownerId\r\n ? this.ownerId\r\n : _get(this, ['$store', 'getters', 'user/authUser', 'ownerID'], null)\r\n let { year, month, dayOfMonth } = this.mDate\r\n\r\n month = month.toString()\r\n if (month.length === 1) {\r\n month = '0' + month\r\n }\r\n\r\n dayOfMonth = dayOfMonth.toString()\r\n if (dayOfMonth.length === 1) {\r\n dayOfMonth = '0' + dayOfMonth\r\n }\r\n\r\n const startDate = `${year}-${month}-${dayOfMonth}T${t1}`\r\n const endDate = `${year}-${month}-${dayOfMonth}T${t2}`\r\n\r\n const { successful, message } = await addAmenityReservation({\r\n json: {\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null),\r\n reservationOwnerID,\r\n startDate,\r\n endDate,\r\n reservationIdentityID: '_',\r\n notes: 'notes about the reservation',\r\n amenityReservation: '?'\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservationAdded')\r\n\r\n this.loading = false\r\n this.isOpen = false\r\n this.refreshParent()\r\n notifyMessage('The reservation request has been sent.')\r\n },\r\n\r\n async onFormSubmit() {\r\n let validationMessages = ''\r\n\r\n console.debug('in onFormSubmit...' + this.amenityPaymentMethodType)\r\n\r\n if (!this.amenityID || !this.reservationOwnerID || !this.startDate || !this.endDate) {\r\n validationMessages = `Please press 'Back' and select a start and end time for your amenity.`\r\n }\r\n\r\n //validation\r\n if (this.amenityPaymentMethodType) {\r\n if (this.amenityPaymentMethodType === 'stored') {\r\n if (!this.ownerPaymentMethodID) {\r\n validationMessages =\r\n validationMessages +\r\n 'Selecting a stored credit card is required to proceed with this transaction.'\r\n }\r\n } else if (this.amenityPaymentMethodType === 'creditcard') {\r\n //Validate credit card number with luhn\r\n var isValid = luhn.validate(this.creditCardNumber)\r\n\r\n if (isValid == false) {\r\n notifyError('Please enter a valid credit card number.')\r\n return\r\n }\r\n\r\n if (!this.creditCardNumber) {\r\n validationMessages = validationMessages + 'The credit card number is required.'\r\n }\r\n\r\n if (!this.cardHolderName) {\r\n validationMessages = validationMessages + ' The credit card holder name is required.'\r\n }\r\n\r\n const expMonthYear = this.$refs.cardExpirationDateComponent.getValue()\r\n if (!expMonthYear.month) {\r\n validationMessages = validationMessages + ' The expiration month is required.'\r\n }\r\n\r\n if (!expMonthYear.year) {\r\n validationMessages = validationMessages + ' The expiration year is required.'\r\n }\r\n\r\n if (!this.cvc) {\r\n validationMessages = validationMessages + ' The credit card security code is required.'\r\n }\r\n }\r\n\r\n if (this.amenityFeeTotal === 0) {\r\n validationMessages =\r\n validationMessages +\r\n ' The total fee must be a non-zero value for a transaction to take place.'\r\n }\r\n\r\n if (validationMessages !== '') {\r\n notifyProblem(validationMessages)\r\n return\r\n }\r\n\r\n const loadingComponent = this.$buefy.loading.open({\r\n container: null\r\n })\r\n try {\r\n //Add the Amenity Reservation\r\n const { successful, message, result } = await addAmenityReservation({\r\n json: {\r\n amenityID: this.amenityID,\r\n reservationOwnerID: this.reservationOwnerID,\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n reservationIdentityID: '_',\r\n notes: '_',\r\n amenityReservation: '_'\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n loadingComponent.close()\r\n return\r\n } else {\r\n this.newAmenityReservation = result\r\n }\r\n\r\n await this.getFortisJwtOneTimeToken()\r\n\r\n if (this.amenityPaymentMethodType && this.amenityPaymentMethodType == 'stored') {\r\n let payload = {\r\n ownerID: this.ownerId ? this.ownerId : this.authUser ? this.authUser.ownerID : 0,\r\n paymentAmount: this.amenityFeeTotal || 0,\r\n ownerPaymentMethodID: this.ownerPaymentMethodID || 0,\r\n isApprovalPending: false\r\n }\r\n\r\n if (this.isApprovalPending()) {\r\n payload.isApprovalPending = true\r\n\r\n const params = {\r\n ownerPaymentMethodID: this.ownerPaymentMethodID,\r\n tokenNumber: '',\r\n amenityReservationID: this.newAmenityReservation.amenityReservationID,\r\n isApprovalPending: true\r\n }\r\n\r\n await amenityReservationStore.dispatch('updateAmenityReservationForPaymentOnApproval', {\r\n params,\r\n done: ({ detail }) => {\r\n if (detail !== undefined && detail) {\r\n this.loading = false\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n notifyMessage(\r\n `Your credit card will be charged, $` +\r\n `${formatter.format(\r\n totalWithConvenienceFee\r\n )}, when a board manager approves this reservation.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n } else {\r\n console.debug('addSendPayment payload=' + JSON.stringify(payload))\r\n\r\n await outstandingPayment.dispatch('addSendPayment', {\r\n payload,\r\n done: ({ invalidMessage }) => {\r\n if (invalidMessage !== undefined && invalidMessage && invalidMessage.length > 0) {\r\n notifyError(invalidMessage)\r\n return\r\n } else {\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n notifyMessage(\r\n `Your credit card will be charged, $` +\r\n `${formatter.format(totalWithConvenienceFee)} on the selected credit card.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n }\r\n } else if (this.amenityPaymentMethodType && this.amenityPaymentMethodType == 'creditcard') {\r\n const lastFourDigits = this.creditCardNumber\r\n .toString()\r\n .slice(\r\n this.creditCardNumber.toString().length - 4,\r\n this.creditCardNumber.toString().length\r\n )\r\n\r\n const expMonthYear = this.$refs.cardExpirationDateComponent.getValue()\r\n\r\n const registerParams = {\r\n account_number: this.creditCardNumber || '',\r\n method: 'credit_card'\r\n }\r\n\r\n await outstandingPayment\r\n .dispatch('registerOneTimeToken', {\r\n params: registerParams,\r\n jwt: this.requestJwtToken,\r\n amount: this.amenityFeeTotal || 0,\r\n name: this.cardHolderName || '',\r\n expMonth: expMonthYear.month || '',\r\n expYear: expMonthYear.year || '',\r\n cvv: this.cvc || ''\r\n })\r\n .then(async ({ result }) => {\r\n if (result && result.status !== undefined && result.status) {\r\n notifyError(result.status)\r\n return\r\n } else if (result) {\r\n const params = {\r\n method: 'card_token',\r\n ownerUserID: this.authUser.ownerUserID,\r\n paymentMethodType: 'Credit Card',\r\n lastFourDigits: lastFourDigits,\r\n paymentAmount: this.amenityFeeTotal || 0,\r\n token: result.token_number || '',\r\n tokenType: result.token_type || '',\r\n cardHolderName: this.cardHolderName || '',\r\n expMonth: expMonthYear.month || '',\r\n expYear: expMonthYear.year || '',\r\n savePaymentMethod: this.addCreditCardPaymentMethod || false,\r\n accountAlias: this.accountAliasCreditCard || '',\r\n postalCode: this.zipCode || ''\r\n }\r\n\r\n //Register a second one-time token for saving this payment method\r\n await outstandingPayment\r\n .dispatch('registerOneTimeToken', {\r\n params: registerParams,\r\n jwt: this.requestJwtToken,\r\n amount: this.amenityFeeTotal || 0,\r\n name: this.cardHolderName || '',\r\n expMonth: expMonthYear.month || '',\r\n expYear: expMonthYear.year || '',\r\n cvv: this.cvc || ''\r\n })\r\n .then(async ({ result }) => {\r\n if (result && result.status !== undefined && result.status) {\r\n notifyError(result.status)\r\n return\r\n } else if (result) {\r\n params.savePaymentToken = result.token_number\r\n\r\n if (this.isApprovalPending()) {\r\n params.isApprovalPending = true\r\n params.amenityReservationID = this.newAmenityReservation.amenityReservationID\r\n params.savePaymentMethod = true\r\n\r\n await epicGateway.dispatch('addDeferredOwnerPaymentMethodCreditCard', {\r\n params,\r\n done: async ({ details }) => {\r\n //auto-close modal\r\n if (details) {\r\n this.loading = false\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n totalWithConvenienceFee\r\n\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n notifyMessage(\r\n `Your credit card will be charged, $` +\r\n `${formatter.format(\r\n totalWithConvenienceFee\r\n )}, when a board manager approves this reservation.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n } else {\r\n await outstandingPayment.dispatch('addOneTimeCreditCardPayment', {\r\n payload: params,\r\n done: ({ invalidMessage }) => {\r\n if (\r\n invalidMessage !== undefined &&\r\n invalidMessage &&\r\n invalidMessage.length > 0\r\n ) {\r\n notifyError(invalidMessage)\r\n return\r\n } else {\r\n this.loading = false\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n notifyMessage(\r\n `Your credit card was charged, $` +\r\n `${totalWithConvenienceFee}. Check your 'Billing Account Activity' section to see when the payment is processed.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n } catch (e) {\r\n notifyError('There was a problem adding your payment method for a credit card.' + e)\r\n loadingComponent.close()\r\n }\r\n\r\n loadingComponent.close()\r\n this.refreshParent('chooser')\r\n }\r\n },\r\n\r\n isApprovalPending() {\r\n const requiresApproval =\r\n _get(this.amenityData, ['requiresApproval'], false) &&\r\n !reservationIsApproved({ reservation: _get(this.reservation, [3], null) })\r\n\r\n console.debug('requires approval=' + requiresApproval)\r\n\r\n return requiresApproval\r\n },\r\n\r\n async getFortisJwtOneTimeToken() {\r\n await outstandingPayment\r\n .dispatch('getOneTimeFortisJwtToken', {\r\n hoaID: this.hoaId\r\n })\r\n .then(({ result }) => {\r\n if (result) {\r\n if (this.isDebug === true)\r\n console.debug('getOneTimeFortisJwtToken' + JSON.stringify(result))\r\n\r\n if (result) {\r\n this.requestJwtToken = result\r\n }\r\n }\r\n })\r\n },\r\n\r\n async loadServiceFees() {\r\n console.debug('in loadServices...')\r\n\r\n const params = {\r\n hoaID: this.hoaId\r\n }\r\n\r\n await outstandingPayment\r\n .dispatch('getServiceFees', {\r\n params: params\r\n })\r\n .then(({ result }) => {\r\n if (result) {\r\n const percentage = Number.parseFloat(result.creditCardPercentageServiceFee) * 0.01\r\n console.debug('percentage=' + percentage)\r\n const creditCardPercentage = percentage * this.amenityFeeTotal || 0\r\n console.debug('creditCardPercentage=' + creditCardPercentage)\r\n console.debug('amenityPaymentMethodType=' + this.amenityPaymentMethodType)\r\n this.convenienceFee = creditCardPercentage\r\n console.debug('creditCardPercentage...' + creditCardPercentage)\r\n }\r\n })\r\n },\r\n\r\n async requestReservation(continueToFees) {\r\n this.loading = true\r\n\r\n console.debug('mDate=' + JSON.stringify(this.mDate))\r\n\r\n const t1 = this.$refs.fromTime.getValue()[24]\r\n const t2 = this.$refs.toTime.getValue()[24]\r\n\r\n const isAvailable = await this.ensureIsAvailable({ t1, t2 })\r\n if (isAvailable !== true) {\r\n this.loading = false\r\n return\r\n }\r\n\r\n const reservationOwnerID = this.ownerId\r\n ? this.ownerId\r\n : _get(this, ['$store', 'getters', 'user/authUser', 'ownerID'], null)\r\n let { year, month, dayOfMonth } = this.mDate\r\n\r\n month = month.toString()\r\n if (month.length === 1) {\r\n month = '0' + month\r\n }\r\n\r\n dayOfMonth = dayOfMonth.toString()\r\n if (dayOfMonth.length === 1) {\r\n dayOfMonth = '0' + dayOfMonth\r\n }\r\n\r\n const startDate = `${year}-${month}-${dayOfMonth}T${t1}`\r\n const endDate = `${year}-${month}-${dayOfMonth}T${t2}`\r\n\r\n if (month === '' || year === '') {\r\n notifyProblem('Please enter a start and end dates for the new reservation request.')\r\n return\r\n }\r\n\r\n //Instead of Adding this, store in session\r\n if (continueToFees !== undefined && continueToFees === true) {\r\n //Store an amenity reservation in session\r\n this.$store.dispatch('amenity/saveAmenityID', {\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null)\r\n })\r\n this.$store.dispatch('amenity/saveReservationOwnerID', {\r\n reservationOwnerID\r\n })\r\n this.$store.dispatch('amenity/saveStartDate', {\r\n startDate\r\n })\r\n this.$store.dispatch('amenity/saveEndDate', {\r\n endDate\r\n })\r\n\r\n console.debug('session state=' + this.amenityID)\r\n\r\n this.reservationFees()\r\n } else {\r\n const { successful, message } = await addAmenityReservation({\r\n json: {\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null),\r\n reservationOwnerID,\r\n startDate,\r\n endDate,\r\n reservationIdentityID: '_',\r\n notes: '_',\r\n amenityReservation: '_'\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservationAdded')\r\n this.refreshParent()\r\n notifyMessage('The reservation request has been sent.')\r\n\r\n this.loading = false\r\n this.isOpen = false\r\n }\r\n\r\n await this.loadServiceFees()\r\n },\r\n\r\n async checkBeforeClose() {\r\n console.debug('checkBeforeClose()...')\r\n\r\n if (\r\n this.newAmenityReservation !== undefined &&\r\n this.newAmenityReservation &&\r\n !this.newAmenityReservation.ownerPaymentMethodID\r\n ) {\r\n //Remove the orphan\r\n this.reservationToCancel = this.newAmenityReservation\r\n this.cancelReservation(true)\r\n }\r\n },\r\n\r\n resetFormValues() {\r\n this.creditCardNumber = ''\r\n this.cardHolderName = ''\r\n this.cvc = ''\r\n this.zipCode = ''\r\n this.accountAliasCreditCard = ''\r\n this.ownerPaymentMethodID = 0\r\n this.newAmenityReservation = null\r\n this.amenityPaymentMethodType = ''\r\n this.$store.dispatch('amenity/initStates')\r\n },\r\n\r\n async reservationFees() {\r\n this.loading = true\r\n\r\n console.debug('reservationFees...' + this.isApprovalPending())\r\n this.showing = 8\r\n\r\n this.loadAmenityFees()\r\n\r\n this.loading = false\r\n },\r\n\r\n async loadPaymentMethodTypes() {\r\n this.loading = true\r\n await amenityStore.dispatch('getAmenityFeePaymentMethodTypes').then(t => {\r\n if (t && t.list && t.list != undefined) {\r\n this.amenityPaymentMethodTypes = t.list\r\n }\r\n })\r\n this.loading = false\r\n },\r\n\r\n async loadAmenityFees(amenityID) {\r\n this.loading = true\r\n\r\n console.debug('amenityData=' + JSON.stringify(this.amenityData))\r\n\r\n if (amenityID <= 0) {\r\n amenityID = _get(this, ['amenityData', 'amenityID'], null)\r\n }\r\n\r\n if (amenityID > 0) {\r\n try {\r\n await amenityFeeStore\r\n .dispatch('getAmenityFeeList', {\r\n amenityID\r\n })\r\n .then(t => {\r\n console.debug('amenity fees=' + JSON.stringify(t))\r\n\r\n if (t && t.list && t.list != undefined) {\r\n this.amenityFees = t.list\r\n }\r\n\r\n this.amenityFeeTotal = this.amenityFees.reduce((acc, item) => acc + item.amount, 0)\r\n })\r\n } catch (error) {\r\n console.debug(error.message)\r\n }\r\n }\r\n this.loading = false\r\n },\r\n\r\n async loadPaymentMethods() {\r\n const selectedOwnerUser = this.authUser.ownerUsers.filter(f => f.ownerID === this.ownerId)\r\n const ownerUserID =\r\n selectedOwnerUser[0] !== undefined && selectedOwnerUser[0]\r\n ? selectedOwnerUser[0].ownerUserID\r\n : this.authUser\r\n ? this.authUser.ownerUserID\r\n : 0\r\n\r\n if (ownerUserID !== undefined && ownerUserID > 0) {\r\n const params = {\r\n ownerUserID: ownerUserID\r\n }\r\n\r\n await outstandingPayment\r\n .dispatch('getPaymentMethodList', {\r\n params: params\r\n })\r\n .then(({ list }) => {\r\n if (list) {\r\n this.paymentMethods = list.filter(\r\n f => f !== undefined && f && f.label.indexOf('Credit Card') > -1\r\n )\r\n }\r\n })\r\n }\r\n },\r\n\r\n //\tDeleting Reservable Times\r\n confirmDeleteReservableTime({ reservableTime }) {\r\n const reservableTimeDayOfWeek = _get(reservableTime, [2, 'dayOfWeek'], null)\r\n\r\n const amenityReservableTimeID = _get(reservableTime, [2, 'amenityReservableTimeID'], null)\r\n const allReservations = this.amenityData.amenityReservations\r\n const reservableTimes = this.amenityData.amenityReservableTimes.filter(r => {\r\n const id = _get(r, 'amenityReservableTimeID', '')\r\n if (typeof id === 'number' && id === amenityReservableTimeID) {\r\n return false\r\n }\r\n\r\n return true\r\n })\r\n\r\n const { reliantReservations } = findReliantReservations({\r\n amenityReservableTimeID,\r\n reservableTimes,\r\n reservations: allReservations\r\n })\r\n\r\n this.toDelete = {\r\n reservableTimeDayOfWeek,\r\n startTime: toMeridian(_get(reservableTime, [2, 'startTime'], null)),\r\n endTime: toMeridian(_get(reservableTime, [2, 'endTime'], null)),\r\n amenityReservableTimeID,\r\n reliantReservations: reliantReservations.map(rr => {\r\n return [\r\n moment(rr.startDate).format('LLLL'),\r\n moment(rr.endDate).format('LLLL'),\r\n _get(rr, ['identityInformation', 'name'], '__'),\r\n rr\r\n ]\r\n })\r\n }\r\n this.showing = 2\r\n },\r\n\r\n async deleteReservableTime() {\r\n this.loading = true\r\n\r\n const toDelete = this.toDelete\r\n const reliantReservations = toDelete.reliantReservations\r\n\r\n const problems = []\r\n let successes = 0\r\n for (let a = 0; a < reliantReservations.length; a++) {\r\n const reliantReservation = reliantReservations[a]\r\n const amenityReservationID = _get(reliantReservations, [a, 3, 'amenityReservationID'], null)\r\n\r\n if (typeof amenityReservationID !== 'number') {\r\n problems.push(reliantReservation)\r\n continue\r\n }\r\n\r\n const { successful, message } = await deleteAmenityReservation({\r\n amenityReservationID\r\n })\r\n if (!successful) {\r\n problems.push(reliantReservation, message)\r\n continue\r\n }\r\n\r\n successes++\r\n }\r\n\r\n const { amenityReservableTimeID } = toDelete\r\n const { successful, message } = await deleteAmenityReservableTime({\r\n amenityReservableTimeID\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservableTimeRemoved')\r\n\r\n this.deleted = {\r\n problems,\r\n successes\r\n }\r\n\r\n this.loading = false\r\n this.showing = 3\r\n },\r\n\r\n //\tEditing Reservable Times\r\n //\r\n // edit button -> confirmEditReservableTime\r\n //\r\n // updaterOnUpdate\r\n // called every time a time input is changed\r\n confirmEditReservableTime({ reservableTime }) {\r\n this.toUpdate = {\r\n startTime: reservableTime[0],\r\n endTime: reservableTime[1],\r\n dayOfWeek: reservableTime[2].dayOfWeek,\r\n reservableTime,\r\n proposal: {\r\n startTime: null,\r\n endTime: null\r\n }\r\n }\r\n\r\n this.showing = 4\r\n },\r\n\r\n /*\r\n\t\tremove the reservable time in question,\r\n\t\tadd the new reservable time,\r\n\r\n\t\t\tdetermine if all reservations are still available or not\r\n\t*/\r\n updaterOnUpdate() {\r\n this.affectedReservations = []\r\n this.affectedReservationsDetails = []\r\n\r\n const editFromTime = this.$refs.editFromTime.getValue()\r\n const editToTime = this.$refs.editToTime.getValue()\r\n\r\n if (!editFromTime.isValid || !editToTime.isValid) {\r\n console.debug('time is not valid')\r\n return\r\n }\r\n\r\n // is start time before end time?\r\n const comparison = compareTimes(editFromTime[24], editToTime[24])\r\n if (comparison !== 2) {\r\n this.allowUpdate = 2\r\n return\r\n }\r\n\r\n const reservableTime = _get(this, ['toUpdate', 'reservableTime', 2], null)\r\n const idToRemove = _get(reservableTime, ['amenityReservableTimeID'], null)\r\n const reservableTimes = this.amenityData.amenityReservableTimes.filter(r => {\r\n const id = _get(r, 'amenityReservableTimeID', '')\r\n if (typeof id === 'number' && id === idToRemove) {\r\n return false\r\n }\r\n\r\n return true\r\n })\r\n\r\n reservableTimes.push({\r\n amenityReservableTimeID: null,\r\n dayOfWeek: this.toUpdate.dayOfWeek,\r\n startTime: editFromTime[24],\r\n endTime: editToTime[24]\r\n })\r\n\r\n const { reliantReservations } = findReliantReservations({\r\n amenityReservableTimeID: 0,\r\n reservableTimes,\r\n reservations: this.amenityData.amenityReservations\r\n })\r\n\r\n this.toUpdate.proposal = {\r\n dayOfWeek: this.toUpdate.dayOfWeek,\r\n startTime: editFromTime[24],\r\n endTime: editToTime[24]\r\n }\r\n\r\n /*\r\n\t\t determines if any of the reservations would be cancelled\r\n\t\t\t because of the edit\r\n\t\t*/\r\n this.affectedReservations = _cloneDeep(reliantReservations).map(rr => {\r\n return [\r\n moment(rr.startDate).format('LLLL'),\r\n moment(rr.endDate).format('LLLL'),\r\n _get(rr, ['identityInformation', 'name'], '__'),\r\n rr\r\n ]\r\n })\r\n\r\n this.allowUpdate = 1\r\n },\r\n confirmUpdateReservableTime() {\r\n this.showing = 5\r\n },\r\n async updateReservableTime() {\r\n this.loading = true\r\n\r\n /*\r\n\t\t\tDelete affected reservations\r\n\t\t*/\r\n const ids = []\r\n const affectedReservations = this.affectedReservations\r\n for (let a = 0; a < affectedReservations.length; a++) {\r\n ids.push(affectedReservations[a][3].amenityReservationID)\r\n }\r\n\r\n const { problems } = await deleteMultipleReservations({\r\n reservationIDs: ids\r\n })\r\n if (problems.length >= 1) {\r\n notifyProblem(`${problems.length} of the reservations were not cancelled.`)\r\n return\r\n }\r\n\r\n const reservableTime = _get(this, ['toUpdate', 'reservableTime', 2], null)\r\n const amenityReservableTimeID = _get(reservableTime, ['amenityReservableTimeID'], null)\r\n\r\n const reservableTimeProposal = _get(this, ['toUpdate', 'proposal'], null)\r\n const dayOfWeek = _get(reservableTimeProposal, ['dayOfWeek'], null)\r\n const startTime = _get(reservableTimeProposal, ['startTime'], null)\r\n const endTime = _get(reservableTimeProposal, ['endTime'], null)\r\n\r\n /*\r\n\t\t\tUpdate reservable time\r\n\t\t*/\r\n const { successful, message } = await deleteAmenityReservableTime({\r\n amenityReservableTimeID\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n }\r\n\r\n const { successful: addedSuccessfully, message: addMessage } = await addReservableTime({\r\n json: {\r\n // amenityReservableTimeID,\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null),\r\n dayOfWeek,\r\n startTime,\r\n endTime,\r\n cleanupDurationInMinutes: 0\r\n }\r\n })\r\n if (!addedSuccessfully) {\r\n notifyProblem(addMessage)\r\n }\r\n\r\n notifyMessage(\r\n `The reservable time has been updated. ${ids.length} reservation${\r\n ids.length === 1 ? '' : 's'\r\n } or reservation request${ids.length === 1 ? '' : 's'} have been cancelled.`\r\n )\r\n\r\n amenityStore.commit('amenityReservationAdded')\r\n\r\n this.isOpen = false\r\n this.loading = false\r\n }\r\n}\r\n","import { mapState, mapGetters } from 'vuex'\r\n\r\nexport const computed = {\r\n ...mapState({\r\n breakpoint: state => state.win.breakpoint,\r\n hoaId: state => state.user.selectedHoaId,\r\n ownerId: state => state.user.homeownerSelectedUnit.ownerId,\r\n ...mapGetters('user', ['authUser']),\r\n ...mapGetters('amenity', ['amenityID', 'reservationOwnerID', 'startDate', 'endDate'])\r\n })\r\n}\r\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=64cad916&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&scope=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export function beforeDestroy() {\r\n this.unsubAmenityStore()\r\n}\r\n","/*\r\n\tBoth:\r\n\t\tReservable Times\r\n\t\tAvailability\r\n\r\n\r\n\tApproval Required:\r\n\t\tHome Owner:\r\n\t\t\tYour Reservations\r\n\t\t\tYour Reservation Requests\r\n\r\n\t\tManager:\r\n\t\t\tAll Reservations\r\n\t\t\tAll Reservation Requests\r\n\t\t\r\n\r\n\tApproval Not Required:\r\n\t\tHome Owner:\r\n\t\t\tYour Reservations\r\n\r\n\t\tManager:\r\n\t\t\tAll Reservations\r\n*/\r\n\r\nimport { mapState, mapGetters } from 'vuex'\r\n\r\nexport const computed = {\r\n ...mapGetters('user', ['authUser', 'currentHoaId', 'currentOwnerId']),\r\n ...mapState({\r\n breakpoint: state => state.win.breakpoint\r\n }),\r\n portal() {\r\n if (this.authUserType === 'HomeOwner') {\r\n return 1\r\n }\r\n if (this.authUserType === 'Account') {\r\n return 2\r\n }\r\n\r\n return null\r\n },\r\n homeOwnerDisplays() {\r\n //\r\n // these values are mapped to 'showing'\r\n // same as managementDisplays\r\n //\r\n\r\n const total = this.total\r\n const requiresApproval = this.requiresApproval\r\n\r\n const allReservationsText = requiresApproval ? 'All Approved Reservations' : 'All Reservations'\r\n\r\n const yourReservationsText = requiresApproval\r\n ? 'Your Approved Reservations'\r\n : 'Your Reservations'\r\n\r\n const options = [\r\n {\r\n text: 'Availability',\r\n value: 2\r\n },\r\n {\r\n text: `Reservable Times (${total.reservableTimes} total)`,\r\n value: 1\r\n },\r\n {\r\n text: [\r\n yourReservationsText,\r\n `(${total.yourFutureReservations} current/future)`,\r\n `(${total.yourPastReservations} past)`\r\n ].join(' '),\r\n value: 3\r\n },\r\n ...(requiresApproval === true\r\n ? [\r\n {\r\n text: [\r\n `Your Pending Reservation Requests`,\r\n `(${total.yourFutureReservationRequests} current/future)`,\r\n `(${total.yourPastReservationRequests} past)`\r\n ].join(' '),\r\n value: 4\r\n }\r\n ]\r\n : []),\r\n {\r\n text: [\r\n allReservationsText,\r\n `(${total.futureReservations} current/future)`,\r\n `(${total.pastReservations} past)`\r\n ].join(' '),\r\n value: 5\r\n },\r\n ...(requiresApproval === true\r\n ? [\r\n {\r\n text: [\r\n 'All Pending Reservation Requests',\r\n `(${total.futureReservationRequests} current/future)`,\r\n `(${total.pastReservationRequests} past)`\r\n ].join(' '),\r\n value: 6\r\n }\r\n ]\r\n : [])\r\n ]\r\n\r\n return options\r\n },\r\n managementDisplays() {\r\n //\r\n // these values are mapped to 'showing'\r\n // same as homeOwnerDisplays\r\n //\r\n\r\n const total = this.total\r\n const requiresApproval = this.requiresApproval\r\n\r\n const allReservationsText = requiresApproval ? 'All Approved Reservations' : 'All Reservations'\r\n\r\n const options = [\r\n {\r\n text: 'Availability',\r\n value: 2\r\n },\r\n\r\n {\r\n text: `Reservable Times (pre-reservations) (${total.reservableTimes} total)`,\r\n value: 1\r\n },\r\n\r\n {\r\n text: [\r\n allReservationsText,\r\n `(${total.futureReservations} current/future)`,\r\n `(${total.pastReservations} past)`\r\n ].join(' '),\r\n value: 5\r\n },\r\n\r\n ...(requiresApproval === true\r\n ? [\r\n {\r\n text: [\r\n 'All Pending Reservation Requests',\r\n `(${total.futureReservationRequests} current/future)`,\r\n `(${total.pastReservationRequests} past)`\r\n ].join(' '),\r\n value: 6\r\n }\r\n ]\r\n : [])\r\n ]\r\n\r\n return options\r\n }\r\n}\r\n","import _get from 'lodash/get'\r\n\r\nexport function data() {\r\n const authUserType = _get(this, ['$store', 'getters', 'user/authUserType'], null)\r\n\r\n return {\r\n authUserType,\r\n showing: 2,\r\n reservationDurationLimitInMinutes: null,\r\n requiresApproval: null,\r\n name: '',\r\n loading: false,\r\n dayTappedDay: null,\r\n dayTappedMonth: null,\r\n dayTappedYear: null,\r\n attributes: [],\r\n events: [],\r\n months: [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December'\r\n ],\r\n shown: {\r\n year: null,\r\n month: null\r\n },\r\n reservableTimes: [],\r\n\r\n /*\r\n\t\t\tmanagement\r\n\t\t\t\tall reservations\r\n\t\t\t\tall reservation requests\r\n\t\t\t\t\r\n\t\t\t\treservable times\r\n\r\n\t\t\towner specific\r\n\t\t\t\tyour future reservations\r\n\t\t\t\tyour past reservations\r\n\r\n\t\t\t\tyour future reservation requests\r\n\t\t\t\tyour past reservation requests\r\n\r\n\t\t\tboth\r\n\t\t\t\tavailibility\r\n\t\r\n\t\t*/\r\n total: {\r\n // reservations: '__',\r\n // yourReservations: '__',\r\n reservableTimes: '__',\r\n //\r\n // allFutureReservationRequests: '__',\r\n // futurePendingReservations: '__',\r\n yourFutureReservations: '__',\r\n yourPastReservations: '__',\r\n yourFutureReservationRequests: '__',\r\n yourPastReservationRequests: '__',\r\n futureReservations: '__',\r\n pastReservations: '__',\r\n futureReservationRequests: '__',\r\n pastReservationRequests: '__'\r\n },\r\n //\r\n found: false\r\n }\r\n}\r\n","/*\r\n\timport { getAmenity } from '@/services/Amenities/Amenity/Get';\r\n\r\n const { successful, message, data } = await getAmenity ({\r\n amenityID\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function getAmenity({ amenityID }) {\r\n let message = 'The amenity could not be retrieved.'\r\n\r\n try {\r\n const data = await kms.get(`/Amenities/Amenity/${amenityID}`)\r\n\r\n return {\r\n successful: true,\r\n message: '',\r\n data\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n successful: false,\r\n message,\r\n data: null\r\n }\r\n}\r\n","/*\r\n\timport { addSuffix } from '@/utilities/Date/addSuffix'\r\n\taddSuffix (date);\r\n*/\r\n\r\n/*\r\n\t1st\r\n\t2nd\r\n\t3rd\r\n\t\r\n\tif two digits & second to last digit is 1 then all \"th\"\r\n*/\r\n\r\nexport function addSuffix(date) {\r\n try {\r\n const strDate = parseInt(date).toString()\r\n const len = strDate.length\r\n\r\n if (strDate.length === 1) {\r\n if (strDate === '1') {\r\n return strDate + 'st'\r\n }\r\n if (strDate === '2') {\r\n return strDate + 'nd'\r\n }\r\n if (strDate === '3') {\r\n return strDate + 'rd'\r\n }\r\n }\r\n\r\n if (len >= 2) {\r\n const secondToLast = strDate[len - 2]\r\n\r\n if (secondToLast !== '1') {\r\n const last = strDate[len - 1]\r\n\r\n if (last === '1') {\r\n return strDate + 'st'\r\n }\r\n if (last === '2') {\r\n return strDate + 'nd'\r\n }\r\n if (last === '3') {\r\n return strDate + 'rd'\r\n }\r\n }\r\n }\r\n\r\n return strDate + 'th'\r\n } catch (x) {\r\n console.error(x)\r\n }\r\n\r\n return date\r\n}\r\n","/*\r\n\tGet days in month\r\n\t\tfor example: \r\n\t\t\tall saturdays in the november 5932?\r\n*/\r\n\r\n/*\r\n\timport { allDatesInMonth } from '@/utilities/Date/allDatesInMonth'\r\n\r\n allDatesInMonth ({\r\n year: 2022,\r\n month: 1\r\n }) \r\n*/\r\n\r\nimport { addSuffix } from '@/utilities/Date/addSuffix'\r\n\r\nimport moment from 'moment'\r\n\r\n/*\r\n\tyear: 2022 (UTC)\r\n\tmonth: 1 to 12\r\n\tdayOfWeek: 1 to 7\r\n*/\r\nexport function allDatesInMonth({ year, month, dayOfWeek = null, suffix = false }) {\r\n const totalDays = moment(`${year}-${month}`, 'YYYY-MM').daysInMonth()\r\n\r\n month = month - 1\r\n\r\n if (typeof dayOfWeek === 'number') {\r\n dayOfWeek = dayOfWeek - 1\r\n }\r\n\r\n const dates = []\r\n for (let a = 1; a <= totalDays; a++) {\r\n const date = new Date(year, month, a)\r\n const day = date.getDay()\r\n\r\n if (typeof dayOfWeek === 'number') {\r\n if (day === dayOfWeek) {\r\n dates.push(date)\r\n }\r\n } else {\r\n dates.push(date)\r\n }\r\n }\r\n\r\n if (suffix) {\r\n return {\r\n dates: dates.map(date => {\r\n const number = moment(date).date()\r\n\r\n return addSuffix(number)\r\n })\r\n }\r\n }\r\n\r\n return {\r\n dates\r\n }\r\n}\r\n","/*\r\n\tplan:\r\n\t\tget the reservable times for a particular\r\n\t\tday of the week?\r\n\r\n\timport { filterReservableTimes } from \"@/utilities/amenities/filterReservableTimes\"\r\n\r\n\tconst { reservableTimes } = filterReservableTimes ({\r\n\t\tamenityReservableTimes: [{\r\n\t\t\tstartTime: \"\",\r\n\t\t\tendTime: \"\"\r\n\t\t},{\r\n\t\t\tstartTime: \"\",\r\n\t\t\tendTime: \"\"\r\n\t\t}]\r\n\t})\r\n\r\n\t\r\n\t// returns\r\n\t// const reservableTimes = {\r\n\t// \t\"Sunday\": [],\r\n\t// \t\"Monday\": [],\r\n\t// \t\"Tuesday\": [],\r\n\t// \t\"Wednesday\": [],\r\n\t// \t\"Thursday\": [],\r\n\t// \t\"Friday\": [],\r\n\t// \t\"Saturday\": [],\r\n\t// };\r\n*/\r\n\r\nimport _get from 'lodash/get'\r\n\r\nexport function filterReservableTimes({ amenityReservableTimes }) {\r\n const list = amenityReservableTimes\r\n\r\n const wkDays = {\r\n Sunday: [],\r\n Monday: [],\r\n Tuesday: [],\r\n Wednesday: [],\r\n Thursday: [],\r\n Friday: [],\r\n Saturday: []\r\n }\r\n\r\n for (let a = 0; a < list.length; a++) {\r\n const entry = list[a]\r\n\r\n const startTime = _get(entry, 'startTime', '')\r\n const endTime = _get(entry, 'endTime', '')\r\n const wkDay = _get(entry, 'dayOfWeek', '')\r\n\r\n wkDays[wkDay].push({\r\n startTime,\r\n endTime\r\n })\r\n }\r\n\r\n return { reservableTimes: wkDays }\r\n}\r\n","import _get from 'lodash/get'\r\nimport moment from 'moment'\r\nimport { getAmenity } from '@/services/Amenities/Amenity/Get'\r\nimport { notifyProblem } from '@/services/notify'\r\nimport { allDatesInMonth } from '@/utilities/Date/allDatesInMonth'\r\nimport { wkDaysNums, monthNums, monthStrs } from '@/utilities/Date/constants'\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\nimport { getTimeSpans } from '@/utilities/time/getSpans'\r\nimport { toMeridian } from '@/utilities/time/toMeridian'\r\nimport { filterReservableTimes } from '@/utilities/amenities/filterReservableTimes'\r\nimport { parseReservations } from '@/utilities/amenities/parseReservations'\r\nimport { reservationIsApproved } from '@/utilities/amenities/reservationIsApproved'\r\nimport { calcOwnerEventTotals } from '@/utilities/amenities/calculate/ownerEventTotals'\r\n\r\nexport const methods = {\r\n async calendarUpdate() {\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n this.shown.year = year\r\n this.shown.month = monthNums[month]\r\n\r\n await this.show()\r\n },\r\n\r\n dayTapped({ dayOfMonth, month, year }) {\r\n this.dayTappedDay = dayOfMonth\r\n this.dayTappedMonth = month\r\n this.dayTappedYear = year\r\n\r\n this.$refs.reservationChooser.open({\r\n amenityData: this.amenityData,\r\n dayOfMonth,\r\n month,\r\n year\r\n })\r\n },\r\n\r\n calculateYourReservationCounts() {\r\n const amenityData = _get(this, ['amenityData'], [])\r\n const ownerID = this.currentOwnerId\r\n\r\n const { totals: your } = calcOwnerEventTotals({\r\n amenityData,\r\n ownerID\r\n })\r\n\r\n this.total.yourFutureReservationRequests = your.future.requests.count\r\n this.total.yourPastReservationRequests = your.past.requests.count\r\n\r\n this.total.yourFutureReservations = your.future.reservations.count\r\n this.total.yourPastReservations = your.past.reservations.count\r\n },\r\n calculateTotals() {\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n const requiresApproval = _get(this, ['amenityData', 'requiresApproval'], null)\r\n\r\n const now = moment()\r\n\r\n // const { year, month } = this.$refs.calendar.getInfo ();\r\n // const { dates: datesInMonth } = allDatesInMonth ({\r\n // \tyear,\r\n // \tmonth\r\n // })\r\n\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations\r\n })\r\n\r\n const total = {\r\n future: {\r\n reservations: {\r\n count: 0,\r\n list: []\r\n },\r\n requests: {\r\n count: 0,\r\n list: []\r\n }\r\n },\r\n past: {\r\n reservations: {\r\n count: 0,\r\n list: {}\r\n },\r\n requests: {\r\n count: 0,\r\n list: {}\r\n }\r\n }\r\n }\r\n\r\n for (let key in dates) {\r\n const thisDate = moment(key)\r\n const isPast = thisDate.isBefore(now)\r\n const reservations = dates[key]\r\n\r\n for (let a = 0; a < reservations.length; a++) {\r\n const reservation = _get(reservations, [a, 2], null)\r\n const isApproved = reservationIsApproved({\r\n reservation\r\n })\r\n\r\n if (isPast) {\r\n if (requiresApproval === true) {\r\n if (isApproved) {\r\n total.past.reservations.count += 1\r\n } else {\r\n total.past.requests.count += 1\r\n }\r\n } else {\r\n total.past.reservations.count += 1\r\n }\r\n } else {\r\n if (requiresApproval === true) {\r\n if (isApproved) {\r\n total.future.reservations.count += 1\r\n } else {\r\n total.future.requests.count += 1\r\n }\r\n } else {\r\n total.future.reservations.count += 1\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.total.futureReservations = total.future.reservations.count\r\n this.total.pastReservations = total.past.reservations.count\r\n\r\n this.total.futureReservationRequests = total.future.requests.count\r\n this.total.pastReservationRequests = total.past.requests.count\r\n },\r\n\r\n refreshParent(from) {\r\n console.debug('refreshing parent....')\r\n this.refresh().then(() => {\r\n if (from !== undefined && from && from === 'chooser') {\r\n this.$refs.reservationChooser.open({\r\n amenityData: this.amenityData,\r\n dayOfMonth: this.dayTappedDay,\r\n month: this.dayTappedMonth,\r\n year: this.dayTappedYear\r\n })\r\n }\r\n //else if(from !== undefined && from && from === 'cancelandrefund')\r\n //{\r\n //\r\n //}\r\n else {\r\n this.dayTappedDay = null\r\n this.dayTappedMonth = null\r\n this.dayTappedYear = null\r\n }\r\n })\r\n },\r\n\r\n initDatePickers() {\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n\r\n this.shown.month = monthNums[month]\r\n this.shown.year = year\r\n },\r\n async move() {\r\n this.$refs.calendar.move({\r\n month: parseInt(monthStrs[this.shown.month]),\r\n year: parseInt(this.shown.year)\r\n })\r\n },\r\n async openAddModal() {\r\n const amenityID = this._testAmenityID || this.$route.params.id\r\n\r\n this.$refs.reservabilityAdder.open({\r\n amenityID\r\n })\r\n },\r\n\r\n async refresh() {\r\n console.debug('refresh..............................')\r\n this.loading = true\r\n\r\n this.initDatePickers()\r\n\r\n const amenityID = this._testAmenityID || this.$route.params.id\r\n const { successful, message, data } = await getAmenity({\r\n amenityID\r\n })\r\n if (!successful) {\r\n this.loading = false\r\n notifyProblem(message)\r\n return\r\n }\r\n\r\n this.amenityData = data\r\n this.reservationDurationLimitInMinutes = _get(data, 'reservationDurationLimitInMinutes', '')\r\n this.requiresApproval = _get(data, 'requiresApproval', null)\r\n this.amenityReservableTimes = _get(data, 'amenityReservableTimes', [])\r\n\r\n this.name = _get(data, 'name', '')\r\n this.show()\r\n\r\n const { reservableTimes } = filterReservableTimes({\r\n amenityReservableTimes: this.amenityReservableTimes\r\n })\r\n\r\n this.reservableTimes = reservableTimes\r\n\r\n if (Array.isArray(this.amenityReservableTimes)) {\r\n this.total.reservableTimes = this.amenityReservableTimes.length\r\n } else {\r\n this.total.reservableTimes = 0\r\n }\r\n\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n this.total.reservations = amenityReservations.length\r\n\r\n this.calculateYourReservationCounts()\r\n this.calculateTotals()\r\n\r\n this.found = true\r\n this.loading = false\r\n },\r\n\r\n ////////////////////////////////////////////////////////////////////\r\n ////\r\n ////\tThe events that are displayed on the calendar\r\n ////\r\n ////\r\n async showYourReservations() {\r\n // const { dates, datesInMonth } = this.calculateYourReservationCounts ();\r\n\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n const ownerID = this.currentOwnerId\r\n const requiresApproval = _get(this, ['amenityData', 'requiresApproval'], null)\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n // filters by ownerID\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations,\r\n ownerID\r\n })\r\n\r\n const now = moment()\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n const m = moment(date)\r\n // const dayOfWeek = m.day() + 1\r\n\r\n const isPast = m.isBefore(now)\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n\r\n if (!isPast) {\r\n if (Array.isArray(reservations) && reservations.length >= 1) {\r\n for (let a = 0; a < reservations.length; a++) {\r\n const reservation = _get(reservations, [a, 2], null)\r\n const isApproved = reservationIsApproved({\r\n reservation\r\n })\r\n\r\n const from = toMeridian(_get(reservations, [a, 0], ''))\r\n const to = toMeridian(_get(reservations, [a, 1], ''))\r\n\r\n if (requiresApproval) {\r\n if (isApproved) {\r\n events.push({\r\n name: [from, 'to', to].join(' '),\r\n date\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n\r\n //\r\n // Called after selecting either:\r\n // All Approved Reservations\r\n // All Reservations\r\n //\r\n async showReservations() {\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n const requiresApproval = _get(this, ['amenityData', 'requiresApproval'], null)\r\n\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n if (Array.isArray(reservations) && reservations.length >= 1) {\r\n events.push({\r\n name: reservations\r\n .filter(reservation => {\r\n if (requiresApproval === false) {\r\n return true\r\n }\r\n\r\n const r = reservation[2]\r\n if (reservationIsApproved({ reservation: r })) {\r\n return true\r\n }\r\n\r\n // the reservation isn't approved\r\n return false\r\n })\r\n .map(reservation => {\r\n return `${toMeridian(reservation[0])} to ${toMeridian(reservation[1])}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async showReservableTimes() {\r\n const { reservableTimes: wkDays } = filterReservableTimes({\r\n amenityReservableTimes: this.amenityReservableTimes\r\n })\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n const m = moment(date)\r\n const dayOfWeek = m.day() + 1\r\n\r\n const reservableTimes = wkDays[wkDaysNums[dayOfWeek]]\r\n if (Array.isArray(reservableTimes) && reservableTimes.length >= 1) {\r\n events.push({\r\n name: reservableTimes\r\n .map(reservableTime => {\r\n return `${toMeridian(reservableTime.startTime)} to ${toMeridian(\r\n reservableTime.endTime\r\n )}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async showOpenings() {\r\n const amenityData = this.amenityData\r\n const { amenityReservations } = amenityData\r\n\r\n const dates = {\r\n /* 2021-11-04 */\r\n }\r\n\r\n const { reservableTimes: wkDays } = filterReservableTimes({\r\n amenityReservableTimes: this.amenityReservableTimes\r\n })\r\n this.reservableTimes = wkDays\r\n\r\n for (let a = 0; a < amenityReservations.length; a++) {\r\n const sDate = amenityReservations[a].startDate.split('T')\r\n const eDate = amenityReservations[a].endDate.split('T')\r\n\r\n if (timeIsInvalid(sDate[1])) {\r\n console.error('invalid date', { sDate })\r\n continue\r\n }\r\n if (timeIsInvalid(eDate[1])) {\r\n console.error('invalid date', { eDate })\r\n continue\r\n }\r\n\r\n if (!Array.isArray(dates[sDate[0]])) {\r\n dates[sDate[0]] = []\r\n }\r\n dates[sDate[0]].push([sDate[1], eDate[1]])\r\n }\r\n\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n\r\n const m = moment(date)\r\n // const y = m.year()\r\n // const mon = m.month() + 1\r\n // const dayOfMonth = m.date()\r\n const dayOfWeek = m.day() + 1\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n if (!Array.isArray(reservations)) {\r\n reservations = []\r\n }\r\n\r\n // availability for the particular day\r\n // of the week\r\n const availabilities = wkDays[wkDaysNums[dayOfWeek]]\r\n\r\n const { openings } = getTimeSpans({\r\n availabilities: availabilities.map(a => {\r\n return [a.startTime, a.endTime]\r\n }),\r\n reservations\r\n })\r\n\r\n if (Array.isArray(openings) && openings.length >= 1) {\r\n events.push({\r\n name: openings\r\n .map(opening => {\r\n return `${toMeridian(opening[0])} to ${toMeridian(opening[1])}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async showPendingReservationRequests({ ownerID } = {}) {\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations,\r\n ...(typeof ownerID === 'number' && { ownerID })\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n // const m = moment(date)\r\n // const dayOfWeek = m.day() + 1\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n if (Array.isArray(reservations) && reservations.length >= 1) {\r\n events.push({\r\n name: reservations\r\n .filter(reservation => {\r\n const r = reservation[2]\r\n\r\n if (reservationIsApproved({ reservation: r })) {\r\n return false\r\n }\r\n\r\n // the reservation isn't approved\r\n return true\r\n })\r\n .map(reservation => {\r\n return `${toMeridian(reservation[0])} to ${toMeridian(reservation[1])}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async show() {\r\n const showing = this.showing\r\n this.loading = true\r\n\r\n /*\r\n\t\t\t6 ->\r\n\t\t\t5 -> \r\n\t\t\t4 ->\r\n\t\t\t3 ->\r\n\t\t\t2 ->\r\n\t\t\t1 ->\r\n\t\t*/\r\n if (showing === 6) {\r\n this.events = []\r\n await this.showPendingReservationRequests()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 5) {\r\n this.events = []\r\n await this.showReservations()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 4) {\r\n this.events = []\r\n await this.showPendingReservationRequests({\r\n ownerID: this.currentOwnerId\r\n })\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 3) {\r\n this.events = []\r\n await this.showYourReservations()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 2) {\r\n this.events = []\r\n await this.showOpenings()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 1) {\r\n this.events = []\r\n await this.showReservableTimes()\r\n this.loading = false\r\n return\r\n }\r\n\r\n this.loading = false\r\n this.events = []\r\n }\r\n //|\\_______________________________________________________________\r\n //|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\r\n}\r\n","import { amenityStore } from '@/services/Amenities/store'\r\n\r\nexport function mounted() {\r\n this.refresh()\r\n\r\n this.unsubAmenityStore = amenityStore.subscribe(mutation => {\r\n const mType = mutation.type\r\n if (\r\n [\r\n 'amenityReservableTimeAdded',\r\n 'amenityReservableTimeRemoved',\r\n 'amenityReservationAdded',\r\n 'amenityReservationCancelled'\r\n ].includes(mType)\r\n ) {\r\n this.refresh()\r\n }\r\n })\r\n}\r\n","export const props = {\r\n /*\r\n\t\troute path for testing purposes\r\n\t*/\r\n _testAmenityID: {\r\n type: Number,\r\n default: undefined\r\n }\r\n}\r\n","export const watch = {\r\n showing() {\r\n this.show()\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5b95a7b4&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.styles_)},[_vm._v(_vm._s(_vm.text))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Status.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Status.vue?vue&type=template&id=caaf07cc&\"\nimport script from \"./Status.vue?vue&type=script&lang=js&\"\nexport * from \"./Status.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n"],"sourceRoot":""}